linux 编译opencl,OpenCL编译环境配置(VS+Nvidia)
英偉達的顯卡首先要下載安裝CUDA開發(fā)包,可以參考這里的步驟: ??VS2015編譯環(huán)境下CUDA安裝配置
安裝好CUDA之后,OpenCL的配置就已經(jīng)完成了80%了,剩下的工作就是把OpenCL的路徑添加到工程中。
1. 新建一個win32控制臺應(yīng)用程序,在工程的屬性管理器Debug中添加一個屬性頁“OpenCL.props”,之后雙擊打開
2. 在C/C++ ->常規(guī)->附加包含目錄 中添加CUDA的include文件夾路徑,我的路徑是“D:\Software\CUDA\Development\include”
3. 在鏈接器->常規(guī)->附加庫目錄 中添加lib文件夾路徑,我的路徑是“D:\Software\CUDA\Development\lib\Win32”
4. 在鏈接器->輸入->附加依賴項 里添加lib文件 OpenCL.lib
經(jīng)過以上4個步驟,OpenCL編譯環(huán)境就已經(jīng)配置好了,可以把屬性頁“OpenCL.props”保存起來,下次直接這個屬性頁就可以了,不用每次都重復(fù)配置。以下是測試程序:
#include
#include
#include
#include
int main()
{
//cl_platform 表示一個OpenCL的執(zhí)行平臺,關(guān)聯(lián)到GPU硬件,如N卡,AMD卡
cl_platform_id *platforms;
//OpenCL中定義的跨平臺的usigned int和int類型
cl_uint num_platforms;
cl_int i, err, platform_index = -1;
char* ext_data;
size_t ext_size;
const char icd_ext[] = "cl_khr_icd";
//要使platform工作,需要兩個步驟。1 需要為cl_platform_id結(jié)構(gòu)分配內(nèi)存空間。2 需要調(diào)用clGetPlatformIDs初始化這些數(shù)據(jù)結(jié)構(gòu)。一般還需要步驟0:詢問主機上有多少platforms
//查詢計算機上有多少個支持OpenCL的設(shè)備
err = clGetPlatformIDs(5, NULL, &num_platforms);
if (err < 0)
{
perror("Couldn't find any platforms.");
exit(1);
}
printf("本機上支持OpenCL的環(huán)境數(shù)量: %d\n", num_platforms);
//為platforms分配空間
platforms = (cl_platform_id*)
malloc(sizeof(cl_platform_id) * num_platforms);
clGetPlatformIDs(num_platforms, platforms, NULL);
//獲取GPU平臺的詳細信息
for (i = 0; i < num_platforms; i++)
{
//獲取緩存大小
err = clGetPlatformInfo(platforms[i],
CL_PLATFORM_EXTENSIONS, 0, NULL, &ext_size);
if (err < 0)
{
perror("Couldn't read extension data.");
exit(1);
}
printf("緩存大小: %d\n", ext_size);
ext_data = (char*)malloc(ext_size);
//獲取支持的擴展功能
clGetPlatformInfo(platforms[i], CL_PLATFORM_EXTENSIONS,
ext_size, ext_data, NULL);
printf("平臺 %d 支持的擴展功能: %s\n", i, ext_data);
//獲取顯卡的名稱
char *name = (char*)malloc(ext_size);
clGetPlatformInfo(platforms[i], CL_PLATFORM_NAME,
ext_size, name, NULL);
printf("平臺 %d 是: %s\n", i, name);
//獲取顯卡的生產(chǎn)商名稱
char *vendor = (char*)malloc(ext_size);
clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR,
ext_size, vendor, NULL);
printf("平臺 %d 的生產(chǎn)商是: %s\n", i, vendor);
//獲取平臺版本
char *version = (char*)malloc(ext_size);
clGetPlatformInfo(platforms[i], CL_PLATFORM_VERSION,
ext_size, version, NULL);
printf("平臺 %d 的版本信息: %s\n", i, version);
//查詢顯卡是獨立的還是嵌入的
char *profile = (char*)malloc(ext_size);
clGetPlatformInfo(platforms[i], CL_PLATFORM_PROFILE,
ext_size, profile, NULL);
printf("平臺 %d 是獨立的(full profile)還是嵌入式的(embeded profile)?: %s\n", i, profile);
//查詢是否支持ICD擴展
if (strstr(ext_data, icd_ext) != NULL)
platform_index = i;
std::cout << "平臺ID = " << platform_index << std::endl;
/* Display whether ICD extension is supported */
if (platform_index > -1)
printf("平臺 %d 支持ICD擴展: %s\n",
platform_index, icd_ext);
std::cout << std::endl;
//釋放空間
free(ext_data);
free(name);
free(vendor);
free(version);
free(profile);
}
if (platform_index <= -1)
printf("No platforms support the %s extension.\n", icd_ext);
getchar();
//釋放資源
free(platforms);
return 0;
}
在本機上執(zhí)行輸出:
linux內(nèi)核編譯環(huán)境配置
linux內(nèi)核編譯環(huán)境配置 如果不是編譯內(nèi)核,只需要安裝與內(nèi)核相匹配的kernel-devel開發(fā)包即可.即是/lib/modules/`uname -r`/build -> /usr/src/ ...
Syslinux編譯環(huán)境配置簡要步驟
由于畢業(yè)設(shè)計要做一個加密U盤的LINUX,需要修改一sysylinux引導(dǎo)程序,在網(wǎng)上很少有關(guān)于syslinux編譯環(huán)境配置的文章,在此簡要總結(jié)一下,發(fā)出來共享. 需要的軟件: 1.? vmware ...
Android編譯環(huán)境配置
Android編譯環(huán)境配置 網(wǎng)上關(guān)于Android編譯環(huán)境配置的整理資料有不少,經(jīng)整理親測后,希望能給需要的親們提供幫助. 主要分為四步: 1.安裝JDK(Java Standard Edition ...
mac OS(OS X)的OI編譯環(huán)境配置指南
編譯環(huán)境:gdb+Atom 如何安裝gdb: http://logic0.blog.163.com/blog/static/1889281462014183271283/ ? Atom下載地址: ht ...
Android編譯環(huán)境配置(Ubuntu 14.04)
常識:編譯Android源代碼需要在Linux系統(tǒng)環(huán)境下進行... 在Linux中,開發(fā)Android環(huán)境包括以下需求:Git.repo.JDK(現(xiàn)在一般使用OpenJDK)等:其中,Git用于下載源 ...
Berkeley DB (VC6.0 編譯環(huán)境配置)
操作系統(tǒng):winxp VC環(huán)境:VC6.0 必需文件:Berkeley DB安裝文件(db-.msi) 下載地址:http://www.oracle.com/technology/software/p ...
Android代碼編譯環(huán)境配置 “Gerrit和Git環(huán)境配置”
Gerrit和Git環(huán)境配置可以參考 步驟1. 先在Gerrit中創(chuàng)建新的賬戶: 步驟2. 在新的客戶端上生成密鑰(可以使用的是生成的公鑰): 步驟 ...
關(guān)于Sublime text 的PHP編譯環(huán)境配置的問題
前一段時間終于裝上了傳說中的代碼編輯神器====>Sublime Text ,一打開便愛不釋手,于是在網(wǎng)上找PHP的配置方案和插件,所有的一切都搞定了,可就是編譯的時候沒有顯示,也沒有提示,熬了 ...
2016/01/10 C++ Primer 小記 —— 命令行編譯環(huán)境配置
OK!第一篇博文!自賀一下! 今日看了此書的前幾頁.嗯,說得挺全,基礎(chǔ)易懂. 之前學(xué)過c++,但沒用過命令行編譯. 本人用的VS里的編譯器,文件名是cl.exe,在VC目錄下. 雖然有了編譯器,但并不 ...
隨機推薦
一分鐘讀懂MySQL分布式消息的處理
在很多MYSQL環(huán)境中,對于MYSQL的分布式事物處理一直是個難題,在當(dāng)前互聯(lián)網(wǎng)環(huán)境中,大多數(shù)應(yīng)用系統(tǒng)是基于SOA的很多復(fù)雜接口之間的調(diào)用,并且事物之間的處理優(yōu)先級也是有先后的,所以對于實際入庫的數(shù)據(jù) ...
OpenCV 2.4.13 編譯使用(VS2015下)
OpenCV2.4.13編譯(VS2015) 這里給出已經(jīng)編譯好的的下載路徑.包括Win64的debug和release版本. OpenCV for MSVC14 Win64 1.下載OpenCV源碼 ...
1.iOS直播ijkplayer(第一周)
準備工作: 1.使用的B站的開源框架ijkplayer ,下載地址:?https://github.com/Bilibili/ijkplayer ijkplayer 是一個基于 ffplay?的輕量級 ...
Tips for OpenMesh
OpenMesh 求兩點之間的距離 MyMesh::Point p1(1,2,3); MyMesh::Point p2(1,2,5); double d=(p1-p2).length();
Scrum第一天任務(wù)認領(lǐng)情況
在團隊項目“廣商百貨”的SCRUM項目中我認領(lǐng)的任務(wù)是對登錄注冊界面進行完善.具體功能還沒有實現(xiàn),還在學(xué)習(xí)中...
(轉(zhuǎn))IOS筆記 #pragma mark的用法
簡單的來說就是為了方便查找和導(dǎo)航代碼用的. ? 下面舉例如何快速的定位到我已經(jīng)標識過的代碼. ? ? #pragma mark?播放節(jié)拍器 - (void) Run:(NSNumber?*)tick{ ...
myeclipse8.6安裝svn插件
1.從官方網(wǎng)站下載site-1.6.16.zip,網(wǎng)址:subclipse.tigris.org: 2.將解壓出來的features與plugins,復(fù)制到任意目錄:Genuitec/MyEclips ...
python 中的類
1.1 類里面包括:類的屬性.方法 OO的特征(Object Oriented) 封裝:信息隱蔽技術(shù) 繼承:繼承是子類自動共享父類之間數(shù)據(jù)和方法的機制 >>> class MyCla ...
Laravel5使用QQ郵箱發(fā)送郵件配置
在.env文件中設(shè)置如下MAIL_DRIVER=smtpMAIL_HOST=smtp.qq.comMAIL_PORT=465MAIL_USERNAME=00000000000@qq.comMAIL_P ...
JS浮點計算精度問題分析與解決
問題描述 在JS計算四則運算時會遇到精度丟失的問題,會引起諸多問題,看看以下例子: 例如:在chrome控制臺輸入 0.1 + 0.7 輸出結(jié)果是 0.7999999999999999 例如:0.1+ ...
總結(jié)
以上是生活随笔為你收集整理的linux 编译opencl,OpenCL编译环境配置(VS+Nvidia)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一喝就醉是哪首歌啊?
- 下一篇: linux应用程序跑飞,linux 试题