GPU从CPU或CPU写入GPU读取?

Nik*_*ike 7 cuda gpu opencl gpu-programming

我是并行编程的初学者.我有一个可能看起来很愚蠢的查询但是当我用Google搜索时我没有得到明确的答案.

在GPU计算中,存在一种设备,即GPU和主机,即CPU.我写了一个简单的hello world程序,它将在gpu上分配一些内存,将两个参数(比如src []和dest [])传递给内核,复制src字符串即Hello world到dest字符串并从gpu获取dest字符串主人.

是GPU读取字符串"src"还是CPU写入GPU?此外,当我们从GPU返回字符串时,GPU是写入CPU还是从GPU读取CPU?

在来回传输数据时,可能有四种可能性:CPU到GPU - CPU写入GPU - GPU读取形成CPU 2. GPU到CPU - GPU写入CPU - CPU从GPU读取

有人可以解释哪些是可能的,哪些不是?

Pat*_*k87 7

在早期版本的CUDA和相应的硬件模型中,GPU更严格地说是CPU拥有的协处理器; CPU将信息写入GPU,并在GPU准备好后读回信息.在较低级别,这意味着所有四件事情都发生了:CPU将数据写入PCIe,GPU从PCIe读取数据,然后GPU将数据写入PCIe,CPU读回结果.但是交易是由CPU发起的.

最近(CUDA 3?4?甚至可能从2开始?),其中一些细节在应用程序级别隐藏,因此,有效地,GPU代码可以导致传输的启动方式与CPU的启动方式大致相同.考虑统一虚拟寻址,程序员可以访问CPU和GPU内存的统一虚拟地址空间.当GPU在CPU空间中请求内存时,必须从CPU启动传输,实际上是从CPU读取.还保留了从CPU端将数据放入GPU的能力.基本上,所有方式现在都可以在顶级(在低级别,它在很大程度上与往常一样的协议:读取和写入PCIe总线,但现在,GPU也可以启动事务).