Reply to comment

Помогите пожалуйста!

Tagged:  

Решил попытаться ускорить одну свою программку при помощи CUDA, столкнулся с глюком. Процедура, приведенная ниже какбэ должна считать стоимость пути в графе:

  1. __global__ void gputest(int *x, float *y, int *z, float *c, float *d, float *p, int N)
  2.     {
  3.       int idx = blockIdx.x * blockDim.x + threadIdx.x;
  4.       int i,ths,next;
  5.       float t=0;  
  6.       if (idx<N)
  7.         {
  8.            ths=0;
  9.            for (i=1;i<=33;i++)
  10.              {
  11.                 next=x[idx*33+ths];//x - это замкнутые маршруты, которые состоят ровно из 33х шагов
  12.                 t=t+c[ths*33+next];//с - это стоимости переходов от одного узла графа к другому
  13.                 ths=next;
  14.              }
  15.           y[idx]=t;//y - это стоимости маршрутов
  16.        }
  17.   }

Такая же процедура на обычном CPU, вызываемая в цикле, прекрасно забивает массив y стоимостями, на GPU она забивает его значениями -431602080, причем, если сократить количество шагов цикла for до 20ти, то получаются в некоторых элементах правильные стоимости, в других значения -35659499650496332000, в третьих #QNAN0. Может кто-нибудь знает почему так происходит?
Мне 20 шагов мало, в реальной задаче их вообще сотни, а маршрутов тысячи. Помогите пожалуйста.

PS вверху в приведенном коде должен бы стоять знак меньше перед N, но в таком случае движок форума отсекает весь текст который после него (тоже своего рода глюк :))

Reply

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <i> <table> <td> <tr> <th>
  • Lines and paragraphs break automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. The supported tag styles are: <foo>, [foo].
  • Images can be added to this post.

More information about formatting options

Copyright © 2008-2011 Alex Tutubalin