在没有OpenMP支持的情况下构建BLAS,ATLAS和LAPACK

时间:2016-10-26 09:43:45

标签: multithreading parallel-processing lapack blas atlas

我一直在使用一些预先构建的线性代数库,这些库使用OpenMP来并行执行它们。

现在我正在使用OpenMP进行项目并行化某些任务。所以我设置了环境变量OMP_NUM_THREADS。

一些线程使用BLAS和LAPACK线性代数例程。这些库也是并行的,并查看环境变量OMP_NUM_THREADS以查看它们必须使用的线程数。

对于我的项目的要求。我需要通过使用非并行BLAS和LAPACK实现来避免这种嵌套并行化。

什么是最好的图书馆,如何建立?

非常感谢你。

1 个答案:

答案 0 :(得分:2)

您可以使用OpenBLAS。该库包含一个版本的LAPACK例程,并且在线程方面非常灵活。

可以在compile time

定义线程数
$shell> make USE_THREAD=0

或使用明确的environment variable

export OPENBLAS_NUM_THREADS=4

或在运行时使用库API

void openblas_set_num_threads(int num_threads);