相关疑难解决方法(0)

Julia只占我CPU的20-30%.我该怎么办?

我正在运行一个在Julia中进行数字ODE集成的程序.我正在运行Windows 10(64位),英特尔酷睿i7-4710MQ @ 2.50Ghz(8个逻辑处理器).

我注意到当我的代码在julia上运行时,只有最多30%的CPU在使用中.进入parallelazation文档,我开始使用Julia: C:\Users\*****\AppData\Local\Julia-0.4.5\bin\julia.exe -p 8并期望看到改进.然而,我没有看到它们.

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

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

在这段代码中,我使用了一些额外的包: using ODE; using PyPlot; using JLD.

我使用Windows"任务管理器"测量CPU使用率.

parallel-processing optimization julia

4
推荐指数
1
解决办法
762
查看次数

等待在Julia的远程处理器上完成任务

在模拟分布式推理的并行应用程序中,我希望有一个"初始化步骤",其中所有"从属"从"主"接收一些初始信息然后开始他们的任务.

目前我有一个基于该sendTo函数的工作实现(这里的代码在堆栈溢出时被发现),但我不认为它保证了worker在收到初始对象之前不会启动它的任务.

这是一个粗糙的MWE

function sendTo(p::Int; args...)
    for (nm, val) in args
        @spawnat(p, eval(Main, Expr(:(=), nm, val)))
    end
end

a = 5

addprocs(4)

[sendTo(worker,a=a+randn()) for worker in workers()]

@everywhere begin
    println(a)
end
Run Code Online (Sandbox Code Playgroud)

上面的"工作",但我如何确定@everywhere在工作人员收到定义之前,块中的命令没有执行a

Rmk:对于我正在使用的上下文,我想保留两个不同的块,一个用于传播数据,另一个用于处理数据.

其他rmk:道歉,如果这是微不足道的,我对处理并行性很新(对Julia也很新)

parallel-processing julia

3
推荐指数
1
解决办法
691
查看次数

标签 统计

julia ×2

parallel-processing ×2

optimization ×1