[轉]在Windows 下使用OpenCL

目前,NVIDIAAMD的Windows driver均有支援OpenCL(NVIDIA的正式版driver是從195.62版開始,而AMD則是從9.11版開始)。NVIDIA的正式版driver中包含
OpenCL.dll,因此可以直接使用。AMD到目前為止,則仍需要安裝其SDK才有OpenCL.dll檔。不過,在最新的SDK中,NVIDIA和AMD使用的calling convention是相
同的。也就是說,使用AMD的SDK編譯的OpenCL程式,可以直接在NVIDIA的driver下運作。反過來也是一樣。
AMD的OpenCL SDK是在AMD Stream SDK 2.0里面,目前是beta 4。NVIDIA的OpenCL SDK則包括在最新的CUDA 3.0 SDK beta中。兩個SDK可以同時安裝在同一
部電腦中,基本上不會有沖突的問題。
由于OpenCL SDK的重點只是在header file和程式庫,因此設定上是很單純的。在AMD的SDK中,會建立一個環境變數??ATISTREAMSDKROOTHeader files就在include
目錄中,而程式庫檔案則在lib里面。NVIDIA的SDK也是類似,有一個環境變數??NVSDKCOMPUTE_ROOT不過,因為NVIDIA的SDK同時包括CUDA及OpenCL,因此它
的header files是 ??在OpenCL\common\inc目錄里,而程式庫則是在OpenCL\common\lib里面。
關于程式庫的部份,還有一點特別需要注意的是,AMD和NVIDIA都有提供32 bits及64 bits的程式庫,供32 bits及64 bits的程式使用。NVIDIA的SDK中,32 bits的程式
庫是在lib目錄下的Win32目錄里,而64 bits的則是在x64目錄里。AMD的SDK中,則分別是在x86及x86_64目錄里。
以下是使用Visual Studio 2008 Express 設定的范例:
NVIDIA 的CUDA SDK:
特別注意的是,因為NVIDIA的SDK在區分32 bits及64 bits版本程式庫所使用的目錄名稱(Win32及x64)和Visual Studio 2008內建的$(PlatformName)是一致的,
因此可以直接使用。AMD的SDK就要分別設定了。另外,如果使用的是32 bits的SDK,則不包括64 bits的library,因此路律就不需要再加上$(PlatformName)
以下是AMD SDK 的設定方式:
最后,把OpenCL.lib 加到程式庫里面就可以了(這點對兩個SDK 都是一樣的):
最后再順便提到一個小地方。在MacOS X 10.6 中,OpenCL 的header 檔是存在OpenCL 目錄中,也就是
#include <OpenCL/opencl.h>
但是在Windows 下(以及可能所有其它的OS 下),都是
#include <CL/cl.h>
因此,如果想要讓同一個程式碼,可以同時在各種OS 下都能編譯的話,在include 檔案時,建議寫成:
#ifdef __APPLE__
#include <OpenCL/opencl.h>
#else
#include <CL/cl.h>
#endif
這樣就可以同時在MacOS X 10.6 下,以及其它的OS 下都能使用了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448824.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448824.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448824.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

docker 之 Dockerfile 實踐

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 上一篇介紹了Dockerfile中使用的指令&#xff0c;現在開始進行指令實踐 先查看下本地的鏡像&#xff0c;選一個作為base image&#xf…

tomcat啟動后命令行日志中文亂碼

這是日志的編碼設置和窗體的編碼格式不一致。 將 conf\logging.properties 文件中的 UTF-8 改成 GBK 重啟tomcat &#xff08;右鍵cmd標題欄部分&#xff0c;可以查看cmd屬性&#xff09; 轉載于:https://www.cnblogs.com/Echiops/p/10974587.html

Coursera機器學習筆記(一) - 監督學習vs無監督學習

轉載 http://daniellaah.github.io/2016/Machine-Learning-Andrew-Ng-My-Notes-Week-1-Introduction.html 一. 監督學習 什么是監督學習? 我們來看看維基百科中給出的定義: 監督式學習&#xff08;英語&#xff1a;Supervised learning&#xff09;&#xff0c;是一個機器學習…

基于OpenCL的mean filter性能

1.對于一個標準的3*3 均值濾波&#xff0c;kernel代碼如下&#xff1a; 使用buffer/image緩沖對象 __kernel void filter(__global uchar4* inputImage, __global uchar4* outputImage, uint N) {int x get_global_id(0);int y get_global_id(1);int width get_global_size(…

Docker 實戰:編寫 Dockerfile

一、編譯鏡像 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 編譯鏡像 Dockerfile類似于Makfile&#xff0c;用戶使用docker build就可以編譯鏡像&#xff0c;使用該命令可以設置編譯…

dubbo-環境搭建,實現一個簡單地dubbo實例(附github地址)

一、建立maven模塊和provider、consumer、service子模塊&#xff0c;其中service是開發接口的模塊 建立一個maven模塊&#xff0c;不選擇樣板&#xff0c;直接next知道完成&#xff0c;建立三個子模塊,建立完后發現各個模塊的java目錄不是源目錄 右鍵——>make Directory as…

