Armadillo C++ linear algebra library documentation指出在C ++中将库开发为"ease of parallelisation via OpenMP present in modern C++ compilers"的原因之一,但Armadillo代码不使用OpenMP。如何获得与Armadillo并行化的好处?这是通过使用high-speed LAPACK and BLAS replacements之一来实现的吗?我的平台是Linux,Intel处理器,但我怀疑这个问题有一个通用的答案。
答案 0 :(得分:9)
好的,似乎通过使用高速LAPACK和BLAS替换确实实现了并行化。在Ubuntu 12.04上,我使用包管理器安装了OpenBLAS,并从源代码构建了Armadillo库。构建并运行examples
文件夹中的示例,我可以使用OPENBLAS_NUM_THREADS
环境变量控制核心数。
我创建了一个小项目openblas-benchmark来测量Armadillo在计算各种大小矩阵的矩阵乘积C = AxB时的性能提升,但到目前为止我只能在2核机器上进行测试。
性能图显示,对于大于512x512的矩阵,执行时间减少了近50%。请注意,两个轴都是对数的; y轴上的每个网格线表示执行时间加倍。