据我所知,答案是否定的。 OpenCL专为多核系统而设计。
但是,有没有办法在多台计算机上使用OpenCL(每台计算机都是多核系统)?如果没有,是否需要任何其他工具,框架?
我读了一些关于分布式计算,集群计算,网格计算的文章......但我找不到满意的答案
任何想法都将受到赞赏
谢谢:)
答案 0 :(得分:8)
为此目的有两个框架:VirtualCL和CLara。这两个软件包使您可以将远程计算机作为本地设备透明地工作。遗憾的是,VirtualCL仅作为预编译的二进制文件提供,没有源代码,CLara不再被开发。
答案 1 :(得分:4)
SnuCL使用MPI和OpenCL通过OpenCL API透明地使用集群。它还添加了一些OpenCL扩展来有效地处理内存对象。
它是开源的。见http://aces.snu.ac.kr/Center_for_Manycore_Programming/SnuCL.html 和http://tbex.twbbs.org/~tbex/pad/SunCL.pdf
答案 2 :(得分:3)
上面没有提到另外一个解决方案:dOpenCL。
“dOpenCL(分布式OpenCL)是一种用加速器编程分布式异构系统的新颖统一方法。它将分布式系统的节点透明地集成到一个OpenCL平台中。因此,dOpenCL允许用户运行未修改的现有OpenCL应用程序在异构的分布式环境中,它扩展了OpenCL编程模型,以处理分布式系统的各个节点。“
答案 3 :(得分:1)
我使用VirtualCL构建了一个GPU集群,其中3个AMD GPU作为计算节点,我的ubuntu intel桌面作为代理节点运行。我能够启动代理和计算节点。
答案 4 :(得分:1)
除了其他海报已经提到的各种选项之外,还有两个您可能感兴趣的开源项目:
ocland(处于测试阶段):提供服务器应用程序和ICD实现,客户端可以使用它们以透明的方式利用支持OpenCL的本地和远程设备。许可证是GPLv3。
COPRTHR SDK(目前版本1.6):此SDK为x86_64,ARM,Epiphany和Intel MIC提供开源(GPLv3)OpenCL实现,包括“计算层远程过程调用” “实施。这包括支持rpc(libclrpc
)和服务器应用程序(clrpcd
)的客户端OpenCL实现。该网站没有提及太多,但documentation包含有关此CLRPC实施的部分。