2013-04-18 25 views
0

我在雙核系統上使用Java Cl。我發現2個平臺之一是「AMD」,一個是英特爾,每個平臺都有一個設備。雙核上的JAVACL

should it not return one platform and two devices ? 
+2

「AMD」是你的顯卡,「Intel」是你的CPU。 – Jesper

+0

不應該爲我的CPU返回兩個設備(雙核系統) –

回答

1

AMD和Intel都爲他們的一些CPU和GPU提供了OpenCL實現。在AMD的情況下,他們的OpenCL實現也支持Intel CPU。因此,在安裝了AMD加速並行處理(APP)SDK之後,您的程序至少會用一臺設備(即計算機中的CPU)來識別AMD平臺。安裝英特爾OpenCL SDK後,您的計算機上將會運行第二個OpenCL實施程序,以檢測您的CPU。因此,查詢可用的平臺將返回兩個平臺,每個平臺都有一個設備。這兩款設備都是同樣的東西 - 您的電腦的CPU。不同之處在於OpenCL實現用於訪問該CPU - 即Intel版本或AMD版本。

關於核心數量,OpenCL將CPU視爲單個設備,但它允許您查詢設備(即CPU)上有多少計算單元(即物理核心)。

+0

謝謝你的chippies ....... –

1

不,設備是您的CPU,即使您有多個套接字,它也會作爲一個設備出現。

你寫你的代碼要在儘可能多的內核上運行的是可用的(無需知道是多少)

一些GPUS有成千上萬的核心,它是非常容易集體與他們合作,作爲一個設備。

例如Tesla K10擁有3072個核心,不僅不想告訴每個核心要做什麼,而且也不容易。 GPU是專爲每個核心做同樣的事情。

+0

感謝您的回覆。但爲什麼JavaCL會給我返回兩個平臺。我的理解是我有沒有GPU的雙核心繫統,JAVACL會給我一個有兩個設備的平臺。 –

+0

如果你有一臺無頭電腦(沒有顯示器),你可能還會有一個GPU。如果您有顯示器,VGA,DVI或HDMI端口,則即使是芯片組,也必須安裝GPU。 –

+0

CLPlatform platforms [] = JavaCL.listPlatforms(); \t \t爲(CLPlatform平臺:平臺) \t \t { \t \t \t CLDevice設備[] = platform.listGPUDevices(真); (「GPU Devices found: - 」+ devices.length); \t \t}我使用此代碼,但沒有發現任何設備。它表示在我的系統中找不到GPU設備 –