multithreading - Julia :@async和多个CPU内核/线程

标签 multithreading asynchronous julia

假设我正在使用@async在后台运行昂贵的计算。是否会在运行Julia运行时的同一线程上(即在同一CPU内核上)执行此计算?如果是,我是否必须像julia --threads 2一样启动Julia并使用Base.Threads

最佳答案

@async产生一个绿色线程协程。它们都将在同一系统线程中生成,因此对于等待外部资源(IO,远程作业)的并行性类型很有用,对于诸如并行化数值计算之类的事情(除非它们在远程上完成)是不利的。工作人员)。
基本上,在Julia中,您具有以下并行类型:

  • @simd-利用CPU的单指令多数据(SIMD)功能
  • @async-协程
  • @threads-多线程,需要设置JULIA_NUM_THREADS环境变量
  • @distributed-单台或多台机器上的多处理
  • GPU计算-从CUDA.jl
  • 开始此旅程

    您可以在StackOverflow上为上述每个主题找到几个更详细的示例。

    关于multithreading - Julia :@async和多个CPU内核/线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64094328/

    相关文章:

    ruby - 作为开发人员,不同的 Ruby 线程模型(Ruby 与 JRuby)对您的代码有什么实际影响?

    windows - 使用多个线程访问单个文件

    jQuery - 是否有办法中止 $.when 调用的 AJAX 调用列表?

    asynchronous - 节俭 + Tornado + 异步

    memory-management - Julia 中的预分配

    java - 寻找开发互斥锁的解决方案

    java - 静态同步方法和非静态同步方法都可以作用于静态成员变量,这可能会导致意外行为

    c# - 如何在异步多线程爬虫中锁定回调类?

    julia - 如何执行动态生成的 Julia 语句

    functional-programming - Julia 中有没有一种方法可以修改函数 f(x) 使其返回 f(x)*g(x)