opencl矩阵库

eud*_*xos 7 linear-algebra opencl

我想使用OpenCL将物理模拟算法移植到GPU以获得性能; 我没有使用OpenCL的经验,我正在四处寻找.计算主要是小密集矩阵(3x3)和矢量积,交叉积等.

  1. 这些基本操作是否有一些"标准"/推荐库?我当然不想自己编码矩阵乘法和反演(不是时间,而且它会是无效的)

  2. 由于OpenCL没有类,运算符重载等,我是否必须编写mmul(a,mtrans(b))而不是a*b.transpose()例如?

  3. 是否有一些(计划的)OpenCL(或预处理器)的扩展/演变,以使符号更像数学?我有回到四十五年的印象.(我知道有CUDA,但它受供应商约束)

tal*_*ies 6

回答你的问题:

  1. 不是我知道的
  2. 是的,OpenCL严格限于C99语法,因此没有类,没有运算符重载,并且严格按程序调用您想要的各种操作.OpenCL支持对其本机矢量类型进行元素操作,但没有比这更复杂的操作.矩阵乘法,行列式,转置等都必须自己实现.
  3. 我不知道这一点.[另外,在这种情况下,我不会嘲笑Fortran,F90及更高版本具有内在的矩阵和向量运算,这使得您要求的操作比C99或C++更容易编写].


Fel*_*xCQ 5

如果您知道您只能使用 3 维对象,那么您可以考虑使用 double3 类型(如果您的 GPU 不支持双精度,则使用 float3 类型)。

到目前为止,只支持向量,因此您必须自己对矩阵乘法或求逆的任何使用进行一些编码。但是,您可能对以下内置几何函数感兴趣。特别地,定义了积和积。

您可能还想知道矩阵的期货实现有保留的数据类型:参见例如 double n x m。在您的情况下,如果将来可用,您将能够为您的矩阵使用 double3x3 类型。