解决通过CUDA调用GPU运行机器学习代码

本文分享了初学者如何从CPU迁移到GPU加速机器学习实验的过程,包括下载Anaconda、CUDA和GPU版Torch,以及在Windows环境下安装CUDA11.3的详细步骤。重点讲述了准备环境和实验前后对比,旨在帮助读者理解GPU对速度提升的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言:

一、准备环境

1、下载anaconda

2、下载CUDA

3、安装GPU 版本的 Torch

二、进行实验

 三、总结


前言:

        第一次跑机器学习的程序,作为一个门外汉拿着代码就直接用CPU跑,三千多张图片的训练集提取特征向量用了两个多小时(还是减少了循环次数的……)

        后来看了看大佬们的做法,发现这个程序是使用GPU跑的,拿CPU跑简直就是对电脑的折磨!(人也折磨),目前掌握了两种用GPU跑程序的方法。

        一是在云端GPU服务器上执行程序(费钱)

        二是使用本机显卡中的GPU执行程序(费电脑)

        第一种还没试过,好像一小时要五角到二块不等,第二种比较容易,但步骤繁琐,所以在此做个记录。 

一、准备环境

1、下载anaconda

Anaconda | The World's Most Popular Data Science Platformhttps://www.anaconda.com/     

  Ananconda安装教程:

(1条消息) 史上最全最详细的Anaconda安装教程_OSurer的博客-CSDN博客_anaconda 安装https://blog.csdn.net/wq_ocean_/article/details/103889237?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165216897316781683982377%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165216897316781683982377&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-103889237-null-null.142%5Ev9%5Econtrol,157%5Ev4%5Econtrol&utm_term=anaconda%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B&spm=1018.2226.3001.4187

2、下载CUDA

        为了在计算时只使用GPU而不是CPU,所以我们要下载CUDA驱动来调用GPU。

首先查看一下自己电脑的 NVIDIA显卡需要什么版本的CUDA,如果版本不匹配将无法调用GPU。

在DOS窗口输入指令:

nvidia-smi

 如下图,我们可以看到本机的NVIADIA显卡驱动版本是472.19,对应的CUDA最高版本是11.4,所以我们要下载一个不高于11.4的CUDA。

 通过下面的指令可以确认是否装有CUDA:

nvcc -V

如下图所示,我们的电脑还没有安装CUDA。 

        

CUDA下载网址:

CUDA Toolkit Archive | NVIDIA Developerhttps://developer.nvidia.com/cuda-toolkit-archive

 CUDA安装教程:

(1条消息) 【CUDA】cuda安装 (windows版)_何为xl的博客-CSDN博客_windows安装cudahttps://blog.csdn.net/weixin_43848614/article/details/117221384?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165219485016782388033079%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165219485016782388033079&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-117221384-null-null.142%5Ev9%5Econtrol,157%5Ev4%5Econtrol&utm_term=cuda%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B&spm=1018.2226.3001.4187

提示:若果你的电脑安装CUDA 11.3 时多次失败,那就放弃安装吧,可能是显卡配置不支持,这里给大家避个雷,不要下载CUDA 10.2,因为10.2在windows已经不提供支持了,下了也不能正常使用的。

所以目前提倡下载 CUDA 11.3 对后序实验进行比较顺利。

3、安装GPU 版本的 Torch

(3条消息) 安装Torch GPU版本_Java并发编程的艺术的博客-CSDN博客_torch的gpu版本https://blog.csdn.net/Wangxixi777/article/details/107952215

下载时出现了版本不匹配的问题,换个路径重新下载:

大家如果发现下载速度很慢,可以使用国内的镜像。
命令: pip install -i 国内镜像地址 numpy
国内常用源镜像地址:

清华:https://pypi.tuna.tsinghua.edu.cn/simple

阿里云:http://mirrors.aliyun.com/pypi/simple/

中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/

华中理工大学:http://pypi.hustunique.com/

