什么是 JaMP,我如何了解它?

twe*_*ine 5 java parallel-processing multithreading openmp

在一个项目中,我被要求通过 Java 实现共享内存并行化JaMP,它扩展了 Java for OpenMP。我几乎是该领域的初学者,经过 10 分钟的搜索,互联网并没有证明自己很有帮助。

我的主要问题:是JaMP仅 linux 的实现吗?如果没有,开始学习的良好起点是什么?

dre*_*ash 3

JaMP(也称为 ClusterJaMP)是 2007 年发表在论文“JaMP:Java DSM 的 OpenMP 的实现”中的一个研究项目,摘要如下:

\n
\n

尽管 OpenMP 是 C/C++ 和 Fortran 编程语言的广泛认可的标准,用于共享内存机器程序的半自动并行化,但在将 OpenMP 绑定到针对集群的 Java 方面还没有做太多工作。分布式\n内存。本文提出了三个主要贡献:(1) JaMP 是 OpenMP 标准对 Java 的适应,它实现了 OpenMP 规范的一个大型子集,其表现力与 OpenMP 相当。(2) 我们建议一组扩展,以允许 OpenMP 更好地集成到 Java 语言中;(3) 我们在研究编译器 Jackal 中展示了 JaMP 的原型实现,这是基于软件的 Java 分布式共享内存实现。我们使用一组微基准测试和并行 Java Grande Forum (JGF) 基准测试的 OpenMP 版本来评估 JaMP 的性能。微基准测试表明 OpenMP for Java 的实现\n不需要太多开销。JGF 基准测试在八个节点上实现了 5\xe2\x80\x938 的良好加速。版权所有 \xc2\xa9 2007 John Wiley & Sons,\n有限公司。

\n
\n

JaMP 用 Ja​​va 实现了 OpenMP 2.0 的一些功能,即:

\n
    \n
  • 平行区域;
  • \n
  • privatefirst private共享数据访问子句;
  • \n
  • 时间表并行的静态引导动态
  • \n
  • 部分;
  • \n
  • 单身的;
  • \n
  • 掌握;
  • \n
  • 障碍;
  • \n
  • 支持削减。
  • \n
\n

除了支持共享内存范例之外,JaMP 还对其进行了进一步扩展以补充集群(分布式内存范例)。对于后者,JaMP 依赖于研究编译器Jackal

\n

OpenMPJaMP 中的并行构造函数不是使用普通的 Java 注释来表达的,而是使用普通的 Java 注释来表达:

\n
int count = 0;\n//#pragma jamp parallel\n{\n    //pragma jamp for reduction (+:count)\n    for(int i = 0; i < N; i++)\n       // some work.\n}  \n
Run Code Online (Sandbox Code Playgroud)\n

这些 Java 注释的语法尽可能模仿 OpenMP 使用的语法。在预编译阶段,JaMP 将读取这些注释,并将其替换为实现并行指令的相应代码。

\n