万网买好域名后如何开通网站,wordpress 评论小工具,24小时资源视频在线观看,甘肃兰州市1.1 安装cuda
首先官网下载安装包#xff0c;这个就不细说了 #xff0c;我下的是这个版本cuda_8.0.61_win10.exe#xff0c;#xff0c;注意win7和win10版本要对应#xff0c;千万别弄错了 之后双击会出现如下截图#xff0c;解压完以后一直点下一步如下图出现这个等半个…
1.1 安装cuda
首先官网下载安装包这个就不细说了 我下的是这个版本cuda_8.0.61_win10.exe注意win7和win10版本要对应千万别弄错了 之后双击会出现如下截图解压完以后一直点下一步如下图出现这个等半个小时左右就好了
安装结束后开始配置系统环境变量
win10可以这么操作wins 搜索环境自动匹配出系统环境变量1.2 配置环境变量打开环境变量后如下图如图中点击环境变量的就是了打开后如下图设置点击新建会出现CUDA_PATH C:\Program Files\NVIDIA GPUComputing Toolkit\CUDA\v8.0CUDA_PATH_V7_5 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0CUDA_SDK_PATH C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0CUDA_LIB_PATH %CUDA_PATH%\lib\x64CUDA_BIN_PATH %CUDA_PATH%\binCUDA_SDK_BIN_PATH %CUDA_SDK_PATH%\bin\win64CUDA_SDK_LIB_PATH %CUDA_SDK_PATH%\common\lib\x64
将上面的变量名和变量值依次填入
比如依次填入后找到path如图依次点击新建,将 %CUDA_LIB_PATH%%CUDA_BIN_PATH%%CUDA_SDK_BIN_PATH%%CUDA_SDK_LIB_PATH%依次填入填入后效果如上图所示。全部安装好后一定要记得重启这里就将cuda 在win10中如何配置的完成了1.4 VS2013 CUDA7.5配置其他版本VS、CUDA都类似· 1.打开vs2013并创建一个空win32程序,创建一个cuda_samples的解决方案和cuda_test1项目· 2.右键源文件–添加–新建项如下图所示· 3.选择NIVIDIA CUDA7.5中 CUDA C/Cfile并在名称那填上cuda_main· 4.选择cuda_test1点击右键–项目依赖项–自定义生成· 5.选择CUDA7.5· 6.点击cuda_main.cu的属性·
1. 在配置属性–常规–项类型–选择“CUDA C/C”1.5 项目配置
1.5.1 x64
1.5.1.1 包含目录配置
· 1.右键点击项目属性–属性–配置属性–VC目录–包含目录
· 2.添加包含目录 $(CUDA_PATH)\include
1.5.1.2 库目录配置
· 1.VC目录–库目录
· 2.添加库目录 $(CUDA_PATH)\lib\x64
1.5.1.3 依赖项
·
1. 配置属性–连接器–输入–附加依赖项
·
1. 添加库文件 cublas.lib cuda.lib cudadevrt.lib cudart.lib cudart_static.lib nvcuvid.lib OpenCL.lib
注意添加nvcuvenc.lib库文件编译时报找不到该文件的错误。去掉后程序也能运行
1.5.2 x86(win32)
1.5.2.1 包含目录配置
·
1. 右键点击项目属性–属性–配置属性–VC目录–包含目录
·
1. 添加包含目录 $(CUDA_PATH)\include
1.5.2.2 库目录配置
· 1.VC目录–库目录
· 2.添加库目录 $(CUDA_PATH)\lib\Win32
1.5.2.3 依赖项
·
1. 配置属性–连接器–输入–附加依赖项
·
1. 添加库文件 cuda.lib cudadevrt.lib cudart.lib cudart_static.lib nvcuvid.lib OpenCL.lib
备注 win32和x64位的lib库有差别配置时需注意除了上述添加的lib文件外x64还有其他的lib库文件如cublas.lib,如运行1.6的样例时要添加这个库不然会编译失败。
1.6 样例
// CUDA runtime 库 CUBLAS 库
#includecuda_runtime.h
#includecublas_v2.h
#include time.h
#includeiostream using namespace std;
// 定义测试矩阵的维度
int const M 5;
int const N 10;
int main()
{
// 定义状态变量
cublasStatus_t status;
// 在内存中为将要计算的矩阵开辟空间
float *h_A (float*)malloc(N*M*sizeof(float));
float *h_B (float*)malloc(N*M*sizeof(float));
// 在 内存 中为将要存放运算结果的矩阵开辟空间
float *h_C (float*)malloc(M*M*sizeof(float));
// 为待运算矩阵的元素赋予 0-10 范围内的随机数
for (int i 0;iN*M; i) {h_A[i] (float)(rand() % 10 1);h_B[i] (float)(rand() % 10 1);
}
// 打印待测试的矩阵
cout 矩阵 A : endl;
for (int i 0;iN*M; i){cout h_A[i] ;if ((i 1) % N 0) cout endl;
}
cout endl;
cout 矩阵 B : endl;
for (int i 0;iN*M; i){cout h_B[i] ;if ((i 1) % M 0) cout endl;
}
cout endl;
/*** GPU 计算矩阵相乘*/
// 创建并初始化 CUBLAS 库对象
cublasHandle_t handle;
status cublasCreate(handle);
if (status ! CUBLAS_STATUS_SUCCESS)
{if (status CUBLAS_STATUS_NOT_INITIALIZED) {cout CUBLAS 对象实例化出错 endl;}getchar();return EXIT_FAILURE;
}
float *d_A, *d_B, *d_C;
// 在 显存 中为将要计算的矩阵开辟空间
cudaMalloc((void**)d_A, // 指向开辟的空间的指针 N*M * sizeof(float) // 需要开辟空间的字节数 );
cudaMalloc((void**)d_B,N*M * sizeof(float));
// 在 显存 中为将要存放运算结果的矩阵开辟空间
cudaMalloc((void**)d_C,M*M * sizeof(float));
// 将矩阵数据传递进 显存 中已经开辟好了的空间
cublasSetVector(N*M, // 要存入显存的元素个数 sizeof(float), // 每个元素大小 h_A, // 主机端起始地址 1, // 连续元素之间的存储间隔 d_A, // GPU 端起始地址 1 // 连续元素之间的存储间隔 );
cublasSetVector(N*M,sizeof(float),h_B,1,d_B,1);
// 同步函数
cudaThreadSynchronize();
// 传递进矩阵相乘函数中的参数具体含义请参考函数手册。
float a 1; float b 0;
// 矩阵相乘。该函数必然将数组解析成列优先数组
cublasSgemm(handle, // blas 库对象 CUBLAS_OP_T, // 矩阵 A 属性参数 CUBLAS_OP_T, // 矩阵 B 属性参数M, // A, C 的行数 M, // B, C 的列数N, // A 的列数和 B 的行数a, // 运算式的 α 值 d_A, // A 在显存中的地址 N, // lda d_B, // B 在显存中的地址 M, // ldb b, // 运算式的 β 值 d_C, // C 在显存中的地址(结果矩阵) M // );
// 同步函数
cudaThreadSynchronize();
// 从 显存 中取出运算结果至 内存中去
cublasGetVector(M*M, //要取出元素的个数 sizeof(float), // 每个元素大小 d_C, // GPU 端起始地址 1, // 连续元素之间的存储间隔 h_C, // 主机端起始地址1 // 连续元素之间的存储间隔 );
// 打印运算结果
cout 计算结果的转置 ( (A*B)的转置 ) endl;
for (int i 0;iM*M; i){cout h_C[i] ;if ((i 1) % M 0) cout endl;
}
// 清理掉使用过的内存
free(h_A);
free(h_B);
free(h_C);
cudaFree(d_A);
cudaFree(d_B);
cudaFree(d_C);
// 释放 CUBLAS 库对象
cublasDestroy(handle);
getchar();
return 0;
}
运行结果如下图所示