【问题标题】:Calling BLAS routines inside OpenCL kernels在 OpenCL 内核中调用 BLAS 例程
【发布时间】:2013-09-12 17:11:54
【问题描述】:

目前我正在使用 OpenCL 做一些图像处理算法。基本上我的算法需要为每个像素求解一个线性方程组。每个系统都独立于其他系统,因此并行实现是很自然的。

我看过几个 BLAS 包,例如 ViennaCL 和 AMD APPML,但似乎它们都有相同的使用模式(主机调用 BLAS 子例程以在 CL 设备上执行)。

我需要一个可以在 OpenCL 内核中调用的 BLAS 库,这样我就可以并行求解许多线性系统。

我在 AMD 论坛上发现了类似的问题。

谢谢

【问题讨论】:

  • 好问题,如果 BLAS 库具有快速路径 OpenCL 访问权限,那将很容易。但这不太可能。

标签: image-processing opencl blas


【解决方案1】:

这是不可能的。 clBLAS 例程进行一系列内核启动,一些“解决”例程内核启动非常复杂。 clBLAS 例程将 cl_mem 和 commandQueues 作为参数。因此,如果您的缓冲区已经在设备上,clBLAS 将直接对其进行操作。它不接受主机缓冲区或管理主机->设备传输

如果您想查看生成和启动的内核,请取消注释此行 https://github.com/clMathLibraries/clBLAS/blob/master/src/library/blas/generic/common.c#L461 并构建 clBLAS。它将转储所有被调用的内核

【讨论】:

  • 感谢@krishnaraj 的链接。不幸的是,我对 blas 例程的用例与 clBlas 不匹配。例如,我想求解 640x480 线性方程组(每个系统有 6 个变量),所以我想在 GPU 内存上构建每个线性系统并独立于其他系统求解。由于我没有找到任何可以完成这项工作的库,我开始编写自己的 blas 例程,作用于私有内核内存中分配的矩阵(它们的大小在运行时之前已知)。
  • 你的问题是不是类似于 TRSM publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/… trinagular matrix-matrix solve
  • 不是原始形式,但我认为可以通过 Cholesky 分解将其转换为三角形系统。为什么?
  • 刚刚询问您是否可以在您的案例中使用 blas 函数。看起来你的情况不同
猜你喜欢
  • 2011-12-06
  • 2011-09-20
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多