【问题标题】:Java parallelism: OpenCL/GPUs vs. actors/threadsJava 并行性:OpenCL/GPU 与参与者/线程
【发布时间】:2023-03-10 23:34:01
【问题描述】:

APARAPI project 将自己描述为:

Aparapi 允许 Java 开发人员通过在 GPU 上执行数据并行代码片段而不是局限于本地 CPU 来利用 GPU 和 APU 设备的计算能力。它通过在运行时将 Java 字节码转换为 OpenCL 并在 GPU 上执行来实现...

我想知道与 gparsAkka 等传统并发框架相比,这有什么好处。

在什么情况下将 JVM 字节码转换为 OpenCL 会比这些替代方案提供的更快或更可取?为什么 OpenCL/GPU 范式比 Java/CPU“更快”(至少在某些情况下)?什么情况下需要这样做?

【问题讨论】:

  • 是的,它有可能更快。实际上,这是一个简单的区别:APARAPI 允许您在 GPU 上运行并行代码,而 gpars 和 Akka 允许您并行化代码以在 CPU 上运行。
  • 我在stackoverflow.com/questions/22866901/…写了几句话(这个问题提到了CUDA,但我的回答比较笼统)
  • 如果计算与数据的比率很高,aparapi 将根据硬件赢得 x2 到 x100。 cpu 核心宽度仅为 16,而 gpu 计算单元为 64 或 128 宽,一个 gpu 中最多可以有 64 个这些单元。与 cpu 相比,gpu 中使用的寄存器要多得多。

标签: java akka opencl gpu aparapi


【解决方案1】:

我想说的是,akka 是一个非常高级的并发抽象,而像 CUDA、OpenMP、MPI 等东西则用于计算昂贵的东西。因此,akka 非常适合实现诸如任务调度系统以及处理和限制请求之类的东西,但如果它们的计算成本很高并且可以并行化,那么对于任务执行本身就没有那么好了。但是你有这个非常高的抽象,并且可以使用期货来使整个系统反应,这样它就不会在任何地方锁定。所有的 GPU 库都非常适合实现大规模并行任务,在这些任务中,你有大量的无人机都在做几乎相同的事情。这就是 BLAS 之类的东西。我认为它们最近变得越来越流行,因为与 CPU 相比,显卡有了更大的进步,尽管与 OpenMP 相比具有很大的学习曲线,恕我直言,它们仍然是一个非常专业的领域,您可以在您的计算机上粘贴一些预处理器衍生产品循环,或类似 java8 新的并行集合。无论如何,这是我的 2 美分。

【讨论】:

    猜你喜欢
    • 2017-03-11
    • 1970-01-01
    • 2018-05-08
    • 2012-09-02
    • 2012-01-26
    • 2015-03-19
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    相关资源
    最近更新 更多