2012-03-28 59 views
3

我有一個系統的NVIDIA顯卡,我期待在使用OpenCL的更換的OpenMP對CPU任務的一些小的(感謝VS2010 making openMP useless需要爲CPU和GPU平臺安裝opencl嗎?

因爲我所擁有的NVIDIA的OpenCL的SDK安裝clGetPlatformIDs()只返回一個單一平臺(NVidia的),所以只有一個設備(GPU)。

我是否還需要安裝英特爾的openCL sdk才能訪問CPU平臺?
不應該CPU平臺總是可用 - 我的意思是,你怎麼沒有一個CPU?
您如何設法同時構建兩個openCL SDK?

+0

行,所以我需要英特爾OpenCL的SDK安裝藏漢 - 這個問題也許應該是「如何OpenCL的應用程序分發到機器沒有安裝SDK?」 – 2012-03-28 18:25:54

回答

8

您需要有一個提供CPU接口的SDK。 nVidia沒有,AMD和英特爾的SDK都這樣做;在我的情況下,來自英特爾的是顯着(類似10x)更快,這可能是由於我的部分糟糕的編程。

您不需要運行程序的SDK,只需要運行時。在Linux中,每個供應商在/etc/OpenCL/vendors/*.icd中安裝一個文件,其中包含要使用的運行時庫的路徑。這由您鏈接到的OpenCL運行時掃描(libOpenCL.so),然後在查詢該特定平臺上的設備時調用每個供應商的庫。

在Linux中,GPU驅動程序自動安裝OpenCL運行時,Intel運行時很可能與SDK單獨下載,但當然也是SDK的一部分。

+0

目前還不清楚你需要使用opencl應用程序(至少在windows上)分發的文件夾是35文件還是68Mb。 – 2012-03-28 20:02:07

+0

'/ usr/lib64/OpenCL/vendors/intel'在這裏有82M。不足爲奇,因爲它包含了單獨擁有25M的clang編譯器。這些文件的數量也是35。此外,SDK還包含一些頭文件。 – eudoxos 2012-03-28 20:09:22

+0

@eudoxos根據規範,ICD概念只是一個擴展,因此是可選的。那麼你知道OpenCL如何在沒有這個擴展的情況下工作嗎?使用與ICD加載程序(libOpenCL.so/OpenCL.dll)鏈接的擴展名,但是沒有ICD擴展名的情況下鏈接的是什麼? – 2016-05-26 20:07:22

-1

今天我終於開始嘗試開始做openCl開發,哇......它不是直截了當的。

有AMD的SDK,還有英特爾的SDK,有一個NVIDIA SDK,每個都有自己的屬性(CPU僅VS GPU僅VS特定的顯卡只支持吧?)

有可能是有效的技術原因它必須是這種方式,但我真的希望只有一個sdk,並且編程時也許你可以指定GPU/CPU任務,或者它可能會使用最有意義/最好的資源或SOMETHING。

雖然我猜...雖然我試圖決定,如果我去CPU或GPU的時間潛水。我有一臺配備SLI顯卡的新款4000美元Alienware筆記本電腦,但後來也是一款8核心的CPU,所以是的......猜不得要試一試sdk's,看看哪種型號的顯示器最適合我的需求?

不知道我的應用程序的最終用戶會做什麼,儘管...似乎他們似乎可以翻轉開關,使其運行在CPU或GPU上。

OpenCL的景觀確實需要一些幫助...

+2

你使用哪個OpenCL SDK並不重要,使用任何一個,你的二進制文件在任何地方都可以工作。你可能有Intel(CPU)OpenCL和NVidia OpenCL,所以你可以從字面上「翻轉開關」並在CPU上運行opencl。 AMD opencl支持在CPU上運行你的內核。使用一些聰明的預處理技巧,內核可以直接編譯到CPU代碼路徑的應用程序中,並且可以使用opencl運行。 – doug65536 2012-06-03 09:10:30

+0

@ doug65536你可以請回答我的問題http://stackoverflow.com/questions/21937673/develop-opencl-application-without-gpu-support-on-laptop?我真的處於絕望的境地,似乎無法在網上找到有關這個話題的任何幫助...... – 2014-02-21 15:14:10