opencl矩阵库

时间:2011-09-05 10:34:34

标签: opencl linear-algebra

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

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

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

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

2 个答案:

答案 0 :(得分:5)

回答你的问题:

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

答案 1 :(得分:4)

如果您知道自己只限于三维对象,那么您可以考虑使用double3类型(如果您的gpu不支持双精度,则使用float3)。

到目前为止,只支持向量,所以你必须自己做一些关于矩阵乘法或反演的使用的编码。但是,您可能对以下内置geometric functions感兴趣。特别是,dot产品和cross产品已定义。

您可能也有兴趣知道矩阵的期货实施有reserved data types:例如参见double n x m 。在您的情况下,如果将来可用,您将能够为您的矩阵使用double3x3类型。