`
yidongkaifa
  • 浏览: 4038870 次
文章分类
社区版块
存档分类
最新评论

Java语言中使用OpenMP

 
阅读更多

从去年年中,开始学习Java,主要是维护公司用Java编写的服务器软件。目前,该服务器软件遇到一个问题,在下载大文件时,如果同时下载的用户很多,服务器软件工作会出现异常,有的用户无法下载。服务器硬件基本上都是多核处理器,所以,如果能在Java语言中使用并行编程技术,使用OpenMP,可能会提高服务器软件的性能。

今天,测试了一下,Java语言中也可以使用OpenMP。以下是详细测试过程:

1. 下载jomp1.0b.jar

http://www2.epcc.ed.ac.uk/computing/research_activities/jomp/index_1.html

2. 将jomp1.0b.jar部署到JDK的lib下,然后追加到CLASSPATH。我用的JDK版本为1.6.0_19(最新JDK为1.6.0_20)。

也可以不追加到系统变量,而是直接解压后当作应用类使用。

3. 编写测试代码TestJavaOpenMP.jomp。扩展名必须为jomp。

import java.util.*;

public class TestJavaOpenMP
{

public static void main(String[] agrs)
{
int i;
//omp parallel for

for(i = 0; i < 20; i++)
{
System.out.println("i = " + i);
}
}
}

4. 由jomp 生成java文件:

java jomp.compiler.Jomp TestJavaOpenMP。(这里不带jomp扩展名)

生成TestJavaOpenMP.java文件。

5. 编译TestJavaOpenMP.java:

java TestJavaOpenMP.java. 生成TestJavaOpenMP.class文件

6. 运行:

java -Djomp.threads=2 TestJavaOpenMP

一个运行结果:

i = 0
i = 10
i = 1
i = 2
i = 11
i = 12
i = 3
i = 13
i = 14
i = 4
i = 15
i = 5
i = 16
i = 6
i = 17
i = 7
i = 18
i = 8
i = 9
i = 19

java -Djomp.threads=4 TestJavaOpenMP

一个运行结果:

i = 15
i = 0
i = 10
i = 5
i = 11
i = 1
i = 16
i = 2
i = 12
i = 6
i = 13
i = 14
i = 3
i = 17
i = 18
i = 19
i = 4
i = 7
i = 8
i = 9

可以看到,该运行结果类似C/C++语言中的结果。是否真的在多核上运行,需要对比一下运行时间才能知道。

参考网页:

http://www.hipecc.wichita.edu/jomp.html

http://www2.epcc.ed.ac.uk/computing/research_activities/jomp/index_1.html

分享到:
评论

相关推荐

    在C++中使用openmp进行多线程编程

    多线程在实际的编程中的重要性不言而喻。对于C++而言,当我们需要使用多线程时,可以使用boost::thread库或者自从C++ 11开始支持的std::thread,也可以使用操作系统相关的线程API,如在Linux上,可以使用pthread库。...

    java openmp的一些论文

    java openmp的一些论文 java openmp的一些论文 java openmp的一些论文 java openmp的一些论文 java openmp的一些论文

    using openMP

    using openMP - a good book if you want to get into parallel computing

    OpenMP用户手册(中文).docx

    摘要:本教程涵盖了OpenMP 3.1的大多数主要功能,包括其用于指定并行区域,工作共享,同步和数据环境的各种结构和指令。还涵盖了运行时库函数和环境变量。本教程包括C和Fortran示例代码以及实验室练习。 本教程对于...

    openmp 使用

    openmp 使用

    论文研究 - 使用OpenMP的AES开销缓解

    为此,我们用单个处理器实现了AES的顺序算法,然后使用OpenMP指令来减少对策的开销。 随后,将顺序算法的结果与使用2、4、6和8个处理器的并行实现进行了比较。 我们展示了AES的并行实现如何为加密算法提供更好的...

    使用openmp并发编程求最小生成树

    使用openmp进行并发编程,求最小生成树。结果显示不同个数的cpu所需时间以及加速比。运行环境在visual studio2013,同时需要开启openmp功能。注释详细,主要难点在于如何将最大部分不存在依赖关系的代码块分割开来...

    OpenMP中使用task子句的几个方法

    在OpenMP中使用task子句,把循环处理并行化,提高执行性能

    openmp实现快速排序

    openmp实现快速排序 用NUM_THREADS设置线程数 建树时间θ(1), 树高θ(logn) 时间复杂度θ(logn)

    openmp-examples-master_openmp_源码

    练习openmp

    OpenMP详细介绍

    该文档是对OPenMp的详细介绍,分享给大家!

    使用OpenMP 进行 Fortran95并行计算.pdf

    openmp的使用例子

    openmp的使用例子,是关于气象方面计算的,学习openmp可以参考一下

    openmp_openmp_

    openmp 实现矩阵乘法的并行化加速,采用八线程

    openmp-4.5.rar

    OpenMP 4.5版本官方手册,OpenMP Application Programming Interface version 4.5

    openmp编程指南.pdf

    多核并行编程中,openmp作为一个不错的选择,此文档对openmp的特点,编程特性跟据例子进行讲解,有助于快速掌握openmp的编程

    MPI+OpenMP.zip

    并行计算机架构与编程上机实验程序 求矩阵行列式MPI+OpenMP多线程编程 MPI+OpenMP多线程编程的PBS

    Fortran+ openmp实现实例

    一个在fortran中实现openmp并行加速的教程实例;简单,易懂,且具有与串行的对比。主要实现了do和sections两种并行模式

    OpenMP并行程序设计

    openmp快速入门,简单的介绍了openmp的用法,一目了然

    C++ and OpenMP

    关于如何在C++环境中使用OpenMP的一个小资料

Global site tag (gtag.js) - Google Analytics