C++线性代数库文档说明了在C++中将库开发为“通过OpenMP实现并行化在现代C++编译器中的易用性”的原因之一,但是Armadillo代码不使用OpenMP。我如何获得与Armadillo并行的好处?这是通过使用高速LAPACK和BLAS替换之一实现的吗?我的平台是Linux,英特尔处理器,但我怀疑这个问题有一个通用的答案。
发布于 2014-03-22 23:09:33
好的,看来并行化实际上是通过使用高速LAPACK和BLAS替换来实现的。在Ubuntu12.04上,我使用包管理器安装了OpenBLAS,并从源代码构建了Armadillo库。构建并运行examples文件夹中的示例,我可以使用OPENBLAS_NUM_THREADS环境变量来控制核心的数量。
我创建了一个小项目开放式基准,它测量Armadillo在计算各种大小矩阵的矩阵产品C=AxB时的性能提高,但到目前为止,我只能在2核机器上测试它。
性能图显示,大于512x512的矩阵的执行时间减少了近50%。请注意,这两个轴都是对数的;y轴上的每条网格线都表示执行时间加倍。

https://stackoverflow.com/questions/22389117
复制相似问题