linux下载cuda toolkit实现并行计算

linux下载cuda toolkit实现并行计算

(1)下载安装CUDA Toolkit

CUDA Toolkit官网:https://developer.nvidia.com/cuda-downloads

里面有安装步骤教程

注意:如果有驱动时,安装命令为

sudo sh ./cuda_10.2..run --toolkit --silent --override

安装结束后,添加环境变量到 ~/.bashrc 文件的末尾,具体添加内容如下:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
(2)下载安装cuDNN

从 NVIDIA 官方网址 https://developer.nvidia.com/rdp/cudnn-download 下载 cudnn-11.0-linux-x64-v8.0.5.39.tgz 。

tar zxvf cudnn-11.0-linux-x64-v8.0.5.39.tgz 
sudo cp cuda/include/cudnn* /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn* /usr/local/cuda/lib64/libcudnn*
(3)vscode解决cuda代码爆红

下载插件 Nsight Visual Studio Code Edition

cuda代码的源文件后缀为.cu

(4)测试
//-------------main.cu-------------------
#include 
#include 

// CUDA核函数,将向量的每个元素加1
__global__ void vectorAddOne(int* vector, int size) {
    int tid = blockIdx.x * blockDim.x + threadIdx.x;
    if (tid < size) {
        vector[tid] += 1;
    }
}

int main() {
    int size = 1000; // 向量长度
    int* host_vector; // 主机上的向量
    
    int* device_vector; // GPU上的向量

    // 分配内存并初始化主机上的向量
    host_vector = new int[size];
    for (int i = 0; i < size; i++) {
        host_vector[i] = i;
    }

    // 在GPU上分配内存
    cudaMalloc((void**)&device_vector, size * sizeof(int));

    // 将数据从主机复制到GPU
    cudaMemcpy(device_vector, host_vector, size * sizeof(int), cudaMemcpyHostToDevice);

    // 配置CUDA线程块和网格
    int blockSize = 256;
    int gridSize = (size + blockSize - 1) / blockSize;

    // 调用CUDA核函数在GPU上执行向量加1操作
    vectorAddOne<<>>(device_vector, size);

    // 将结果从GPU复制回主机
    cudaMemcpy(host_vector, device_vector, size * sizeof(int), cudaMemcpyDeviceToHost);

    // 打印结果
    for (int i = 0; i < size; i++) {
        std::cout << host_vector[i] << " ";
    }
    std::cout << std::endl;

    // 释放资源
    delete[] host_vector;
    cudaFree(device_vector);

    return 0;
}

编译链接:

nvcc -c -g main.cu
g++ -o prog main.o  -lcudart

你可能感兴趣的:(linux,运维,服务器)