Optimization Julia只用了我20-30%的CPU。我该怎么办?

Optimization Julia只用了我20-30%的CPU。我该怎么办?,optimization,parallel-processing,julia,Optimization,Parallel Processing,Julia,我正在运行一个在Julia中进行数值ODE积分的程序。我运行的是Windows 10(64位),采用Intel Core i7-4710MQ@2.50Ghz(8个逻辑处理器) 我注意到,当我的代码在julia上运行时,最多只有30%的CPU在使用。进入parallelazation文档,我开始使用Julia: C:\Users\*****\AppData\Local\Julia-0.4.5\bin\Julia.exe-p8,预计会有所改进。然而,我没有看到他们 因此,我的问题如下: 为了更有效地

我正在运行一个在Julia中进行数值ODE积分的程序。我运行的是Windows 10(64位),采用Intel Core i7-4710MQ@2.50Ghz(8个逻辑处理器)

我注意到,当我的代码在julia上运行时,最多只有30%的CPU在使用。进入parallelazation文档,我开始使用Julia:
C:\Users\*****\AppData\Local\Julia-0.4.5\bin\Julia.exe-p8
,预计会有所改进。然而,我没有看到他们

因此,我的问题如下: 为了更有效地使用CPU,是否有一种特殊的方式来编写代码?这可能是我的操作系统(windows 10)造成的限制吗

我使用以下命令在julia控制台中提交代码:
包括(“C:\\Users\\**\\AppData\\Local\\Julia-0.4.5\\13.Fast Filesaving Format.jl”)

在这段代码中,我使用了以下附加包:
使用ODE;使用PyPlot;使用JLD


我使用windows的“任务管理器”测量CPU使用情况。
-p8
选项启动8个工作进程,并在BLAS和FFTW等库中禁用多线程,以便工作人员不会过度订阅系统上的物理线程,因为这会降低平衡良好的分布式工作负载的性能。如果您想提高
-p8
的速度,那么您需要在这些工作人员之间分配工作,例如,让他们各自进行独立计算,或者让他们通过
SharedArrays
协作进行计算。你不能只添加工人而不更改程序。如果您使用BLAS(执行大量矩阵乘法)或FFTW(执行大量傅立叶变换),那么如果您不使用
-p
标志,您将自动从这些库中获得多线程。否则,Julia中还没有(非实验性)用户级线程。有实验性的线程支持,1.0版将支持线程,但我不建议这样做,除非您是专家。

您需要手动调整代码以进行并行计算。这里是并行计算的参考。我不是专家,但您通常可以使用
@parallel
宏使满载计算的循环并行,并且在并行化中有
pmap
用于映射的均衡。是的,我的示例只是徒劳地尝试看看是否有提高cpu使用率的“捷径”。我将不得不在将来的某个时候研究并行化我的代码。谢谢你。你也可以看看这两篇SO文章,还有一些关于Juliaawow中并行性的额外指导,它们实际上非常有用!非常感谢。啊,再次感谢您的良好回复。我确实使用了一些FFT,因此我不应该使用
-p
标志。但是,我的问题仍然是:是否有可能“提高”CPU使用率?或者这与处理器的结构方式无关?p、 s:我当然不是专家,所以如果让“更多使用CPU”成为可能的过程太复杂,那么我就不做了。再次感谢您@乔治:这是个好答案。如果我能加上一个概括性的话,因为我不认识朱莉娅,并行性有两个不同的用途。一个是性能,如果你能想出如何构造你的程序,使它能同时利用多个CPU。另一个与性能无关。如果您的程序必须处理来自多个不同流的独立I/O,那么为每个流指定一个单独的线程可以简化工作。不管它是用多个CPU还是一个CPU来实现这一点,都完全不重要。好的,很好。我认为你的答案非常令人满意:我必须学习如何以一种方式构造一个程序,使它使用“并行计算”。谢谢你们,我将从Julia网站上的文档开始。