2010-11-20 50 views
0

我有一個Java項目,我必須通過OpenMP技術實現並行化(也就是說,我必須在某種程度上在C/C++和Java之間架起一座橋樑)。到目前爲止,我被告知使用JNI來集成Java中的C/C++代碼,但是,我也被建議使用JaMP來代替。我對這些技術/框架知之甚少,所以我的問題是,使用起來不那麼痛苦,一般來說,我如何在Java代碼中實現OpenMP?我能否僅使用Java線程實現相同的功能(不使用OpenMP)?我是這個領域的初學者,所以絕對讚賞任何幫助。提示:該項目將建立一個協作圖形編輯器,將「服務器與客戶端之間的交互」「放入」一個核心,並將「有效」圖形處理「放入」另一個核心。OpenMP如何在Java代碼中使用?

+0

您是否必須使用OpenMP?爲什麼不使用基於Java的API /技術進行並行處理? – 2010-11-20 16:26:34

回答

5

從您對項目的簡要和輕微混淆的解釋中,我看不出您有任何需要使用OpenMP。所有你想做的事情都可以完全在Java中完成,它具有良好的(足夠的)併發編程功能。

OpenMP是爲完全不同類型的「併發」程序而設計的 - 真正用於並行程序;其核心在於跨處理器擴展循環迭代。這不適合你的問題。

如果您被告知必須使用Java和OpenMP,那麼我認爲您必須。如果是這樣,請與JaMP一起使用。只有當有人拿着槍時,你才能在Java + JNI + C/C++ + OpenMp的路徑上展開。

+0

謝謝你的回答。你能告訴我使用Java + JNI + C/C++ + OpenMp有什麼困難嗎?你說這是不必要的,或者是真正的痛苦? – twentynine 2010-11-20 18:20:04

+0

另一方面,如果你有一些JaMP的經驗,你能指點我一個開始學習的好起點嗎?僅限於Linux嗎? – twentynine 2010-11-20 18:34:21

+0

@twentynine - Java + JNI + C/C+++ OpenMP對於您的目的來說似乎沒有必要,這將會是一個真正的痛苦 - 您不會給那些熟悉JNI,C/C++和OpenMP--試圖在整合它們的同時嘗試學習所有3個 - 你會對自己做這些嗎?不,我沒有JaMP的經驗,過去我使用過JOMP,但JaMP似乎更新,並且來自穩定。 – 2010-11-21 12:20:52

0

Futures也可以看看你的項目。 我認爲這並不是許多傳統程序員用於並行化他們的工作。