你如何获得* Julia中BLAS操作的线程数?

时间:2016-05-28 16:07:44

标签: julia

Julia的blas库有一个函数set_num_threads(),用于设置BLAS操作的线程。

我如何获取默认使用或当前使用的线程数?

3 个答案:

答案 0 :(得分:11)

如果您将Julia链接到OpenBLAS,如果您使用来自julialang.org的Windows,Mac或通用Linux二进制文件,或者如果您从源代码构建并且未设置USE_SYSTEM_BLAS=1,则会出现这种情况。然后通过调用ccall((:openblas_get_num_threads64_, Base.libblas_name), Cint, ())获取OpenBLAS使用的数字线程。最终,我们可能会将其作为Julia函数提供。

答案 1 :(得分:2)

Julia {% if app.request.attributes.get == 'my_route' %} //Do something {% endif %} 中的

Module BLAS是blas库的包装器,可以是Baseopenblas等。

默认情况下,OpenBLAS对小矩阵使用一个线程,为大矩阵使用enviriment变量设置multi-thread

  

使用环境变量设置线程数。

     

示例:

     

export OPENBLAS_NUM_THREADS = 4   或

     

导出GOTO_NUM_THREADS = 4   或

     

导出OMP_NUM_THREADS = 4   优先事项是OPENBLAS_NUM_THREADS> GOTO_NUM_THREADS> OMP_NUM_THREADS。

     

如果使用USE_OPENMP = 1编译此lib,则应设置OMP_NUM_THREADS>环境变量。 OpenBLAS忽略OPENBLAS_NUM_THREADS和> GOTO_NUM_THREADS,USE_OPENMP = 1。

MKL可以自动调整不同大小矩阵的线程数。

<小时/> 您可以在Julia中使用全局const dict变量mkl来获取环境变量。但是,当您在运行时设置或将其设置为大于计算机中可用的核心时,您使用的线程数将有所不同。

如果您在ENV中使用Apple提供的BLAS,您可以通过vecLi获取正在使用的线程数,无论您是使用环境变量设置线程数还是在运行时设置它。

答案 2 :(得分:1)

从 Julia 1.6 开始,您可以使用 LinearAlgebra.BLAS.get_num_threads()。所以下面的代码可以解决问题:

using LinearAlgebra
BLAS.get_num_threads()