在Visual Studio中使用CUDA和Thrust

來源:互聯網
上載者:User

http://cuda.it168.com/a2011/0622/1208/000001208129_all.shtml

【IT168 專稿】我正在建立一些新的CUDA原型項目,旨在弄清楚如何最好地使用CUDA 4.0,我把它寫成一個快速教程,教你如何使用Visual Studio 2010中的CUDA和最新的C++0x特性編寫一個簡單的應用程式。

  因為目前CUDA SDK要求項目使用v90工具集(Visual Studio 2008)編譯,解決方案需要兩個項目,一個包括CUDA目標v90的DLL項目,一個目標v100(Visual Studio 2010)包含C++代碼的項目。

  安裝依賴

  確保你安裝了以下依賴軟體包

  ● Visual Studio 2010和2008 SP1(CUDA需要)

  ● Parallel NSight 1.51

  ● CUDA 4.0 RC或3.2,以及Thrust

  本文引用的例子全部使用的是CUDA 4.0 RC,如果你沒有安裝CUDA 4.0,它們也可以在3.2環境下工作。

  設定解決方案

  建立一個包含兩個項目的解決方案,需要兩個項目是因為一個目標是v100(Visual Studio 2010)編譯器,允許使用最新的C++0x語言功能,另一個目標是v90(Visual Studio 2008)編譯器,因為CUDA需要它。

  1)建立一個Win32控制台應用程式,取名HelloWorld,在嚮導的所有設定視窗全部保留預設設定,這個項目將包含應用程式的主進入點和所有Windows特定代碼,如管理線程要用到的並行模式庫(Parallel Patterns Library,PPL)。


▲圖 1 建立一個Win32控制台應用程式

  2)建立第二個Win32項目,取名HelloWorldCuda,這個DLL將包含你的CUDA代碼,在應用程式設定視窗,應用程式類型選擇DLL,並選中空白項目複選框。


▲圖 2 建立一個Win32項目


▲圖 3 在附加選項中,選中“空白項目”

  配置CUDA項目

  在HelloWorldCuda項目有很多設定需要配置。

  3)配置HelloWorldCuda項目

  3.1)選擇“項目”*“產生自訂”菜單選項,在對話方塊中選擇CUDA 4.0項目,這一步會添加對CUDA C/C++檔案的支援,但在項目屬性的產生設定視窗顯示之前,還需要一個.cu規則檔案,如果你沒有CUDA 4.0,那麼請使用3.2規則。


▲圖 4 在產生自訂對話方塊中選擇CUDA 4.0

  3.2)添加兩個新檔案到項目中,一個名為Hello.cpp的C++檔案(.cpp)和一個名為Hello.h的標頭檔(.h),將.cpp檔案重新命名為Hello.cu,你的解決方案樹形結構看起來應該像這樣:


▲圖 5 解決方案樹形結構

  3.3)選擇Hello.cu檔案,開啟它的屬性視窗,在“常規”選項卡中,將“項目類型”修改為“CUDA C/C++”。


▲圖 6 將項目類型設為CUDA C/C++

  3.4)選擇項目,開啟屬性視窗(Alt+斷行符號),在“常規”選項卡,將“平台工具集”欄位設為“v90”,如果你不能這樣設定,可能是因為沒有安裝Visual Studio 2008的緣故,再次提醒,CUDA需要它。


▲圖 7 設定平台工具集

  3.5)開啟“連結程式”*“常規”屬性視窗,在“附加庫目錄”欄位添加“$(CUDA_PATH_V4_0)\lib\$(Platform);”。


▲圖 8 設定附加庫目錄

  現在應該可以看到CUDA C/C++屬性選項卡了。

  3.6)開啟“連結程式”*“輸入”屬性視窗,在“附加依賴”欄位添加“cudart.lib;”。


▲圖 9 設定附加依賴

  3.7)確保你的項目總是按正確的順序產生,在HelloWorld項目上點擊右鍵,選擇“項目依賴”,選中旁邊的HelloWorldCuda複選框,這樣會強制HelloWorldCuda項目在HelloWorld之前產生。

  4)至此,產生解決方案應該沒有任何警告或錯誤了。

  添加一些CUDA/Thrust代碼

  現在是時候添加一些代碼了,我們需要在HelloWorldCuda DLL中增加一些CUDA代碼,並輸出它,以便HelloWorld應用程式可以執行它。

  5)配置HelloWorld項目,它需要連結HelloWorldCuda,也要能夠訪問與之對應的標頭檔。

  5.1)開啟“連結程式”*“常規”屬性視窗,在“附加庫目錄”欄位增加“..\$(Configuration);$(CUDA_PATH_V4_0)\lib\$(Platform);”。


▲圖 10 設定附加庫目錄

  5.2)開啟“連結程式”*“輸入”屬性視窗,在“附加依賴”欄位增加“cudart.lib;HelloWorldCuda.lib;”。


▲圖 11 設定附加依賴

  5.3)開啟“C/C++”*“常規”屬性視窗,在“附加元件封裝含目錄”欄位增加“..\HelloWorldCuda\; $(CUDA_PATH_V4_0)\Include;”。


▲圖 12 設定附加元件封裝含目錄

  5.4)單擊“項目”*“項目依賴”菜單選項,選中HelloWorldCuda複選框,讓CUDA項目成為Win32主應用程式項目的依賴。


▲圖 13 讓HelloWorldCuda成為HelloWorld項目的依賴

  6)現在是時候寫一點代碼了。CUDA 4.0引入了Thrust,因此我計劃在給出的例子中使用Thrust,如果你沒有使用4.0,那你需要下載最新的Thrust庫,將其拷貝到CUDA SDK包括檔案“%CUDA_PATH%\include\thrust”下。

  我們所舉的例子是一個Hello World應用程式,因此代碼非常簡單,它是Thrust項目首頁上第一個樣本的變種。

  添加下面的類聲明到Hello.h檔案中,大多數代碼修複了編譯警告,需要做的是聲明一個使用host_vector構造的類,然後有一些方法執行CUDA代碼並返回結果。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.