short类型的二维数组如何从主机端传给设备端

short类型的二维数组如何从主机端传给设备端

cudamemcopy?

是用的cudamemcpy这个函数,一直看书上讲的GPU比较适合计算单精度浮点数,书上给的例子传输的数据基本上都是单精度的,我自己写了一个结构体,struct Dicominfo
{
int row;
int columns;
double pixel_spacing[2];
double image_position[3];
doubleimage_orientation[6];
}也不是很大,但是需要在设备端访问到,所以就用cudamemcpy传过去,担心传输过去的数据最后都是32位的,两个int就被合并了

数据拷贝是拷贝N个字节的数据,无视数据类型。

谢谢,明白你的意思了,不知道你有没有c++项目里面使用过cuda呀?能否指教一下

肯定有使用过啊。
写好主机端c++代码,需要的时候调用kernal 计算。
就是CUDA程序了

我现在也是自己写了一个c++的项目,然后希望用cuda优化一下,kernel的函数也写好了。我的步骤是先创建了一个c++项目,然后有添加了一个cuda项目,然后编写了kernel函数,不知道应该做什么特别的设置,当然项目就跑不起来,请你指点一下,能不能给我讲一下项目设置过程,感激不尽了。。。

网上有CUDA环境设置过程。如果你用的vs2005的话,考虑网上找个帖子,按照步骤,全部设置好就可以了。
我以前就是这么搞的。
我现在用的vs2010. 在官网下好所有的开发环境包,例如tool,sdk,驱动等等。再下载官网的NVIDIA Parallel Nsight 2.0。这个东西安装之后可以直接在vs2010下新建cuda项目,而不需要额外的设置。
NVIDIA Parallel Nsight 2.0支持vs2010和vs2008,vs2005我不清楚

谢谢,我的环境都配置好了,c++项目是基于MFC开发的,是在学cuda以前就写好了,先在就像吧其中一部分计算的代码用cuda来做,看了一下网上一些解释说,可以将cuda的那部分代码先编译成动态链接库,都不是很详细,不知道是不是只有这一个方法,你是怎么做的呢?是直接创建一个cuda项目吗?

顺便补充一下,我用的是vs2010版的

调用kernal的文件,需要是。cu文件,编译的时候貌似是nvcc编译,代替vs的。
所以你试试将需要用到kernal的文件改成。cu后缀。
cuda运行的头文件加好。编译通过,基本就没问题了。
顺便说下,我没用过MFC + cuda。我写cuda都是底层的算法,其他不管:)

谢谢,我打算用动态链接库试试,奋斗当中。。。

先编译再链接就可以了,改一下makefiel即可

谢谢大家啦,根据大家的方法解决了问题,现在编译通过啦,在调试当中