Java語言中使用OpenMP

來源:互聯網
上載者:User

   從去年年中,開始學習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

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.