導航:首頁 > 源碼編譯 > cudabyexample源碼

cudabyexample源碼

發布時間:2023-03-24 10:13:11

1. cuda編程問題 運行出錯

Compiling CUDA source file ..\..\src\caffe\layers\bnll_layer.cu...
1>
1> D:\Caffe\WindowsCaffe_detect\Caffe_Windows_Detection-master\build\MSVC2013>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" -gencode=arch=compute_35,code=\"sm_35,compute_35\" -gencode=arch=compute_52,code=\"sm_52,compute_52\" --use-local-env --cl-version 2013 -ccbin "D:\gzSoft\vs2013\VC\bin\x86_amd64" -I../../3rdparty/include -I../../src -I../../include -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\cuda\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include" --keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile -cudart static --verbose --keep -Xcudafe "--diag_suppress=exception_spec_override_incompat --diag_suppress=useless_using_declaration --diag_suppress=field_without_dll_interface" -D_SCL_SECURE_NO_WARNINGS -DGFLAGS_DLL_DECL= -D_VARIADIC_MAX=10 -DWIN32 -D_DEBUG -D_CONSOLE -D_UNICODE -DUNICODE -Xcompiler "/EHsc /W1 /nologo /Od /Zi /RTC1 /MDd " -o Debug\bnll_layer.cu.obj "D:\Caffe\WindowsCaffe_detect\Caffe_Windows_Detection-master\src\caffe\layers\bnll_layer.cu"
1> #$ _SPACE_=
1> #$ _CUDART_=cudart
1> #$ _HERE_=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin
1> #$ _THERE_=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin
1> #$ _TARGET_SIZE_=
1> #$ _TARGET_DIR_=
1> #$ _TARGET_SIZE_=64
1> #$ _WIN_PLATFORM_=x64
1> #$ TOP=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin/..
1> #$ NVVMIR_LIBRARY_DIR=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin/../nvvm/libdevice
1> #$ PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin/../open64/bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin/../nvvm/bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin/../lib;D:\gzSoft\vs2013\VC\bin\x86_amd64;D:\gzSoft\vs2013\VC\bin;C:\Program Files (x86)\Windows Kits\8.1\bin\x86;;C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools;D:\gzSoft\vs2013\Common7\Tools\bin;D:\gzSoft\vs2013\Common7\tools;D:\gzSoft\vs2013\Common7\ide;C:\Program Files (x86)\HTML Help Workshop;;C:\Program Files (x86)\MSBuild\12.0\bin\;C:\Windows\Microsoft.NET\Framework\v4.0.30319\;;C:\Program Files\DahuaTech\MV Viewer\Runtime\x64\;C:\Program Files\DahuaTech\MV Viewer\Runtime\x64\GenICam_v2_4\bin\Win64_x64\;C:\Program Files\DahuaTech\MV Viewer\Runtime\Win32\;C:\Program Files\DahuaTech\MV Viewer\Runtime\Win32\GenICam_v2_4\bin\Win32_i86\;C:\Program Files\Basler\pylon 4\pylon\bin\x64;C:\Program Files\Basler\pylon 4\pylon\bin\Win32;C:\Program Files\Basler\pylon 4\genicam\Bin\Win64_x64;C:\Program Files\Basler\pylon 4\genicam\Bin\Win32_i86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;D:\gzSoft\opencv2.4.11\build_Sour\vc11\bin;D:\gzSoft\opencv2.4.10\build_Sour\vc10\bin;D:\gzSoft\qt5.2.1\5.2.1\msvc2012\bin;D:\MinGW\MinGW\bin;D:\gzSoft\vs2012\VC\bin;D:\gzSoft\javaTool\jdk1.7\bin;D:\gzSoft\javaTool\jdk1.7\jre\bin;D:\gzSoft\matlab\runtime\win64;D:\gzSoft\matlab\bin;D:\gzSoft\matlab\polyspace\bin;D:\software\eslib\bin;D:\gzSoft\lualib;D:\gzSoft\halcon12\bin\x86sse2-win32;D:\gzSoft\halcon12\FLEXlm\x86sse2-win32 ;C:\Program Files (x86)\Toshiba Teli\TeliCamSDK\TeliCamApi\bin\x86;C:\Program Files (x86)\CMake\bin\;D:\Program\opencv_pro\opencv-3.3.0\opencv-3.3.0\bulid\install\x86\vc11\bin;D:\gzSoft\doxygen\bin;D:\gzSoft\python2.7.10;D:\gzSoft\python2.7.10\Scripts;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;D:\Caffe\WindowsCaffeProject\caffe-master\Build\x64\Debug;
1> #$ INCLUDES="-IC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin/../include"
1> #$ LIBRARIES= "/LIBPATH:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin/../lib/x64"
1> #$ CUDAFE_FLAGS=--sdk_dir "C:\Program Files (x86)\Windows Kits\8.1"
1> #$ PTXAS_FLAGS=
1> bnll_layer.cu
1> nvcc fatal : Failed to create the host compiler response file 'x64/Debug/bnll_layer.compute_52.cpp1.ii.res'
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\CUDA 7.5.targets(604,9): error MSB3721: 命令「"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" -gencode=arch=compute_35,code=\"sm_35,compute_35\" -gencode=arch=compute_52,code=\"sm_52,compute_52\" --use-local-env --cl-version 2013 -ccbin "D:\gzSoft\vs2013\VC\bin\x86_amd64" -I../../3rdparty/include -I../../src -I../../include -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\cuda\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include" --keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile -cudart static --verbose --keep -Xcudafe "--diag_suppress=exception_spec_override_incompat --diag_suppress=useless_using_declaration --diag_suppress=field_without_dll_interface" -D_SCL_SECURE_NO_WARNINGS -DGFLAGS_DLL_DECL= -D_VARIADIC_MAX=10 -DWIN32 -D_DEBUG -D_CONSOLE -D_UNICODE -DUNICODE -Xcompiler "/EHsc /W1 /nologo /Od /Zi /RTC1 /MDd " -o Debug\bnll_layer.cu.obj "D:\Caffe\WindowsCaffe_detect\Caffe_Windows_Detection-master\src\caffe\layers\bnll_layer.cu"」已退出,返回代碼為 1。
========== 生成: 成功 0 個,失敗 1 個,最新 0 個,跳過 0 個 ==========

