1.如何运行
2.显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么?
-
关于显卡驱动与cuda驱动的版本匹配
-
简单了解显卡相关概念
- 显卡:GPU
- 显卡驱动:驱动软件,类比声卡驱动,摄像头驱动
- GPU架构:gpu架构指的是硬件的设计方式,例如是否有L1 or L2缓存
- CUDA: 其中一种理解是它是一种编程语言(像c++,python等,只不过它是专门用来操控GPU的)
- cudnn: 这个其实就是一个专门为深度学习计算设计的软件库,里面提供了很多专门的计算函数
- CUDAToolkit:这是我们真正需要首先安装的工具包,所谓的装cuda首先指的是它
- 它里面包含了许多库,例如:cudart, cublas等
- 其他涉及到的知识有nvcc与nvidia-smi, 多个 cuda 版本之间进行切换, cuda的安装等
- 详细请参考: https://zhuanlan.zhihu.com/p/91334380
3.cuda-driver-api 与 cuda-runtime-api
- CUDA Driver与CUDA Runtime相比更偏底层,就意味着Driver API有着更灵活的控制,也伴随着更复杂的编程
- 因此CUDA driver需要做显式的初始化
cuInit(0)
,否则其他API都会返回CUDA_ERROR_NOT_INITIALIZED
- 经过初始化后驱动和显卡的信息可以轻松获取:
- 驱动版本管理 https://docs.nvidia.com/cuda/archive/11.2.0/cuda-driver-api/group__CUDA__VERSION.html#group__CUDA__VERSION
- 设备信息管理 https://docs.nvidia.com/cuda/archive/11.2.0/cuda-driver-api/group__CUDA__DEVICE.html
4.写在文末
5.C++基础(供C++小白参考)
5.1 编译基础知识
- “c++脚本程序写完之后,并不能直接运行,需要进行编译,转成.o文件,再链接才能运行”
5.1.1 单文件或少文件编译
- 源文件[.c/cpp] -> Object文件[.o]
g++ -c [.c/cpp][.c/cpp]... -o [.o][.o]... -I[.h/hpp]
g++是编译命令 -c,-o,-I是选项 -c接源脚本文件 -o接目标文件 -I接头文件
(-c c++ /-o object/ -I include)
5.1.2 多文件编译(使用Makefile 和 CMake)