CUDA與已有的VS項目結合__程式設計

來源:互聯網
上載者:User

先建立一個簡單的控制台應用程式,項目名稱為Test00301,如下圖所示:

然後在項目中建立一個名為Test01.cu檔案,如下圖所示:

然後在方案總管中選擇該項目並點擊右鍵,在彈出的菜單中選擇“產生自訂…”,如下圖所示:

在彈出的“Visual C++產生自訂項檔案”表單上勾選CUDA4.2(或其它版本),如下圖所示:

然後在方案總管中選擇檔案Test.cu並點擊右鍵,在彈出的菜單中選擇“屬性”,如下圖所示:

在彈出的屬性頁面上設定“項類型”為CUDA C/C++,如下圖所示:

最後,開啟項目的屬性頁面,如下圖所示,在“配置屬性”——“連結器”——“輸入”中的“附件依賴項”裡面添加cudart.lib(中間採用分號;串連),如下圖所示:

至此,就可以在Test.cu檔案中添加cuda代碼並能通過編譯,現在Test.cu中添加如下代碼(用於擷取顯卡資訊):

#include <stdio.h>#include <iostream>#include <cuda_runtime.h> //CUDA執行階段程式庫標頭檔using namespace std;//顯示裝置資訊extern "C" void showDeviceProp(void){int i,count;    cudaDeviceProp prop;cudaError_t cudaStatus=cudaGetDeviceCount(&count);if(cudaStatus == cudaSuccess) {cout<<"共有裝置數目:"<<count<<"\n";if(count>0){for(i=0;i<count;i++){cudaGetDeviceProperties(&prop,i);//擷取裝置的屬性資訊cout<<"\n第"<<i+1<<"個裝置資訊:\n";cout<<"裝置名稱:"<<prop.name<<"\n";cout<<"總記憶體:"<<prop.totalGlobalMem/1048576<<"M\n";cout<<"常量記憶體:"<<prop.totalConstMem<<"位元組\n";cout<<"裝置中處理器數目:"<<prop.multiProcessorCount<<"個\n";cout<<"每個線程塊最多包含線程數目:"<<prop.maxThreadsPerBlock<<"個\n";cout<<"一個線程格中可包含的線程塊數目:I="<< prop.maxGridSize[0]<<" J="<<prop.maxGridSize[1]<<" K="<<prop.maxGridSize[2]<<"\n";cout<<"多維線程塊中可以包含的最大線程數目:I="<< prop.maxThreadsDim[0]<<" J="<<prop.maxThreadsDim[1]<<" K="<<prop.maxThreadsDim[2]<<"\n";}}}else{cout<<"沒有擷取到裝置資訊。請檢查電腦是否具有支援CUDA的顯卡裝置以及CUDA驅動程式版本是否需要更新。\n";}}

然後在Test00301.cpp中添加該cu檔案中函數的外部參考,如下:

// Test00301.cpp : 定義控制台應用程式的進入點。//#include "stdafx.h"#include <stdio.h>#include <stdlib.h>extern "C" void showDeviceProp();int _tmain(int argc, _TCHAR* argv[]){//顯示裝置屬性資訊showDeviceProp();//暫停system("pause");return 0;}

運行程式,其結果如下圖所示:

值得注意的是,在cpp或h檔案中調用cu或cuh中定義的函數,直接採用include的方式包含然後調用暫時是行不通的,可以採用extern的方式將cu或cuh中定義的CUDA函數設定為公用函數,然後在cpp或h中聲明這個extern函數,最後在cpp或h檔案中需要的地方調用即可。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.