【问题标题】:C++ library for fixed-size matrices and vectors用于固定大小矩阵和向量的 C++ 库
【发布时间】:2013-02-13 17:13:32
【问题描述】:

我正在寻找一个 C++ 固定大小的矩阵库,它将以与 boost::numeric::ublas 相同的方式实现向量和矩阵的最常见操作,但要使用 在 CUDA 内核(因此固定大小仅使用本地内存而不使用全局内存访问)。

我找到了几个基于主机的矩阵库:boost::numeric::ublasEigenblitz,但它们没有我可以在内核上与 CUDA 一起使用的固定大小的矩阵。 EigenMatrix3f 和相应的东西,这是 我正在寻找的,但它无法通过 nvcc 编译(尽管似乎有一些在这个方向上取得进展,请参阅here)。

编辑:我在 Linux 上做所有这些事情,因此希望可能有一些跨平台的东西......

【问题讨论】:

  • 我不太熟悉你的问题,但我知道(我的知识来自第一手资料,因为我在 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


【解决方案1】:

如果您正在寻找一个已被证明运行良好的流行 C++ 数学库,您可以尝试使用 glm 来满足您的目的。它以 GLSL 为模型,这意味着它的数据以列优先顺序存储,这对所有面向着色器/gpu 的设计都很友好。 GLM 是一个仅包含标头的库,据称对标准非常友好,因此它可能会为您正确编译。

【讨论】:

  • 非常感谢,这真是一个很棒的图书馆!它需要更多的广告。我以前在任何地方都没有见过它,看起来它很好地支持了 CUDA。我会试试的。
【解决方案2】:

与 DirectX SDK 一起分发的 XNA Math 怎么样?它包含向量和矩阵的特殊类以及对它们进行操作的大量特殊函数。

  • XMVECTOR
  • XMMATRIX
  • XMVectorMethodName
  • XMMatrixMethodName

【讨论】:

  • 那会很棒,但我的项目要在 Linux 上运行,所以没有 DirectX。 (我已在帖子中添加了相关说明,抱歉没有说明跨平台要求)
猜你喜欢
  • 2015-05-07
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 2016-06-03
  • 2013-11-12
  • 2021-10-25
  • 1970-01-01
  • 2015-03-08
相关资源
最近更新 更多