首先宣告,本文借鑑自:
所以,可參考鏈結的博文。但原文有個瑕疵就是,cublas.lib錯寫成了cudlas.lib。
其次,我還是記下我的cuda8.0的安裝和測試過程,是為備忘。
步驟如下:
1.2 安裝。雙擊cuda_7.5.18_win10.exe,一步步來就好。
2.vs2013配置和測試
2.1 重啟計算機。關於是否新增環境變數,筆者安裝的時候系統已自動新增好對應的環境變數,如果沒有,請檢視上文鏈結的博文;
2.2 配置vs。也請參考上述博文,不再贅述。
3.測試
上兩個測試檔案。
3.1
1 #include< stdio.h>2 #include "
cuda_runtime.h
"3 #include "
device_launch_parameters.h"4
bool
initcuda() 5
13int
i; 14
for(i = 0; i < count; i++) 15
23}
24}
25if(i ==count) 26
30cudasetdevice(i);
31return
true
; 32
} 33
34int
main() 35
40 printf("
helloworld, cuda has been initialized.\n
");
41return0;
42 }
3.2
1//cuda runtime 庫 + cublas 庫
2 #include "
cuda_runtime.h
"3 #include "
cublas_v2.h"4
5 #include 6 #include 7
8using
namespace
std;910
//定義測試矩陣的維度
11int
const m = 5;12
intconst n = 10;13
14int
main()
1532
33//
列印待測試的矩陣
34 cout << "
矩陣 a :
"<35for (int i=0; i)
39 cout <40 cout << "
矩陣 b :
"<41for (int i=0; i)
45 cout <4647
/*48
** gpu 計算矩陣相乘
49*/
5051
//建立並初始化 cublas 庫物件
52cublashandle_t handle;
53 status = cublascreate(&handle);
5455
if (status !=cublas_status_success)
5660
getchar ();
61return
exit_failure;62}
6364
float *d_a, *d_b, *d_c;
65//
在 視訊記憶體 中為將要計算的矩陣開闢空間
66cudamalloc (
67 (void**)&d_a, //
指向開闢的空間的指標
68 n*m * sizeof(float) //
需要開闢空間的位元組數
69);
70cudamalloc (
71 (void**)&d_b,
72 n*m * sizeof(float
)
73);
7475
//在 視訊記憶體 中為將要存放運算結果的矩陣開闢空間
76cudamalloc (
77 (void**)&d_c,
78 m*m * sizeof(float
)
79);
8081
//將矩陣資料傳遞進 視訊記憶體 中已經開闢好了的空間
82cublassetvector (
83 n*m, //
要存入視訊記憶體的元素個數
84sizeof(float), //
每個元素大小
85 h_a, //
主機端起始位址
861, //
連續元素之間的儲存間隔
87 d_a, //
gpu 端起始位址881
//連續元素之間的儲存間隔
89);
90cublassetvector (
91 n*m,
92sizeof(float
), 93
h_b, 941
, 95
d_b, 961
97);
9899
//同步函式
100cudathreadsynchronize();
101102
//傳遞進矩陣相乘函式中的引數,具體含義請參考函式手冊。
103float a=1; float b=0
;104
//矩陣相乘。該函式必然將陣列解析成列優先陣列
105cublassgemm (
106 handle, //
blas 庫物件
107 cublas_op_t, //
矩陣 a 屬性引數
108 cublas_op_t, //
矩陣 b 屬性引數
109 m, //
a, c 的行數
110 m, //
b, c 的列數
111 n, //
a 的列數和 b 的行數
112 &a, //
表示式的 α 值
113 d_a, //
a 在視訊記憶體中的位址
114 n, //
lda115 d_b, //
b 在視訊記憶體中的位址
116 m, //
ldb117 &b, //
表示式的 β 值
118 d_c, //
c 在視訊記憶體中的位址(結果矩陣)
119 m //
ldc120
);121
122//
同步函式
123cudathreadsynchronize();
124125
//從 視訊記憶體 中取出運算結果至 記憶體中去
126cublasgetvector (
127 m*m, //
要取出元素的個數
128sizeof(float), //
每個元素大小
129 d_c, //
gpu 端起始位址
1301, //
連續元素之間的儲存間隔
131 h_c, //
主機端起始位址
1321
//連續元素之間的儲存間隔
133);
134135
//列印運算結果
136 cout << "
計算結果的轉置 ( (a*b)的轉置 ):
"<137138
for (int i=0;i)
142143
//清理掉使用過的記憶體
144free
(h_a);
145free
(h_b);
146free
(h_c);
147cudafree (d_a);
148cudafree (d_b);
149cudafree (d_c);
150151
//釋放 cublas 庫物件
152cublasdestroy (handle);
153154
getchar();
155156
return0;
157 }
特別注意,是cublas.lib,不是cudlas.lib
祝好運。
同時安裝CUDA8 0和CUDA9 0
tensorflow1.5版本竟然不支援cuda8.0了 解除安裝是不可能解除安裝的 建議選擇使用.run檔案安裝,因為使用.deb可能會將已經安裝的較新的顯示卡驅動替換。對於cudnn7.0的安裝方式選項,我選擇的是cudnn v7.0.5 library for linux,對應於cudnn 9...
語義SLAM(二)cuda8 0安裝
注 如果你確定你已經正確安裝好nvidia顯示卡驅動,那就不必按ctrl alt f1進入命令列模式,直接在圖形化介面安裝即可,親測可行。cd home sudo chmod 777 cuda 8.0.61 375.26 linux.run 給使用者增加讀寫和執行的許可權 sudo cuda 8.0...
Ubuntu16 06和CUDA8 0的安裝
1.安裝ubuntu16.04,然後製作u 盤啟動盤 推薦製作軟體u 啟動uefi 相比較於14.04 的版本,16.04 不會出現 acpi pcc probefailed 不會出現大問題。2.安裝nvidia的驅動 重點 經過了無數次的重灌系統和重啟,終於摸出了一條可以成功安裝驅動的路子了。總的...