当kernel计算需要返回一个值的时候,该怎么做好,我一直是用一个大小为1的数组来做,感觉很别扭
比如向量内积,两个向量都已经放到global mem了,计算内积,并且两个向量都不能够被改变,后面的计算还需要它们
当kernel计算需要返回一个值的时候,该怎么做好,我一直是用一个大小为1的数组来做,感觉很别扭
比如向量内积,两个向量都已经放到global mem了,计算内积,并且两个向量都不能够被改变,后面的计算还需要它们
你可以直接用一个__device__变量试试,呵呵!
另外,你应当是指结果是向量的内积,但是“并且两个向量都不能够被改变,后面的计算还需要它们”有其它含义没?
[
我看到有的程序就是直接把结果写到原来global mem里向量的一个位置,然后拷回host
[
__device__变量拷回host,还是用cudaMemcpy?
向量内积也用不着一个变量啊,有个用来比向量小很多的规约空间,最后直接从这个规约空间的第一个值到一个标量就可以了,或者直接使用一个__device__变量,这样在其他内核使用时就不需要copy了
[
__device__变量可以直接在主机端访问么?
不可以,但是比如pcg之类的算法,可以不用拷回主机端
如果拷回主机端还是用cudaMemcpy?
用cudaMemcpyFromSymbol,如果我没记错的话