opencl中devices间可以数据传输吗

  • 2 replies
  • 2333 views
opencl中devices间可以数据传输吗
« 于: 一月 29, 2020, 08:16:18 pm »
cuda 有devices间通信的接口,opencl中好像没有对应的功能定义,比如多张amd gpu间是不是不能直接的D2D操作呢?只能通过D2H, 然后再H2D,通过host中转这种间接方式实现板卡间的数据通信,这样效率又会下降……
有没有达人研究过这方面的解决方案呢?多谢了

Re: opencl中devices间可以数据传输吗
« 回复 #1 于: 二月 02, 2020, 01:01:44 pm »
cuda 有devices间通信的接口,opencl中好像没有对应的功能定义,比如多张amd gpu间是不是不能直接的D2D操作呢?只能通过D2H, 然后再H2D,通过host中转这种间接方式实现板卡间的数据通信,这样效率又会下降……
有没有达人研究过这方面的解决方案呢?多谢了

多年前,当AMD还在和NV认真竞争,国内大力推广FirePro系列卡的时候,有过CL_AMD_BUS_ADDRESSABLE_MEMORY / DirectGMA技术,类似CUDA的P2P Copy.

其中前者是具体在OpenCL下的扩展, 允许两张AMD的卡,或者一张AMD的卡和一张其他设备,直接不经过内存传输内容。但是基本无太多资料。

这些年AMD在搞底层基于HSA的ROCm平台,和这个之上的OpenCL实现。其中AMD曾经出过宣传片,说支持ROCm上的Peer Copy组合,但是我们之前在多个宣称支持ROCm上的平台均作失败,因此仅提供可能途径。(不过人家是开源的,特别是ROCK kernel driver,你可以随意折腾, 如果有心得,欢迎反哺论坛)。

Re: opencl中devices间可以数据传输吗
« 回复 #2 于: 二月 03, 2020, 11:15:50 am »
多年前,当AMD还在和NV认真竞争,国内大力推广FirePro系列卡的时候,有过CL_AMD_BUS_ADDRESSABLE_MEMORY / DirectGMA技术,类似CUDA的P2P Copy.

其中前者是具体在OpenCL下的扩展, 允许两张AMD的卡,或者一张AMD的卡和一张其他设备,直接不经过内存传输内容。但是基本无太多资料。

这些年AMD在搞底层基于HSA的ROCm平台,和这个之上的OpenCL实现。其中AMD曾经出过宣传片,说支持ROCm上的Peer Copy组合,但是我们之前在多个宣称支持ROCm上的平台均作失败,因此仅提供可能途径。(不过人家是开源的,特别是ROCK kernel driver,你可以随意折腾, 如果有心得,欢迎反哺论坛)。

谢谢了