改编Nbody时碰到的问题

个人觉得Nbody是一个很完美的例子,所以希望对它有一个比较深的理解。但是由于个人能力问题,对整个程序的认识还只是停留在整体,到了各个小环节就感觉有点力不从心啊。。

这次是自己想改变一下这个,去掉动画显示,改为将数据存在本地文件中。。

遇到问题::
1.我也是利用随机数生成初试位置,初试速度先暂时设为零,温度为零,后续再根据物理学的方法加以互相的修正。但是这个时候有问题啊,在host分配内存的时候我用的是float

 float* h_pos=(float*)malloc(memSize);
 float* h_acc=(float*)malloc(memSize);
 float* h_vel=(float*)malloc(memSize);

kernel是integrateBodies<<< grid, threads,memSize >>>(d_pos, d_vel,dtimer);

但是在kernel里面接收的时候考虑一下用float4会比较好,这样就不匹配了啊??怎么办?在源程序中没找到解决办法。。

提示错误:错误 16 error: no suitable constructor exists to convert from “float *” to “float4”

2.我尝试着随意运行了一下,却出现这个
错误 11 error: identifier “pFlags” is undefined C:\CUDA\include\cuda.h 607

最最关键的就是,我没有包含这个文件啊??还有几个类似的错误也是这样,说文件有错误,但是这些文件我似乎没有用到啊????这是为什么啊??

  1. 一个C语言编程问题:我的实参是结构体数组,那么请问,形参怎么设定啊?就是调用的时候前面的那个类型,使用struct还是我要用的结构体数组名称,或者二者都要???

1.强制转换
2.你得看看那里使用了pflag
3.直接传递