Java语言中使用OpenMP
2015-09-15 17:38
531 查看
从去年年中,开始学习Java,主要是维护公司用Java编写的服务器软件。目前,该服务器软件遇到一个问题,在下载大文件时,如果同时下载的用户很多, 服务器软件工作会出现异常,有的用户无法下载。服务器硬件基本上都是多核处理器,所以,如果能在Java语言中使用并行编程技术,使用OpenMP,可能 会提高服务器软件的性能。
今天,测试了一下,Java语言中也可以使用OpenMP。以下是详细测试过程:
1. 下载jomp1.0b.jar
https://www2.epcc.ed.ac.uk/computing/research_activities/jomp/download/jomp1.0b.jar
2. 将jomp1.0b.jar部署到JDK的lib下,然后追加到CLASSPATH。。
也可以不追加到系统变量,而是直接解压后当作应用类使用。
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:
javac 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++语言中的结果。是否真的在多核上运行,需要对比一下运行时间才能知道。
参考网页:
https://www2.epcc.ed.ac.uk/computing/research_activities/jomp/download.html
今天,测试了一下,Java语言中也可以使用OpenMP。以下是详细测试过程:
1. 下载jomp1.0b.jar
https://www2.epcc.ed.ac.uk/computing/research_activities/jomp/download/jomp1.0b.jar
2. 将jomp1.0b.jar部署到JDK的lib下,然后追加到CLASSPATH。。
也可以不追加到系统变量,而是直接解压后当作应用类使用。
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:
javac 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++语言中的结果。是否真的在多核上运行,需要对比一下运行时间才能知道。
参考网页:
https://www2.epcc.ed.ac.uk/computing/research_activities/jomp/download.html
相关文章推荐
- Java multithread
- 关于java普通类怎样获取当前的WebRoot目录。
- Java8 Lambda表达式之比较器
- Struts-config.xml配置文件讲解
- 一次Java内存泄漏的分析
- Struts 2 – i18n or localization example
- java第一个窗口
- Gradle, 基于DSL的新一代Java构建工具
- Java:对象的强、软、弱和虚引用
- Java NIO使用及原理分析(四)
- Java NIO使用及原理分析(三)
- Spring.NET在.NET新时代的尴尬
- 多维度分析:抽象类和接口的区别
- java正则表达式 非捕获组详解
- java.util.Date和java.sql.Date的比较
- Java NIO使用及原理分析(二)
- Struts2初识(1)-struts实现简单登录
- eclipse 中的注释 快捷键
- myeclipse 数据表反向生成java类
- Eclipse快捷键