想问几个问题:
1.cpu能对device上的global memory的变量进行操作,请问具体是cpu直接对GPU的DRAM读写,还是其实先把GPU上的变量拷到内存上操作,操作完了再拷回去的?
2.请问 内存和显存的读写速度大概是多少?
3.GPU globalmemory上的数组a(10),想a(3)=a(6)会报错,为什么和怎么办?
非常感谢指点~
想问几个问题:
1.cpu能对device上的global memory的变量进行操作,请问具体是cpu直接对GPU的DRAM读写,还是其实先把GPU上的变量拷到内存上操作,操作完了再拷回去的?
2.请问 内存和显存的读写速度大概是多少?
3.GPU globalmemory上的数组a(10),想a(3)=a(6)会报错,为什么和怎么办?
非常感谢指点~
LZ您好:
1:CPU一般不能直接处理global memory上的变量,都是通过API函数copy的。以及还有一些特殊处理。以及,当前CPU不能直接读写独立GPU的显存DRAM上的内容,需要通过pci-e总线连接到GPU芯片中转。以及以后的硬件可能会实现统一的寻址,也就是同样的指针既能被CPU使用,也能被GPU使用,但是具体实现细节要具体分析。
2:这个无法回答,和具体的显卡和CPU有关。目前主流的CPU能达到10GB/S的水平,而高档GPU卡在100GB/S以上。请注意,这里给出的数据都是十分粗糙的典型值。
3:请给出您的代码。如果您的代码就是这么写的,那么请保证,a:在kernel或者__device__函数里面里面;b:正确地传入了数组/指针;c:使用""即半角方括号而不是全角圆括号来括住下标。
大致如此,请您参考。
祝您好运~
我补充一点。
N卡目前不支持在CPU上直接读写显卡的global memory的(AMD的卡支持,但是amd很难用)。