并行计算

Julia 支持以下四类并发和并行编程

  1. 异步“任务”或协程:

    Julia 任务允许暂停和恢复计算以进行 I/O、事件处理、生产者-消费者过程以及类似模式。任务可以通过 waitfetch 等操作进行同步,并通过 Channel 进行通信。虽然严格来说任务本身并不属于并行计算,但 Julia 允许您在多个线程上调度 Task

  2. 多线程:

    Julia 的 多线程 提供在多个线程或 CPU 内核上同时调度任务的能力,这些任务共享内存。这通常是在个人电脑或单个大型多核服务器上获得并行性的最简单方法。Julia 的多线程是可组合的。当一个多线程函数调用另一个多线程函数时,Julia 会在可用资源上全局调度所有线程,而不会过度订阅。

  3. 分布式计算:

    分布式计算运行多个 Julia 进程,这些进程具有独立的内存空间。它们可以位于同一台计算机上,也可以位于多台计算机上。 Distributed 标准库提供了远程执行 Julia 函数的功能。有了这个基本构建块,就可以构建许多不同类型的分布式计算抽象。 DistributedArrays.jl 等包就是这种抽象的例子。另一方面,像 MPI.jlElemental.jl 这样的包提供了对现有 MPI 库生态系统的访问。

  4. GPU 计算:

    Julia GPU 编译器提供了在 GPU 上原生运行 Julia 代码的能力。Julia 包生态系统中有很多针对 GPU 的包。 JuliaGPU.org 网站提供了功能列表、支持的 GPU、相关包和文档。