小编Est*_*ban的帖子

Julia并行计算在IPython Jupyter中

我正在Ipython中准备一个小小的演示文稿,我想展示在Julia中进行并行操作是多么容易.

它基本上是这里描述的蒙特卡罗Pi计算

问题是我无法在IPython(Jupyter)笔记本中并行工作,它只使用一个.

我开始朱莉娅: julia -p 4

如果我在REPL中定义函数并在那里运行它可以正常工作.

@everywhere function compute_pi(N::Int)
    """
    Compute pi with a Monte Carlo simulation of N darts thrown in [-1,1]^2
    Returns estimate of pi
    """
    n_landed_in_circle = 0  
    for i = 1:N
        x = rand() * 2 - 1  # uniformly distributed number on x-axis
        y = rand() * 2 - 1  # uniformly distributed number on y-axis

        r2 = x*x + y*y  # radius squared, in radial coordinates
        if r2 < 1.0 …
Run Code Online (Sandbox Code Playgroud)

parallel-processing julia ipython-notebook jupyter

8
推荐指数
1
解决办法
2416
查看次数

在Julia中为数学常数提供动力很慢

我很确定这必须是一个bug ...

好吧,基本上,当我将一个Math Constant类型传递给power(^)函数并多次迭代时......循环非常慢并且使用了大量的内存分配.这个例子是微不足道的,因为它不会产生任何结果,但我有真正的应用程序,我有这个问题.

function test1(N)
    for i = 1:N
        x = pi^4
    end
end

function test2(N)
    for i = 1:N
        x = pi*pi*pi*pi
    end
end

function test3(N)
    pif = float64(pi)
    for i = 1:N
        x = pif^4
    end
end
Run Code Online (Sandbox Code Playgroud)

这是用大N调用函数的结果:

@time test1(10000000)
@time test2(10000000)
@time test3(10000000)

elapsed time: 0.958278949 seconds (320000160 bytes allocated, 56.44% gc time)
elapsed time: 6.341e-6 seconds (80 bytes allocated)
elapsed time: 4.982e-6 seconds (80 bytes allocated)
Run Code Online (Sandbox Code Playgroud)

这是一个错误吗?或者它有合理的解释吗?在大循环中为pi提供动力的正确方法是什么?

谢谢.

constructor constants julia

6
推荐指数
1
解决办法
290
查看次数

对数组的求和比对Julia中的各个变量求和要慢

好的,我最近正在进行一系列测试.我有一个MC模拟,我有几个变量(20),将它们全部放在一维数组中是有意义的,因为它使几个更容易阅读.

但是我有一个问题,我需要在每次迭代中对变量求和,并且模拟需要大量的迭代,所以我遇到了这个问题(减少到7个变量):

function sumtest1(N)
    s=0.0
    a=1.0
    b=2.0
    c=3.0
    d=4.0
    e=5.0
    f=6.0
    g=7.0
    for i = 1:N
        s += (a+b+c+d+e+f+g)
    end
    return s
end

function sumtest2(N)
    s=0.0
    A=[1.0,2.0,3.0,4.0,5.0,6.0,7.0]
    for i = 1:N
        s += sum(A)
    end
    return s
end

@time sumtest1(1_000_000_000)
elapsed time: 0.998272756 seconds (96 bytes allocated)

@time sumtest1(1_000_000_000)
elapsed time: 7.522198967 seconds (208 bytes allocated)
Run Code Online (Sandbox Code Playgroud)

这是预期的吗?或者我做错了什么?我真的希望将我的变量编入索引,因为其他原因现在解释的时间太长了,但这种性能损失是我无法忍受的.

arrays performance sum julia

5
推荐指数
1
解决办法
264
查看次数

循环展开?在 Julia 中使用元编程

有没有办法“元编程”获得具有以下结构的代码块:

if r1 < R1
   s = 1

   elseif r1 < R2
      s = 2

      ... etc until N

   end
end
Run Code Online (Sandbox Code Playgroud)

谢谢!

metaprogramming loop-unrolling julia

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

有没有办法获得指向Julia变量的集合?

让我们假设我有3个变量R1,R2和R3.我想要一个指向变量的Dictionary(或其他集合),这样如果我修改变量,它也会改变Dictionary中的值.

基本上我想做这样的事情:

R1 = 0.0
R2 = 0.0
R3 = 0.0

D = Dict(1=>R1, 2=>R2, 3=>R3)

D[1]
output> 0.0

R1 = 1.0

D[1]
output> 1.0
Run Code Online (Sandbox Code Playgroud)

在朱莉娅有办法做到这一点吗?

谢谢

collections pointers local-variables julia

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

用Python中的对数加速一个大循环

我正在尝试加速以下代码:

from math import log
from random import random

def logtest1(N):
    tr=0
    for i in range(1,N):
        T= 40 + 10*random()
        tr += -log(random())/T
Run Code Online (Sandbox Code Playgroud)

我是python的新手(来自matlab)...而这个相同的代码在python中运行速度比matlab(和Julia)慢5倍,这引起了我的注意.

我尝试使用numba和一个长尾小鹦鹉包装器,而不是python的numpy函数,但根本没有任何改进.

我很感激任何帮助.谢谢.

编辑:整个事情是蒙特卡罗模拟,所以N非常大... 10e6用于测试目的

python performance matlab logarithm

0
推荐指数
1
解决办法
673
查看次数