1. 重庆云诚科技 > 互联网资讯 >

﹝cuda编程教程﹞Cuda安装教程

导读如何安装CUDA本文贡献者:【妞,别以为爷不敢动你】 ,解答(cuda编程教程)的问题,如果问题解决,可以关注本站!贡献者回答首先验证你是否有nvidia的显卡(developer.nvidia.com/cuda-gpus这个...

本文中提到了2个关于cuda编程教程的相关看点,同时还对Cuda安装教程也有不同的看法,希望本文能为您找到想要的答案,记得关注哦!

如何安装CUDA

本文贡献者:【妞,别以为爷不敢动你】 ,解答(cuda编程教程)的问题,如果问题解决,可以关注本站!

贡献者回答首先验证你是否有nvidia的显卡(developer.nvidia.com/cuda-gpus这个网站查看你是否有支持gpu的显卡):

[plain] view plain copy

$ lspci | grep -i nvidia

查看你的linux发行版本(主要是看是64位还是32位的):

[plain] view plain copy

$ uname -m && cat /etc/*release

看一下gcc的版本:

[plain] view plain copy

$ gcc --version

首先下载nvidia cuda的仓库安装包(我的是ubuntu 14.0464位,所以下载的是ubuntu14.04的安装包,如果你是32位的可以参看具体的地址,具体的地址是)

[plain] view plain copy

wget developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_6.5-14_amd64.deb

下载完成之后可以使用如下命令安装它,注意文件名修改为cuda-repo-ubuntu1404_6.5-14_amd64.deb

[plain] view plain copy

sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb

安装好仓库之后,就可以更新你的本地仓库。

[plain] view plain copy

sudo apt-get update

最后开始安装cuda以及显卡驱动(安装cuda的同时就会把显卡驱动也全部安装好,这个真的很方便。但是下载的时间有点长。)

[plain] view plain copy

sudo apt-get install cuda

需要注意的是,我这里提供的安装方法跟网络上各种安装方法都不一样,他们的方法往往很复杂

主要是因为:(1)有些教程是手工安装显卡的驱动程序,手工屏蔽系统的默认开源的驱动

(2)安装cuda也是手工进行

使用这个方法的时候千万要注意几个问题:

(1)cuda6.5已经不支持老旧的显卡了所以sm11 等等都必须删除。可以参考我的另一个文章,关于编译opencv3.0的

(2)ubuntu14.04是64位的,并且不要一开始就更新系统补丁什么的,因为系统更新过之后,再安装显卡驱动就会无法进入图形界面,我查看了相关的日志发现是卡在了dbus那边。所以,我建议一安装好ubuntu 14.04就不要更新系统补丁。

安装完之后你需要设置环境变量:

[plain] view plain copy

$ export PATH=/usr/local/cuda-6.5/bin:$PATH

$ export LD_LIBRARY_PATH=/usr/local/cuda-6.5/lib64:$LD_LIBRARY_PATH

设置完毕之后,你还可以选择是否安装cuda附带的示例代码(<dir>表示你要安装的位置,你可以将<dir>替换成~):

[plain] view plain copy

$ cuda-install-samples-6.5.sh <dir>

接下来做一些验证工作:

查看显卡的驱动版本

[plain] view plain copy

cat /proc/driver/nvidia/version

查看nvcc编译器的版本

[plain] view plain copy

nvcc -V i

编译cuda的示例代码:

[plain] view plain copy

cd ~/NVIDIA_CUDA-6.5_Samples

然后make一下编译代码。

进入bin路径运行devicequery

[plain] view plain copy

cd ~/NVIDIA_CUDA-6.5_Samples/bin

[html] view plain copy

./ deviceQuery

具体的安装过程可以参考英文。

这里必须要强调的是一定要是新的ubuntu14.04 在安装显卡驱动之前千万别更新,否则就无法进入桌面,这个问题困扰了我很久了。重装了是十几遍的系统。

这篇guide只是一些零散的安装步骤以及给后来人对于cuda的一些坑上的提醒。

以上就是重庆云诚科技小编分享贡献者:(妞,别以为爷不敢动你)解答的关于“如何安装CUDA”的问题了,不知是否已经解决你的问题?如果没有,下一篇内容可能是你想要的答案,下面继续解惑下文用户【十里温柔】贡献的“cuda8.0怎么安装”的一些相关疑问做出分析与解答,如果能找到你的答案,可以关注本站。

如何安装CUDA

cuda8.0怎么安装

本文贡献者:【十里温柔】 ,解答(cuda编程教程)的问题,如果问题解决,可以关注本站!

贡献者回答步骤如下:

1.下载安装CUDA:

1.1 下载。请到 cuda官网,选择合适的版本。如果版本不合适,安装的时候会提示的,但还是下载最新的比较好;

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 {

6 int count;

7 cudaGetDeviceCount(&count);

8 if(count == 0)

9 {

10 fprintf(stderr, "There is no device.\n");

11 return false;

12 }

13 int i;

14 for(i = 0; i < count; i++)

15 {

16 cudaDeviceProp prop;

17 if(cudaGetDeviceProperties(&prop, i) == cudaSuccess)

18 {

19 if(prop.major >= 1)

20 {

21 break;

22 }

23 }

24 }

25 if(i == count)

26 {

27 fprintf(stderr, "There is no device supporting CUDA 1.x.\n");

28 return false;

29 }

30 cudaSetDevice(i);

31 return true;

32 }

33

34 int main()

35 {

36 if(!InitCUDA())

37 {

38 return 0;

39 }

40 printf("HelloWorld, CUDA has been initialized.\n");

41 return 0;

42 }

3.2

1 // CUDA runtime 库 + CUBLAS 库

2 #include "cuda_runtime.h"

3 #include "cublas_v2.h"

4

5 #include <time.h>

6 #include <iostream>

7

8 using namespace std;

9

10 // 定义测试矩阵的维度

11 int const M = 5;

12 int const N = 10;

13

14 int main()

15 {

16 // 定义状态变量

17 cublasStatus_t status;

18

19 // 在 内存 中为将要计算的矩阵开辟空间

20 float *h_A = (float*)malloc (N*M*sizeof(float));

21 float *h_B = (float*)malloc (N*M*sizeof(float));

22

23 // 在 内存 中为将要存放运算结果的矩阵开辟空间

24 float *h_C = (float*)malloc (M*M*sizeof(float));

25

26 // 为待运算矩阵的元素赋予 0-10 范围内的随机数

27 for (int i=0; i<N*M; i++) {

28 h_A[i] = (float)(rand()%10+1);

29 h_B[i] = (float)(rand()%10+1);

30

31 }

32

33 // 打印待测试的矩阵

34 cout << "矩阵 A :" << endl;

35 for (int i=0; i<N*M; i++){

36 cout << h_A[i] << " ";

37 if ((i+1)%N == 0) cout << endl;

38 }

39 cout << endl;

40 cout << "矩阵 B :" << endl;

41 for (int i=0; i<N*M; i++){

42 cout << h_B[i] << " ";

43 if ((i+1)%M == 0) cout << endl;

44 }

45 cout << endl;

46

47 /*

48 ** GPU 计算矩阵相乘

49 */

50

51 // 创建并初始化 CUBLAS 库对象

52 cublasHandle_t handle;

53 status = cublasCreate(&handle);

54

55 if (status != CUBLAS_STATUS_SUCCESS)

56 {

57 if (status == CUBLAS_STATUS_NOT_INITIALIZED) {

58 cout << "CUBLAS 对象实例化出错" << endl;

59 }

60 getchar ();

61 return EXIT_FAILURE;

62 }

63

64 float *d_A, *d_B, *d_C;

65 // 在 显存 中为将要计算的矩阵开辟空间

66 cudaMalloc (

67 (void**)&d_A, // 指向开辟的空间的指针

68 N*M * sizeof(float) //需要开辟空间的字节数

69 );

70 cudaMalloc (

71 (void**)&d_B,

72 N*M * sizeof(float)

73 );

74

75 // 在 显存 中为将要存放运算结果的矩阵开辟空间

76 cudaMalloc (

77 (void**)&d_C,

78 M*M * sizeof(float)

79 );

80

81 // 将矩阵数据传递进 显存 中已经开辟好了的空间

82 cublasSetVector (

83 N*M, // 要存入显存的元素个数

84 sizeof(float), // 每个元素大小

85 h_A, // 主机端起始地址

86 1, // 连续元素之间的存储间隔

87 d_A, // GPU 端起始地址

88 1 // 连续元素之间的存储间隔

89 );

90 cublasSetVector (

91 N*M,

92 sizeof(float),

93 h_B,

94 1,

95 d_B,

96 1

97 );

98

99 // 同步函数

100 cudaThreadSynchronize();

101

102 // 传递进矩阵相乘函数中的参数,具体含义请参考函数手册。

103 float a=1; float b=0;

104 // 矩阵相乘。该函数必然将数组解析成列优先数组

105 cublasSgemm (

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, // lda

115 d_B, // B 在显存中的地址

116 M, // ldb

117 &b, // 运算式的 β 值

118 d_C, // C 在显存中的地址(结果矩阵)

119 M // ldc

120 );

121

122 // 同步函数

123 cudaThreadSynchronize();

124

125 // 从 显存 中取出运算结果至 内存中去

126 cublasGetVector (

127 M*M, // 要取出元素的个数

128 sizeof(float), // 每个元素大小

129 d_C, // GPU 端起始地址

130 1, // 连续元素之间的存储间隔

131 h_C, // 主机端起始地址

132 1 // 连续元素之间的存储间隔

133 );

134

135 // 打印运算结果

136 cout << "计算结果的转置 ( (A*B)的转置 ):" << endl;

137

138 for (int i=0;i<M*M; i++){

139 cout << h_C[i] << " ";

140 if ((i+1)%M == 0) cout << endl;

141 }

142

143 // 清理掉使用过的内存

144 free (h_A);

145 free (h_B);

146 free (h_C);

147 cudaFree (d_A);

148 cudaFree (d_B);

149 cudaFree (d_C);

150

151 // 释放 CUBLAS 库对象

152 cublasDestroy (handle);

153

154 getchar();

155

156 return 0;

157 }

最后,你如何评价[cuda编程教程]?欢迎下面互动!想了解更多精彩内容,快来关注本站吧。

推荐文章:

  • 膜的组词和部首,膜的组词和拼音是什么
  • 亲字组词100个 亲字的组词有
  • 酬谢是什么意思,定当酬谢是什么意思
  • 异的组词和部首,株的组词和部首
  • 箭组词和拼音 耸组词和拼音部首
  • 有志不在年高的意思-有志不在年高的意思雨来表达了
  • 繁衍的意思 繁衍的意思简单解释
  • 彤组词,胀组词和拼音
  • 血泊的拼音 泊的拼音
  • 螺组词拼音 螺的组词和拼音
  • 本文由网上采集发布,不代表我们立场,转载联系作者并注明出处:https://www.cqycseo.com/zixun/6038.html

    联系我们