Julia的blas库有一个函数set_num_threads()
,用于设置BLAS操作的线程。
我如何获取默认使用或当前使用的线程数?
答案 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)
{% if app.request.attributes.get == 'my_route' %}
//Do something
{% endif %}
中的 Module BLAS
是blas库的包装器,可以是Base
,openblas
等。
默认情况下,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()