用户
 找回密码
 立即注册
grasshoper97 该用户已被删除
发表于 2013-11-10 15:04:06
60303
内存和显存(全局内存)之间提供了好几个不同版本的数据传输函数,

共享内存和全局内存数据传输函数除了memcpy外,有没有相应的cuda函数?
使用道具 举报 回复
发表于 2013-11-10 15:18:31
楼主您好,
CUDA和OpenCL不同,没有提供特殊的global memory -> shared memory的传输函数。
(其实你不需要的)。

以及,请不要使用kernel中的memcpy, 强烈建议自己用指针读取了,然后再写入。

内置的memcpy的效率非常非常低。

感谢您的周末来访。
使用道具 举报 回复 支持 反对
发表于 2013-11-19 10:48:50
横扫千军 发表于 2013-11-10 15:18
楼主您好,
CUDA和OpenCL不同,没有提供特殊的global memory -> shared memory的传输函数。
(其实你不需要 ...

非常感谢指导。

是不是就只能一个变量一个变量用循环来读取再写入了呢?

memcpy的效率为什么还不如自己直接用指针读取呢?怎么说也是系统提供的函数,应该比手工读取效率高才对啊。
使用道具 举报 回复 支持 反对
发表于 2013-11-19 12:06:46
grasshoper97 发表于 2013-11-19 10:48
非常感谢指导。

是不是就只能一个变量一个变量用循环来读取再写入了呢?

LZ您好:

1:您可以在kernel中使用一组线程来完成对shared memory的初始化写入赋值。

2:建议您在kernel内使用一组线程来完成数据复制,而不要使用memcpy()。后者的实现并不是很高效,而只是作为一种方便使用(而不是以效能为目的)的辅助手段存在的。

大致如此,祝您编码顺利~
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册