从去年年中,开始学习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++而言,当我们需要使用多线程时,可以使用boost::thread库或者自从C++ 11开始支持的std::thread,也可以使用操作系统相关的线程API,如在Linux上,可以使用pthread库。...
java openmp的一些论文 java openmp的一些论文 java openmp的一些论文 java openmp的一些论文 java openmp的一些论文
using openMP - a good book if you want to get into parallel computing
摘要:本教程涵盖了OpenMP 3.1的大多数主要功能,包括其用于指定并行区域,工作共享,同步和数据环境的各种结构和指令。还涵盖了运行时库函数和环境变量。本教程包括C和Fortran示例代码以及实验室练习。 本教程对于...
openmp 使用
为此,我们用单个处理器实现了AES的顺序算法,然后使用OpenMP指令来减少对策的开销。 随后,将顺序算法的结果与使用2、4、6和8个处理器的并行实现进行了比较。 我们展示了AES的并行实现如何为加密算法提供更好的...
使用openmp进行并发编程,求最小生成树。结果显示不同个数的cpu所需时间以及加速比。运行环境在visual studio2013,同时需要开启openmp功能。注释详细,主要难点在于如何将最大部分不存在依赖关系的代码块分割开来...
在OpenMP中使用task子句,把循环处理并行化,提高执行性能
openmp实现快速排序 用NUM_THREADS设置线程数 建树时间θ(1), 树高θ(logn) 时间复杂度θ(logn)
练习openmp
该文档是对OPenMp的详细介绍,分享给大家!
openmp的使用例子,是关于气象方面计算的,学习openmp可以参考一下
openmp 实现矩阵乘法的并行化加速,采用八线程
OpenMP 4.5版本官方手册,OpenMP Application Programming Interface version 4.5
多核并行编程中,openmp作为一个不错的选择,此文档对openmp的特点,编程特性跟据例子进行讲解,有助于快速掌握openmp的编程
并行计算机架构与编程上机实验程序 求矩阵行列式MPI+OpenMP多线程编程 MPI+OpenMP多线程编程的PBS
一个在fortran中实现openmp并行加速的教程实例;简单,易懂,且具有与串行的对比。主要实现了do和sections两种并行模式
openmp快速入门,简单的介绍了openmp的用法,一目了然
关于如何在C++环境中使用OpenMP的一个小资料