首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【QQ问题汇总】基于任务的并行与基于数据的并行有什么区别吗

【QQ问题汇总】基于任务的并行与基于数据的并行有什么区别吗

作者头像
GPUS Lady
发布2018-03-30 14:44:10
发布2018-03-30 14:44:10
1.8K0
举报
文章被收录于专栏:GPUS开发者GPUS开发者

问题1:基于任务的并行与基于数据的并行有什么区别吗?

答:有区别,前者往往是cpu上的当时,而后者往往是gpu上的。前者可以看成只有一个work-item的kernel实例。

最初OpenCL有两种工作模型的。包括任务并行的(clEnqueueTask),如上所述, 可以看成是(1,1,1)个work-item的一次kernel启动。但是从OpenCL2.0起,将此模型启用。因为基本上除了CPU外,常见的GPU并不能很有效的执行此模型下的kernel实例。在GPU上的常见做法依然建议使用数据并行的(一份kernel代码, N个work-item在同时执行它, 但对应不同的数据)。CUDA从来只建议使用数据并行的, 否则将十分低效。(因为如前所述, 相当于只有1个线程的kernel了, 对于CUDA来说)。

问题2:GPU点对点通信是什么意思?

答:CUDA的P2P Access和P2P Copy。(P2P = peer to peer)

一张显卡可以从同一个PCI-E Root Switch/Complex下的另外一张显卡身上,直接访问对方的显存, 或者直接的将对方的显存里面的东西复制到自己的显存里。数据只走PCI-E, 而无需经过内存二次倒手。这样可以提高性能。但是NV的P2P Copy总是开放的, 但P2P Access需要买专业卡。从函数实现上,例如cudaMemcpyPeer*()以及 cudaMemcpy*()。后者需要使用cudaMemcpyDefault+UVA,才能实现跨卡传输。无UVA请老老实实的使用cudaMemcpyPeer*()。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档