我有一个问题:快速线性系统解决(我有很多这样的系统)。我将使用GPU和OpenCL来解决它。
我喜欢Ruby或Python等动态语言,而且我不习惯使用像C这样的低级语言。
所以我同时有两个目标:
答案 0 :(得分:4)
我的观点是,尝试将动态语言强加于OpenCL并不值得付出努力。你将失去大部分你喜欢的Python,并且最终可能不会为你的努力节省很多时间。
但我只是说在Python中编写OpenCL内核。还有主机应用程序,它准备和提交内核。如果您喜欢Python,我建议使用PyOpenCL等包装器在纯Python中编写主机应用程序来访问OpenCL API。然后,在纯OpenCL中编写内核,让Python应用程序按原样提交。我相信这会从Python中获得你想要的大部分内容,而性能几乎没有任何成本。
答案 1 :(得分:1)
使用OpenCL进行编程最困难的部分是并行化算法 - 这意味着编写内核。有可能,您将花费大部分时间来调整和理解您的OpenCL C代码,AFAIK是您编写内核的唯一选择。
在这种情况下,我说要去实现纯C / OpenCL实现。一旦启动并运行“样板”OpenCL API部分,您就不太可能需要对其进行大量更改。如果有的话,您将使用传递给clEnqueueNDRangeKernel
的工作组大小等内容。
如果你是CL的新手,我说保持简单。为问题添加另一个软件层 - 尤其是一个定义为线性求解器的问题 - 只会使您的工作变得复杂。
编辑:
我应该补充一点,当您使用标准的OpenCL API时,您可以扩大在线帮助/支持的潜力。如果您选择使用其中一个python绑定,则可能会限制您对这些社区中的人员的潜在支持。