我想使用OpenCL将物理模拟算法移植到GPU以获得性能;我没有使用OpenCL的经验,我正在环顾四周。计算主要是小密集矩阵(3x3)和矢量积,交叉积等等。
这些基本操作是否有一些“标准”/推荐库?我当然不想自己编码矩阵乘法和反演(不是时间,而且它会是无效的)
由于OpenCL没有类,运算符重载等,我是否必须编写mmul(a,mtrans(b))
而不是a*b.transpose()
?
是否有一些(计划的)OpenCL(或预处理器)的扩展/演变,以使符号更像数学?我有回到四十五年的印象。 (我知道有CUDA,但它是受供应商约束的)
答案 0 :(得分:5)
回答你的问题:
答案 1 :(得分:4)
如果您知道自己只限于三维对象,那么您可以考虑使用double3类型(如果您的gpu不支持双精度,则使用float3)。
到目前为止,只支持向量,所以你必须自己做一些关于矩阵乘法或反演的使用的编码。但是,您可能对以下内置geometric functions感兴趣。特别是,dot产品和cross产品已定义。
您可能也有兴趣知道矩阵的期货实施有reserved data types:例如参见double n x m 。在您的情况下,如果将来可用,您将能够为您的矩阵使用double3x3类型。