用户
 找回密码
 立即注册
十四王爷 该用户已被删除
发表于 2016-7-14 15:07:19
63890
本帖最后由 十四王爷 于 2016-7-15 14:30 编辑

(1)关于存储位置和访问性能:
前者也叫managedmemory, 是一种在逻辑上可以同时被GPUCPU使用的缓冲区。具体位置在哪里,由runtime进行自动或者手工的安排和迁移。
(例如,某时刻可以是内存,当kernel要用的时候,自动传给GPU,并可能在GPU端被缓冲;而kernel结束后,当CPU这边访问全部或者部分数据的时候, 然后CUDA自动为你从显存那边自动全部或者部分传过来--例如以一定大小的粒度)zero copy memory则是就是内存,是传统上长期被支持的,能被显卡直接当成globalmemory使用的一段缓冲区。(实际上,这是两种经典的globalmemory之一,一种是显存,一种是内存映射的)。因为前者存在自动迁移安排,和不固定的存储位置(以及,在多卡间使用时候可能自动触发的P2PAccess),所以往往它的访问性能要比后者好。
2)关于适用性:
在32-bit和UVA无效的情况下,zero-copymemory依然可以使用,直接获取一次devicepointer, 即可。此时依然具有能直接访问的能力,但需要维持两个不同的指针。而此时unifiedmemory将不能使用。64-bitUVA有效的情况下,两者均可以使用,但unifiedmemory具有额外的更简洁的使用形式(见下面3段),和可能的更高的性能(见上面1段)。
3)关于使用方便性:
unified memory具有__managed__书写形式的扩展,用起来非常方便,可以直接在语言(CUDAC)中集成,对于小数据(例如单个变量,或者小规模的数组)使用起来简洁明了。同时它还具有和传统的zerocopy类似的通过cudaMallocManaged()方式的进行缓冲区分配。zero-copymemory只能通过缓冲区分配(cudaHostAlloc/MallocHost/Register之类的), 部分情况使用起来不方便。综合存储位置、性能、适用性和使用方便性,用户可以将unifiedmemory看成zerocopy memory的威力加强版(更多细节还有,这里就不一一详述了)。

使用道具 举报 回复
发新帖
您需要登录后才可以回帖 登录 | 立即注册