Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading Julia中线性回归的并行/多线程版本_Multithreading_Parallel Processing_Julia_Regression_Distributed Computing - Fatal编程技术网

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

Multithreading Julia中线性回归的并行/多线程版本,multithreading,parallel-processing,julia,regression,distributed-computing,Multithreading,Parallel Processing,Julia,Regression,Distributed Computing,我使用JuliaGLMpackage实现了具有交互的回归模型: Reg=lm(@formula(dep_var~var1&var2&var3),数据,真) 符合这个公式需要大量的RAM(>80GB),但我注意到计算是在一个内核上执行的,尽管我的操作系统(x86_64-pc-linux-gnu)有8个cpu内核 是否可以使用多处理/并行方法实现线性回归? 我想,它还可以提高模型的运行时间。拟合回归模型基本上是做大量的矩阵运算。默认情况下,Julia正在使用BLAS,您可以做的最简单的事情是尝试将其

我使用Julia
GLM
package实现了具有交互的回归模型:

Reg=lm(@formula(dep_var~var1&var2&var3),数据,真)

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

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


我想,它还可以提高模型的运行时间。

拟合回归模型基本上是做大量的矩阵运算。默认情况下,Julia正在使用BLAS,您可以做的最简单的事情是尝试将其配置为多线程。这需要在多线程设置中运行Julia,并设置
BLAS.set_num_threads()
配置

开始Julia run之前:

set JULIA_NUM_THREADS=4
或者在Linux上

export JULIA_NUM_THREADS=4
启动Julia后,运行命令

BLAS.set_num_threads(4)

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

非常感谢您的回答!我尝试了你的建议,但不幸的是,
BLAS.set\u num\u threads(4)
对我不起作用-仍然只使用了一个cpu内核,zabbix监控显示内存使用量增加。而且,模型运行时间增加了大约一分钟。有趣的是,我从来没有在我的机器上这样做过。Julia执行BLAS操作的代码在默认情况下始终是多线程的…在我的机器上,Julia执行的BLAS操作在默认情况下始终是多线程的。也就是说,我从来没有改变过任何环境变量。是否可能是您的计算中的其他原因导致了此问题?你的内存在任何时候都是最大的吗?您的机器开始使用交换吗?也许可以尝试一个更小的矩阵运算,比如,反转一个
5000x5000
矩阵,看看你的机器是否只使用一个内核。