不好意思想詢問一下目前剛開始學程式但對寫OpenCL的程式有興趣也知道至少要有一點經驗開發過普通C/C++程式所以想問一下如果想寫這方面的程式至少需要怎樣的基礎?例如線性代數要很好之類的...或者硬體上應該要有哪些配備有在ATI的網站上看到似乎ATI Stream 2.0 的SDK不支援3850的卡那是不是表示我編譯之後的程式沒辦法在3850的卡上跑?那有工具可以讓我在非上述所支援的顯卡中也能夠執行的模擬環境嗎?
OpenCL 的程式基本上和一般 C/C++ 程式差不多。所以如果已經熟悉 C/C++ 程式,那要寫 OpenCL 程式並不會特別困難。但是可能要對平行化演算法以及平行化程式設計有一些基本的瞭解(例如 race condition 等問題)。Radeon 3xxx 系列目前已經確定不會支援 OpenCL,這是硬體上的限制,無法由軟體克服。不過,如果沒有支援的顯示卡,使用 AMD Stream SDK 2.0 仍可以利用 CPU 來跑 OpenCL。
您好上次詢問完之後發現不知道該如何開始撰寫OpenCL程式是像平常一樣開啟VC++專案嗎?還是安裝完AMD STREAM SDK之後VS2008會多出OpenCL的專案選項?不曉得大大從哪裡開始學習OpenCL的撰寫?目前摸不著頭緒...
還有個問題大大有說到就算是非ATI四系列以上的使用者也可以執行OpenCL程式目前編譯是可以的了但是執行的時候都會說找不到OpenCL.lib但我確定有裝了ATI STREAM SDK了
如果你裝的 AMD Stream SDK 是 32 bits 版,那它的 opencl.lib 是放在%ATISTREAMSDKROOT%\lib裡面。64 bits 版的 SDK 的話,32 bits 的 opencl.lib 是在%ATISTREAMSDKROOT%\lib\x86 裡面。所以路徑可能要設定一下。另一個方法是把兩個路徑都打進去,例如%ATISTREAMSDKROOT%\lib;%ATISTREAMSDKROOT%\lib\x86這樣不管系統上裝的是 32 bits 還是 64 bits 的 SDK 都能用。
%ATISTREAMSDKROOT%這個環境變數我打上之後他說沒有這個所以我只好直接指定路徑了C:\.....\ATI Stream\...
目前是可以執行了但是main主程式跑之後第一個if就進入了就是您教學的if(context == 0) { std::cerr << "Can't create OpenCL context\n"; return 0; }他直接就跑進去了請問這是甚麼原因呢?另問一下您有沒有使用過DirectComputeBenchmark這個東西小弟測的時候都出現找不到d3d11.dll但是小弟用XP應該不能裝DX11吧
目前 ATI Stream SDK 2.0 的 OpenCL ICD 需要指定 platform,無法在 platform 直接傳入 0。我原本有打算加寫一篇文章介紹做法,不過到現在還沒找到時間寫…AMD 有一篇文章說明基本的做法,可以參考看看:http://developer.amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=71另外,Windows XP 的確不能使用 DirectX 11。DirectX 11 需要 Windows Vista 或 Windows 7。
張貼留言
8 則留言:
不好意思
想詢問一下
目前剛開始學程式
但對寫OpenCL的程式有興趣
也知道
至少要有一點經驗
開發過普通C/C++程式
所以想問一下
如果想寫這方面的程式
至少需要怎樣的基礎?
例如線性代數要很好之類的...
或者硬體上應該要有哪些配備
有在ATI的網站上看到
似乎ATI Stream 2.0 的SDK
不支援3850的卡
那是不是表示
我編譯之後的程式
沒辦法在3850的卡上跑?
那有工具可以讓我在非上述所支援的顯卡中
也能夠執行的模擬環境嗎?
OpenCL 的程式基本上和一般 C/C++ 程式差不多。所以如果已經熟悉 C/C++ 程式,那要寫 OpenCL 程式並不會特別困難。但是可能要對平行化演算法以及平行化程式設計有一些基本的瞭解(例如 race condition 等問題)。
Radeon 3xxx 系列目前已經確定不會支援 OpenCL,這是硬體上的限制,無法由軟體克服。不過,如果沒有支援的顯示卡,使用 AMD Stream SDK 2.0 仍可以利用 CPU 來跑 OpenCL。
您好
上次詢問完之後
發現
不知道該如何開始撰寫OpenCL程式
是像平常一樣開啟
VC++專案嗎?
還是安裝完AMD STREAM SDK之後
VS2008會多出OpenCL的專案選項?
不曉得大大從哪裡開始學習OpenCL的撰寫?
目前摸不著頭緒...
還有個問題
大大有說到
就算是非ATI四系列以上的使用者
也可以執行OpenCL程式
目前編譯是可以的了
但是
執行的時候都會說找不到OpenCL.lib
但我確定有裝了ATI STREAM SDK了
如果你裝的 AMD Stream SDK 是 32 bits 版,那它的 opencl.lib 是放在
%ATISTREAMSDKROOT%\lib
裡面。64 bits 版的 SDK 的話,32 bits 的 opencl.lib 是在
%ATISTREAMSDKROOT%\lib\x86
裡面。所以路徑可能要設定一下。
另一個方法是把兩個路徑都打進去,例如
%ATISTREAMSDKROOT%\lib;%ATISTREAMSDKROOT%\lib\x86
這樣不管系統上裝的是 32 bits 還是 64 bits 的 SDK 都能用。
%ATISTREAMSDKROOT%
這個環境變數
我打上之後
他說沒有這個所以我只好直接指定路徑了
C:\.....\ATI Stream\...
目前是可以執行了
但是main主程式跑之後
第一個if
就進入了
就是您教學的
if(context == 0) {
std::cerr << "Can't create OpenCL context\n";
return 0;
}
他直接就跑進去了
請問這是甚麼原因呢?
另問一下
您有沒有使用過
DirectComputeBenchmark
這個東西
小弟測的時候
都出現找不到d3d11.dll
但是小弟用XP
應該不能裝DX11吧
目前 ATI Stream SDK 2.0 的 OpenCL ICD 需要指定 platform,無法在 platform 直接傳入 0。我原本有打算加寫一篇文章介紹做法,不過到現在還沒找到時間寫…
AMD 有一篇文章說明基本的做法,可以參考看看:
http://developer.amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=71
另外,Windows XP 的確不能使用 DirectX 11。DirectX 11 需要 Windows Vista 或 Windows 7。
張貼留言