Julia中线性回归的并行/多线程版本

问题描述

我使用Julia GLM包通过交互实现了回归模型:

Reg = lm(@formula(dep_var ~ var1&var2&var3),data,true)

满足此公式需要大量RAM(> 80 GB),但是我注意到计算是在一个内核上执行的,尽管我的操作系统(x86_64-pc-linux-gnu)有8个cpu内核。

是否可以使用多处理/并行方法实现线性回归?

我想,它还可以改善模型的运行时间。

解决方法

拟合回归模型基本上是在做很多矩阵运算。默认情况下,Julia使用的是BLAS,最简单的方法是尝试将其配置为多线程。这要求在多线程设置设置BLAS.set_num_threads()中运行Julia。

在开始执行Julia运行之前:

set JULIA_NUM_THREADS=4

或在Linux

export JULIA_NUM_THREADS=4

一旦Julia启动,请运行命令。

BLAS.set_num_threads(4)

您应该观察到线性回归模型的性能有所提高。