我正在编译一个 blas 以与 scalapack 一起使用。一些blas,比如openblas,自然是多线程的,但是scalapack使用mpi,所以可能需要一个单线程的blas?那么我的问题是:
- scalapack 需要多线程 blas 吗?单线程 blas?或者它在任何一个上都可以正常工作,因为例如,它在运行时以某种方式强制线程数为 1?
- 如果scalapack在运行时强制线程数为1,它是如何做到的?这适用于openblas吗?似乎 openblas 中的 api 是
openblas_set_num_threads(1),这听起来不像是一个特别便携的命令,而且听起来这样的配置是 blas 特定的?
编辑:我想我可以只使用多线程 OpenBLAS,然后打电话给openblas_set_num_threads(1)自己?