static 二次理解

當api底層用到static修飾的話&#xff0c;因為是類的&#xff0c;此容器中只有一份轉載于:https://blog.51cto.com/jiaxiaoxu/2394844

AMD 5XXX 系列顯卡的 peak bandwidth計算

在ATI Stream Computing Programming Guide中&#xff0c;例舉了AMD 5系列顯卡的參數信息。 我比較關注其中Peak bandwidths的計算&#xff0c;以便在opencl程序測試bandwidth利用率。 下面&#xff0c;我以5870為例&#xff0c;探討一下如何計算得到這些結果&#xff1a; L1 c…

Docker : Dockerfile 定制鏡像

使用 Dockerfile 定制鏡像 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 鏡像的定制實際上就是定制每一層所添加的配置、文件。如果我們可以把每一層修改、安裝、構建、操作的命令都寫…

動態規劃 最長上升子序列

題意&#xff1a;給出一個序列&#xff0c;求它的最長上升子序列的長度 題目鏈接&#xff1a;https://ac.nowcoder.com/acm/problem/26156 輸入:n代表長度&#xff0c;然后是一個字符串 分析&#xff1a;用dp[i]表示長度為i1的上升子序列末尾元素的最小值&#xff08;一開始初始…

解說redis中如何實現高可用

redis中為了實現高可用&#xff08;High Availability&#xff0c;簡稱HA&#xff09;&#xff0c;采用了如下兩個方式&#xff1a;主從復制數據。采用哨兵監控數據節點的運行情況&#xff0c;一旦主節點出現問題由從節點頂上繼續進行服務。主從復制redis中主從節點復制數據有全…

OpenCL memory object 之 Global memory (1)

這篇日志是學習AMD OpenCL文檔時候的總結。 OpenCL用memory object在host和device之間傳輸數據&#xff0c;memory object由runtime&#xff08;運行庫&#xff0c;driver的一部分&#xff09;來管理。 OpenCL中的內存對象包括buffer以及image&#xff0c;buffer是一維數據元素…

Docker: dockerfile 使用介紹

Docker簡介 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Docker項目提供了構建在Linux內核功能之上&#xff0c;協同在一起的的高級工具。其目標是幫助開發和運維人員更容易地跨系統跨…

【Hello CSS】第六章-文檔流與排版

作者&#xff1a;陳大魚頭github&#xff1a; KRISACHAN正常流 什么是“正常流”&#xff1f; 其實就是我們日常所說的“文檔流”。 在W3C官方文檔里對應的是“normal flow”。 正常流的盒子屬于格式化上下文(FC)&#xff0c;在CSS2.2中可以是表格、塊或內聯。 在CSS3中引入了f…

創建型模式---工廠模式

工廠模式 在工廠設計模式中&#xff0c;客戶端可以請求一個對象&#xff0c;而無需要知道這個對象來自哪里&#xff0c;也就是使用哪個類來生成這個對象。工廠背后的思想是簡化對象的創建。與客戶端自己基于類實例化直接創建對象相比&#xff0c;基于一個中心化函數來實現&…

OpenCL memory object 之 Global memory (2)

當我們用clCreateBuffer, clCreateImage創建OpenCL memory object時候&#xff0c;我們需要輸入一個flag參數&#xff0c;這個參數決定memory object的位置。 cl_mem clCreateBuffer (cl_context context, cl_mem_flags flags, size_t size, void *host_ptr, cl_int *errc…

數據結構進階篇-跳表

大家想必都知道&#xff0c;數組和鏈表的搜索操作的時間復雜度都是O(N)的&#xff0c;在數據量大的時候是非常耗時的。對于數組來說&#xff0c;我們可以先排序&#xff0c;然后使用二分搜索&#xff0c;就能夠將時間復雜度降低到O(logN)&#xff0c;但是有序數組的插入是一個O…

查看本機ssh公鑰,生成公鑰

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 查看ssh公鑰方法&#xff1a; 1.通過命令窗口&#xff1a;打開你的git bash 窗口&#xff0c;進入.ssh目錄&#xff1a;cd ~/.ssh&…

如何實現動態水球圖 --》 echars結合echarts-liquidfill實現

1&#xff09;項目中作為項目依賴&#xff0c;安裝到項目當中(注意必須要結合echars) npm install echarts vue-echarts --save npm install echarts-liquidfill --save 2&#xff09;在需要使用水晶球的組件里引入liquidFill.js import echarts-liquidfill/src/liquidFill.js;…

OpenCL memory object 之選擇傳輸path

對應用程序來說&#xff0c;選擇合適的memory object傳輸path可以有效提高程序性能。 下面先看一寫buffer bandwidth的例子&#xff1a; 1. clEnqueueWriteBuffer()以及clEnqueueReadBuffer() 如果應用程序已經通過malloc 或者mmap分配內存&#xff0c;CL_MEM_USE_HOST_PTR是個…