2. GPU高性能運算之CUDA,CUDA編程報錯,大牛幫忙解答啊

唉,是自己粗心大意,忘了給main函數入口了,在主機端代碼中加上函數聲明和主函數就行了:
//函數聲明
void runTest(int argc, char** argv);
//主函數
int main(int argc, char** argv)
{
runTest(argc,argv);
CUT_EXIT(argc,argv); //退出CUDA
}

3. 如何使用cudaMallocPitch和cudaMemcpy2D

有時候,我們需要在比較大的項目中調用CUDA,這就涉及到MFC+CUDA的環境配置問題,以矩陣相乘為例,在MFC中調用CUDA程序。我們參考羅振東[email protected](國防科學技術大學計算機學院)的方法。

環境: Windows 7 SP1
Microsoft Visual Studio 2010
CUDA 5.0

步驟:

1.首先建立一個空的名叫Matrix Multiplication_KahanMFC的「FCM應用程序」項目:

點擊「確定」,這時彈出如下窗口

我們需要對默認項目進行一些修改,點擊「下一步」,我們設置一個空的MFC項目,選擇「單個文檔」和「MFC標准」:

點擊「完成」。
2.創建CUDA的調用介面函數及其頭文件
(1)頭文件
「添加」--> 「新建項」-->「Visual C++」-->「頭文件(.h)」-->「名稱」-->「CUDA_Transfer.h」 -->「添加」,如下圖:

在CUDA_Transfer.h中添加如下代碼:
//CUDA_Transfer.h

#include
#include "math.h"

using namespace std;

int run_cuda(float* GPU, float* CPU);
如下圖所示:

(2)函數
按照和增加頭文件相似的方法,添加函數。「添加」--> 「新建項」-->「Visual C++」-->「C++文件(.cpp)」 -->「名稱」-->「CUDA_Transfer.cpp」 -->「添加」,如下圖:

在CUDA_Transfer.cpp中添加如下代碼:
//CUDA_Transfer.cpp
#include "CUDA_Transfer.h"
#include "stdafx.h"

extern "C" int runtest(float* GPU, float* CPU);

int run_cuda(float* GPU, float* CPU)
{
runtest(GPU,CPU);
return 0;
}
如下圖所示:

需要注意的是在MFC的文件中是不能包含(include).cu文件的,會報錯,所以我們使用extern "C"的方式來實現函數的調用。
3. 創建存放cuda 代碼的篩選器,名為CUDA
「添加」--> 「新建篩選器」,重命名為CUDA