山东理工大学:http://pypi.sdutlinux.org/

豆瓣:http://pypi.douban.com/simple/

例如:pip install -i https://mirrors.aliyun.com/pypi/simple/ numpy

当然安装第三方库的方法有很多种,上述描述的是我推荐的一种。

二、进行实验

         直接上传送门:(6条消息) pytorch——VGG网络搭建_heart_6662的博客-CSDN博客_pytorch 搭建vgghttps://blog.csdn.net/qq_62932195/article/details/122416591

使用CUDA前:

 

使用CUDA后:

 CPU:小G,别想偷懒!

 三、总结

        前期准备:

                ①下载 Anaconda 环境

                ②下载 NVIDIA CUDA 11.3 为了调用显卡GPU(下载完查看是否配置了环境变量)

                ③配置环境python环境,下载GPU 版本的 Torch包

                ④Pycharm新建项目,将数据集和代码都装进去

                ⑤运行程序,得出结果

        结语:

                1、众人拾柴火焰高

                2、配置越高越好跑

### C++ 使用 CUDA 调用 GPU 进行加速计算 #### 定义与环境配置 为了在C++中使用CUDA调用GPU进行加速计算,需先安装NVIDIA的CUDA Toolkit。该工具包提供了编译器、库以及用于开发基于CUDA的应用程的各种工具[^1]。 #### 基本概念介绍 CUDA是一种由NVIDIA推出的通用并行计算架构,它使得开发者能够利用图形处理器(GPU)的强大性能来执行复杂的科学和工程应用中的计算密集型部分。通过编写特定于CUDA的语言扩展——即所谓的内核函数(kernel),这些函数可以在成百上千个线程上并发运行,从而极大地提高了某些类型算法的速度[^2]。 #### 实现矩阵乘法作为案例研究 下面给出一段简单的代码片段展示如何运用CUDA完成两个浮点数矩阵相乘的操作: ```cpp #include <cuda_runtime.h> #include <iostream> // Kernel function to add the elements of two arrays on the GPU __global__ void matrixMul(float *A, float *B, float *C, int N) { int row = blockIdx.y * blockDim.y + threadIdx.y; int col = blockIdx.x * blockDim.x + threadIdx.x; if (row < N && col < N){ float value = 0; for(int k=0; k<N; ++k){ value += A[row*N+k]*B[k*N+col]; } C[row*N+col]=value; } } int main() { const int N = 32; size_t bytes = N*N*sizeof(float); // Host allocations and initializations... float* h_A = new float[N*N], *h_B = new float[N*N], *h_C = new float[N*N]; // Initialize matrices with some values... // Device allocations... float *d_A, *d_B, *d_C; cudaMalloc(&d_A, bytes); cudaMalloc(&d_B, bytes); cudaMalloc(&d_C, bytes); // Copy data from host memory space into device memory spaces. cudaMemcpy(d_A,h_A,bytes,cudaMemcpyHostToDevice); cudaMemcpy(d_B,h_B,bytes,cudaMemcpyHostToDevice); dim3 threadsPerBlock(16, 16); dim3 blocks(N/threadsPerBlock.x,N/threadsPerBlock.y); // Launch kernel matrixMul<<<blocks, threadsPerBlock>>>(d_A,d_B,d_C,N); // Wait until all operations are completed before proceeding further. cudaDeviceSynchronize(); // Transfer result back to CPU side. cudaMemcpy(h_C,d_C,bytes,cudaMemcpyDeviceToHost); // Use results stored within `h_C` here. delete[] h_A;delete[] h_B;delete[] h_C; cudaFree(d_A);cudaFree(d_B);cudaFree(d_C); return 0; } ``` 这段代码展示了完整的流程:定义了一个名为`matrixMul`的kernel函数,在主机端分配内存空间并将输入的数据复制给设备;设置好grid尺寸之后启动kernel;最后再把得到的结果拷贝回主机侧以便后续处理。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码骑士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值