我正在考虑将Clyther用于高性能任务。仅使用 python 编写 OpenCL 内核令人兴奋,但我想知道性能差距。
克莱瑟擅长什么任务?不擅长?Clyther 生成的内核好不好?
是否有可能找到一些基准?
正如文档所述,CLyther 的主要入口点是它的clyther.task
和clyther.kernel
装饰器——一旦一个函数被其中之一装饰,该函数将在调用时编译为 OpenCL。
CLyther 是 Python 语言子集的编译器。它将您的 Python 子集代码编译到 OpenCL 中,因此内核的实际运行时间不会(或不应该)在 OpenCL 接口之间有很大差异。CLyther 的实际开销(与 Python 的所有接口一样)来自调用 OpenCL 函数,或在 CLyther/Python 和 OpenCL 之间移动数据。
文档中提供了显示 CLyther性能的基准。源 tarball 包含基准测试程序的 C++ 和 FORTRAN 版本,一个拉普拉斯方程求解器,因此您可以使用它们自己重现基准测试结果。
就个人而言,我相信您可以在大多数需要 OpenCL 计算的问题上有效地使用 CLyther。