【发布时间】:2013-02-13 17:13:32
【问题描述】:
我正在寻找一个 C++ 固定大小的矩阵库,它将以与 boost::numeric::ublas 相同的方式实现向量和矩阵的最常见操作,但要使用 在 CUDA 内核(因此固定大小仅使用本地内存而不使用全局内存访问)。
我找到了几个基于主机的矩阵库:boost::numeric::ublas、Eigen、blitz,但它们没有我可以在内核上与 CUDA 一起使用的固定大小的矩阵。 Eigen 有 Matrix3f 和相应的东西,这是 我正在寻找的,但它无法通过 nvcc 编译(尽管似乎有一些在这个方向上取得进展,请参阅here)。
编辑:我在 Linux 上做所有这些事情,因此希望可能有一些跨平台的东西......
【问题讨论】:
-
CUBLAS ? developer.nvidia.com/cublas
-
我不太熟悉你的问题,但我知道(我的知识来自第一手资料,因为我在 ArrayFire 工作)很多 Eigen 用户使用 ArrayFire 进行 GPU 计算,因为功能上有很多重叠。比较 Eigen 和 ArrayFire 的基准在此处:accelereyes.com/products/benchmarks_arrayfire Cheers!
-
@accelereyes:目标是在 CUDA 内核中使用线性代数,据我了解,ArrayFire 是通过 GPU 为 CPU 计算线性代数。我的目标不是那个。它是由 GPU 为 GPU 设计的(因此不使用任何并行性进行线性代数运算)。
-
@SteveTownsend:似乎 CUBLAS 5 可能有一些可以在设备上运行的新东西,但我还没有发现任何有趣的东西(而且我现在正在使用 CUDA 4)。
-
@AlexandreKaspar 您所要求的效率不会很高。任何可能开始工作的库只有在它是单线程的情况下才能工作,然后每个线程自己完成所有操作。
标签: c++ matrix cuda cross-platform linear-algebra