multithreading - Julia `remotecall`线程给出不同的结果

标签 multithreading julia

manual学习Julia的过程中,我想看看是否可以让Julia立即在CPU的所有四个内核上运行一次硬计算。我用此命令启动了Julia;

julia -p 4

然后,我定义了以下函数,仅出于进行大量算术的目的。 Mod 13在那里,因此最终不会打印出大量数字。
@everywhere function hard_computation()         
  bigexp = BigInt(999)^99999999
  bigexp % 13
end

然后,我告诉 Julia 在四个单独的过程中执行此操作。
for i in 1:4
  push!(r, remotecall(i, hard_computation))
end

当我fetch编辑r中的值时,我得到[5, 6, 5, 5]。我再试了几次,得到了; 5, 5, 5, 5, 5, 1, 5, 5, 5, 2, 0, 5, 5, 5, 5, 7。正确的答案是5

所以...出了什么问题?

系统信息;
  • Julia 0.2.1
  • Linux 3.5.0-17-通用(x86_64)
  • 英特尔酷睿i5-2430M
  • 最佳答案

    大家都虚惊一场;原来我的RAM已损坏。

    关于multithreading - Julia `remotecall`线程给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23588409/

    相关文章:

    multithreading - 多线程反向传播

    c# - 线程安全代码变得过于笨拙?

    string - Julia 中的原始字符串

    dataframe - 如何将大型 julia DataFrame 分区为箭头文件并在读取数据时按顺序处理每个分区

    string - 如何使用 Julia 替换字符串中的多个字符

    Java线程循环卡住程序

    objective-c - NSManagedObjectContext 异步或同步保存更改?

    julia - Julia 中的类型化任务

    sockets - Julia中有关套接字通信的其他数据

    java - 如何解决延迟创建文件?