繁体   English   中英

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

[英]What is JaMP and how can I learn about it?

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

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

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

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

JaMP 在 Java 中实现了 OpenMP 2.0 的一些功能,即:

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

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

OpenMP中的编译指示不同,JaMP 中的并行构造函数使用普通 Java 注释表示:

int count = 0;
//#pragma jamp parallel
{
    //pragma jamp for reduction (+:count)
    for(int i = 0; i < N; i++)
       // some work.
}  

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

我想这一个可以帮助你....

JaMP:Java DSM的OpenMP实现 (论文,Google文档)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM