据我所知,答案是否定的。OpenCL 专为多核系统而设计。
但是,有没有办法在多台计算机上使用 OpenCL(每台计算机都是一个多核系统)?如果没有,是否需要任何其他工具、框架……?
我读了一些关于分布式计算、集群计算、网格计算的文章……但我找不到满意的答案
任何想法将不胜感激
谢谢 :)
据我所知,答案是否定的。OpenCL 专为多核系统而设计。
但是,有没有办法在多台计算机上使用 OpenCL(每台计算机都是一个多核系统)?如果没有,是否需要任何其他工具、框架……?
我读了一些关于分布式计算、集群计算、网格计算的文章……但我找不到满意的答案
任何想法将不胜感激
谢谢 :)
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
还有一个上面没有提到的解决方案:dOpenCL。
“dOpenCL(分布式 OpenCL)是一种使用加速器对分布式异构系统进行编程的新颖、统一的方法。它将分布式系统的节点透明地集成到单个 OpenCL 平台中。因此,dOpenCL 允许用户在异构中运行未经修改的现有 OpenCL 应用程序分布式环境。此外,它扩展了 OpenCL 编程模型以处理分布式系统的各个节点。
我已经使用 VirtualCL 形成了一个 GPU 集群,其中 3 个 AMD GPU 作为计算节点,我的 ubuntu intel 桌面作为代理节点运行。我能够启动代理和计算节点。
除了其他海报已经提到的各种选项之外,这里还有两个您可能感兴趣的开源项目:
ocland(处于测试阶段):提供服务器应用程序和 ICD 实现,客户端可以使用它们以透明的方式利用支持 OpenCL 的本地和远程设备。许可证是 GPLv3。
Brown Deer Technnology 的COPRTHR SDK(当前版本 1.6):此 SDK 为 x86_64、ARM、Epiphany 和 Intel MIC 提供开源 (GPLv3) OpenCL 实施,包括“计算层远程过程调用”实施。这包括一个支持 rpc ( ) 的客户端 OpenCL 实现libclrpc
和一个服务器应用程序 ( clrpcd
)。该网站没有提及太多,但文档包含有关此 CLRPC 实现的部分。