0

http://scicomp.stackexchange.com ,我问了这个关于 IDL 中并行矩阵算法的问题。答案建议使用多线程 LAPACK 实现,并建议一些技巧来让 IDL 使用特定的 LAPACK 库。我无法让它工作。

理想情况下,我希望现有的 LAPACK DLM 能够简单地使用多线程 LAPACK 库,感觉这应该是可能的,但我没有取得任何成功。或者,我想下一个最简单的步骤是创建一个新的 DLM 以在一些 C 代码中包装矩阵求逆调用,并确保该 DLM 指向所需的实现。不过,创建 DLM 的文档让我眼花缭乱,因此任何有关执行此操作的指示(如果需要)也将不胜感激。

4

1 回答 1

1

你的目标是什么平台?

在我的平台(Mac OS X,IDL 8.2.1)上查看idl_lapack.sowithnm似乎表明 LAPACK 例程直接在.so. LD_LIBRARY_PATH)。

$ nm idl_lapack.so
...
000000000023d5bb t _dgemm_
000000000023dfcb t _dgemv_
000000000009d9be t _dgeqp3_
000000000009e204 t _dgeqr2_
000000000009e41d t _dgeqrf_
000000000023e714 t _dger_
000000000009e9ad t _dgerfs_
000000000009f4ba t _dgerq2_
000000000009f6e1 t _dgerqf_

其他一些可能性...

我的个人库有一个目录src/dist_tools/bindings,其中包含为给定“简单”(即不使用 typedef)函数原型的库自动创建绑定的例程。LAPACK 将相当容易为其创建绑定(最困难的部分可能是构建您想要使用 ATLAS、PLAPACK、ScaLAPACK 等的包)。该库是免费使用的,如果您愿意,可以签订一份小型咨询合同。

下一版本的 GPULib 将包含使用 MAGMA 库的 LAPACK 的 GPU 实现。这实际上是一个高度并行的选项,但仅适用于 CUDA 显卡。如果除矩阵求逆之外的其他操作可以在 GPU 上完成以最小化内存传输,它也将工作得最好。这个选项需要花钱。

于 2013-01-11T00:12:31.263 回答