我有一个问题:快速线性系统求解(我有很多这样的系统)。我要用GPU和OpenCL来解决这个问题。
我喜欢像Ruby或Python这样的动态语言,我养成了使用像C这样的低级语言的习惯。
所以我有两个同时的目标:
对我来说最好的情况是:几乎用OpenCL C编译python代码,几乎没有浪费。
我找到了这样的解决方案:纯OpenCL C、PyOpenCL、克莱瑟。
我该从什么开始?
发布于 2011-11-15 22:13:05
我的观点是,试图将动态语言压缩到OpenCL中是不值得的。您将失去您喜欢Python的大部分内容,而且最终可能不会为您的工作节省太多时间。
但我只谈到用Python编写OpenCL内核。还有一个主机应用程序,它准备并提交内核。如果您喜欢Python,我建议用纯Python编写主机应用程序,并使用像PyOpenCL这样的包装器来访问OpenCL API。然后,用纯OpenCL编写内核,并让您的Python按原样提交它们。我相信这将从Python中得到您想要的大部分内容,而性能方面几乎不需要任何代价。
发布于 2011-11-15 22:21:39
用OpenCL编程最困难的部分是并行化算法--这意味着编写内核。很可能,您将花费大部分时间来调整和理解您的OpenCL C代码,而AFAIK是您编写内核的唯一选择。
在这种情况下,我认为应该使用纯C/ OpenCL实现。一旦启动并运行了“样板版”OpenCL API部分,您就不太可能更改其中的大部分内容。如果有的话,您将使用像传递给clEnqueueNDRangeKernel的工作组大小这样的东西。
如果你是CL的新手,我建议你保持简单。在问题中添加另一个软件层--特别是一个被定义为线性求解者的问题--只会使你的努力复杂化。
编辑:
我应该补充一点,当您使用标准的OpenCL API时,您扩展了在线帮助/支持的潜力。如果选择使用python绑定之一,则可能会限制对来自这些社区的人员的潜在支持。
https://stackoverflow.com/questions/8142575
复制相似问题