我已经编写了一个用于求解拉普拉斯方程的串行代码,但是当我尝试在 Julia 中并行编写它时,它比串行代码需要更多的时间和内存。我写了一个简单的例子。我怎样才能并行这段代码?
有一个域t1。
t2将被计算,然后t1 = t2
@everywhere function left!(t1,t2,n,l_type,b_left,dx=1.0,k=50.0)
if l_type==1
for i=1:n
t2[i,1]=(b_left*dx/k)+t1[i,2];
t1[i,1]=t2[i,1];
end
else
for i=1:n
t1[i,1]=b_left;
end
end
return t1 end
# parallel left does not work.
@everywhere function pleft!(t1,t2,n,l_type,b_left,dx=1.0,k=50.0)
if l_type==1
@parallel for i=1:n
t2[i,1]=(b_left*dx/k)+t1[i,2];
t1[i,1]=t2[i,1];
end
else
@parallel for i=1:n
t1[i,1]=b_left;
end
end
return t1
end
n = 10;
t1 = SharedArray(Float64,(n,n));
t2=t1;
typ = 0;
value = 10;
dx = 1;
k=50;
@time t3 = pleft!(t1,t2,n,typ,value,dx,k)
@time t2 …Run Code Online (Sandbox Code Playgroud) 我们最近决定在我们的集群系统上提供 Julia 语言。集群系统无法连接到互联网。有什么方法可以下载所有 Julia 包,并让我们的不同用户可以离线安装和使用它们?
我们拥有的另一个选择是一个可以暂时连接到互联网的系统,但它始终连接到主集群系统。有没有办法使用这个系统作为 Julia 包的镜像?
我们想使用“Julia 1.0.1”。
我们的集群操作系统是:“CentOS 5.5
注意:我之前在这里看到过这个问题 ,但它是针对 Julia 0.6 和一个将手动复制的包。我希望该用户使用该Pkg.add <pkgName>命令而不是 Internet,包管理器从我们的离线系统中获取包。
感谢您的帮助和时间。
使用编译器指令
#if A
some instructions
#elseif B
some instructions
#end
Run Code Online (Sandbox Code Playgroud)
在C\C++语言中,可以告诉编译器在某些条件下忽略代码的某些部分.我很想知道Julia语言中是否有相同的功能.