zoukankan      html  css  js  c++  java
  • Java语言中使用OpenMP

       从去年年中,开始学习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

  • 相关阅读:
    git常用命令及多人协同开发及遇到的问题
    LightOJ
    LightOJ
    LightOJ
    LightOJ
    LightOJ
    LightOJ
    LightOJ
    LightOJ
    Codeforces Round #604 (Div. 2) E. Beautiful Mirrors
  • 原文地址:https://www.cnblogs.com/timssd/p/4810911.html
Copyright © 2011-2022 走看看