CUDA的SDK里的N-body例子疑问?

最近在看CUDA自带的SDK里面的N-body例子,很多地方看不明白,还请看过的各位大虾们,帮帮忙,在此先谢过了。

      一些细节上的我就不问了,我就问问算法问题吧。

       1.里面说用多个线程计算一个粒子,也就是说这几个线程要遍历其他所有粒子的信息,以n=1024,p=64,q=4举例,四个线程计算一个粒子所受的力,我的问题是这四个线程如何分布啊??在同一个block中?如此的话,在该block中必须存有所有粒子信息,这对于 sharedMemory的要求比较高吧??如果不在同一个block里面,又该如何安排呢??关键就是我在程序里面读不出来是怎样安排的。
一下一段代码照实头疼:
#define warp(x,m)(((x)<m)?(x):(x-m))
sharedPos[threadIdx.x+blockDim.x*threadIdx.y]=multithreadBodies?positions[WRAP(blockIdx.x+q*tile+threadIdx.y,gridDim.x)*p+threadIdx.x]:positions[WRAP(blockIdx.x+tile,gridDim.x)*p+threadIdx.x];
 
 其中multithreadBodies是a bool template parameter。
      还有个不情之请啊,这里面除了CUDA的类C语言,还有C++吧。我看不太懂,而且程序运行时的界面所要展示的信息我不是很明白,我想改一改,但是发现里面的初始数据,即原来所有例子的信息我不知道是在哪里设置的。。。。

确实比较烦各位,还请见谅。。。。。谢谢

源程序见下
http://cid-1933940153f2bb4d.skydrive.live.com/self.aspx/.Public/%e5%8e%9f.rar

你可能感兴趣的:(职场,CUDA,sdk,休闲,N-body)