4. 在篩選器CUDA中創建一個CUDA源代碼文件,kernel.cu。
我們直接把已經寫好的矩陣相乘的程序kernel.cu復制到項目目錄下,添加到CUDA篩選器中去。
添加」--> 「現有項」-->「kernel.cu」--> 「添加」:

把kernel.cu的int main()函數改為extern "C" int runtest(float* GPU, float* CPU),兩個參數用來獲得GPU和CPU計算所使用的時間,單位為毫秒。
5. 右擊項目-->「生成自定義」:

在彈出的窗口中勾選CUDA 5.0(.target,.props)。如果使用其他版本的CUDA,就勾選對應的版本:

點擊「確定」。
6. 修改 kernel.cu的編譯鏈接設置
在解決方案資源管理器中右擊kernel.cu文件-->「屬性」,在彈出窗口中-->「常規」-->「項類型」的下拉列表中選擇

點擊「應用」後,「常規」下方會出現一個「CUDA C/C++」的設置,沒有特殊需求,不需要修改,點擊「確定」。

7.修改工程設置。

工程設置需要修改「鏈接器」-->「輸入」-->「附加依賴項」和「生成事件」-->「預先生成事件」-->「命令行」。需要設置的參數比較多,我們採用比較簡單的方法。

我們新建一個空的CUDA項目,在這個空CUDA項目的項目屬性中找到「鏈接器」-->「輸入」-->「附加依賴項」,把「附加依賴項」中所包含的項復制到我們的MFC項目中:

按照同樣的方法,設置「生成事件」-->「預先生成事件」-->「命令行」:

設置完成後,點擊「確定」。
8.修改MFC文件,完成調用。
我們需要在MFC中調用CUDA程序,顯示出GPU和CPU計算兩個1024*1024矩陣相乘所消耗的時間。
在Matrix Multiplication_KahanMFCView.cpp中包含(include)"CUDA_Transfer.h"
文件;在CMatrixMultiplication_KahanMFCView::OnDraw(CDC* pDC)中添加如下代碼:

float GPU;
float CPU;
run_cuda(&GPU, &CPU);

CString strGPU,strCPU;
strGPU.Format(_T("GPU:%f \n"),GPU);
strCPU.Format(_T("CPU:%f \n"),CPU);
pDC->TextOut(0,0,strGPU);
pDC->TextOut(0,30,strCPU);

如圖所示:

然後重新生成解決方案,運行。
計算要花費一些時間,需要等待,測試的時候可以把矩陣大小改小一些。因為把程序加到了OnDraw中,所以每當刷新窗口時候(例如調整窗口大小時),都會調用。由於計算耗時比較長,窗口看起來會像無響應一樣,等計算完成就好了。
運行的結果如下:

在矩陣比較大的情況下,GPU的加速效果明顯,GPU耗時只需要620ms,而CPU需要23438ms,要花費將近40倍的時間。

4. cuda程序編譯方面,各位都有哪些方法和經驗

首先創建一個soTest的文件夾,裡面有兩個文件deviceQuery.cpp, t.cpp。 12345678deviceQuery.cpp的代碼可以參考CUDASDK t.cpp的源代碼如下: #include int cudev(int argc, char** argv);int main(int argc, char ** argv){ cudev(argc,argv); return 0;}然後在當前目錄下輸下命令

閱讀全文

與cudabyexample源碼相關的資料

熱點內容
安裝殺毒軟體出現壓縮或加密 瀏覽:973
方舟端游伺服器怎麼搜索房間 瀏覽:71
單片機學51好還是stm8好 瀏覽:798
手中的app如何隱藏 瀏覽:1001
安卓什麼壁紙軟體號 瀏覽:436
java設置內存大小 瀏覽:434
php循環匹配 瀏覽:325
技巧pdf 瀏覽:481
單片機斷程序怎麼解決 瀏覽:160
如何製作APP的圖片 瀏覽:506
php大小排序 瀏覽:550
linuxkerberos 瀏覽:126
暗黑破壞神3如何下載亞洲伺服器 瀏覽:953
linux中ftp伺服器地址怎麼看 瀏覽:438
ansys命令流do 瀏覽:122
單片機6502 瀏覽:765
自助洗車有什麼app 瀏覽:937
程序員離職率多少 瀏覽:322
程序員那麼可愛電視劇今天沒更新 瀏覽:337
我的世界地形演算法 瀏覽:344