CUDA编程
文章平均质量分 73
prinTao
我是prinTao,本硕就读于某985,计算机视觉与机器人方向。欢迎关注我,一起学习CV~
展开
-
【小工具】一键美化nvidia-smi,查看GPU运行状态,无须配置
可以在远程console看,是动态的。鼠标滚轮控制显示哪个进程。原创 2024-03-14 10:56:06 · 463 阅读 · 0 评论 -
【CUDA】获取当前显存状态的多种方式:准确性与原理讨论
显存状态的获取对于深度学习任务至关重要,特别是在使用 GPU 进行模型训练和推理时。了解当前显存的使用情况可以帮助我们优化算法、调整超参数,以及有效地管理计算资源。在本文中,我们将讨论多种获取当前显存状态的方法,并探讨它们的准确性和原理。原创 2024-03-12 09:46:34 · 3520 阅读 · 1 评论 -
【cuda】RuntimeError: Unexpected error from cudaGetDeviceCount()
会发现 nvidia-smi 不管用了。不要立即重启,会黑屏的。赶紧记录使用的驱动版本号,最好找到安装包位置。直接重装原版驱动,环境还能用。参考我的安装博客。已经黑屏就进入安全模式,network模式。卸载可视化桌面和显卡驱动。驱动程序已经更新,可以尝试回滚到之前的版本。原创 2024-01-25 20:52:36 · 1067 阅读 · 0 评论 -
【一次性解决】深入理解CUDA和PyTorch的安装与多版本管理的三种方式
系统环境变量很多人配置环境就是直接安装三件套,而对于版本管理不是很清楚。在开发初期,这样做没什么问题。但是如果服务器多人使用,或者复现代码多(pytorch版本和cuda版本是互相依赖的),就需要更进一步的版本管理方法。这里将详细介绍用于深度学习或者CPP开发的CUDA版本管理方式。在配置环境前,首先需要明确自己的需求。对于使用Python进行的开发,推荐在。对于C++开发,只使用手动管理版本即可,无须安装anaconda和docker。请注意,以下的方法选择其一即可,混着用容易把自己搞乱了。原创 2024-01-25 20:09:07 · 1849 阅读 · 0 评论 -
【cuda】六、基础库:cuBLAS入门
CUDA(BLAS)提供了高效计算线性代数的方法。有三级API原创 2024-01-16 20:30:44 · 2953 阅读 · 0 评论 -
【CUDA】五、基础概念:Coalescing合并用于内存优化
coalescing writes”(合并写操作)是一种优化内存访问模式的技术,它能显著提高内存带宽的利用效率。在行主序排列中,多维数组的行元素是连续存储的。:在行主序排列中,数组的每一行元素在内存中是连续存储的。这意味着如果你有一个二维数组,数组中的第一行的所有元素在内存中是连续的。函数用于分配二维数组,同时确保每行数据在内存中是对齐的,这对于优化二维数据的内存访问效率非常关键。是第二行的所有元素,依此类推。关键字是特定于NVIDIA的编译器扩展,用于指定变量或结构体在内存中的对齐方式。原创 2024-01-16 11:38:05 · 814 阅读 · 0 评论 -
【cuda】Visual Studio中进行CUDA程序的性能评估
对特定的函数、内存操作或其他CUDA活动进行深入分析。原创 2024-01-16 11:10:27 · 1211 阅读 · 0 评论 -
【cuda】四、基础概念:Cache Tiled 缓存分块技术
关键字描述作用域生命周期device用于在GPU的全局内存中声明变量。所有线程应用程序执行期间global用于定义在主机上调用但在设备上执行的函数(即CUDA核心函数)。host用于定义在主机上调用并执行的函数。shared用于声明位于共享内存中的变量。同一个线程块内的线程线程块的执行期间constant用于声明位于常量内存中的变量。所有线程应用程序执行期间managed用于声明在主机和设备之间共享的统一内存变量。所有线程和主机应用程序执行期间__device__原创 2024-01-16 11:05:40 · 1042 阅读 · 0 评论 -
【cuda】三、矩阵相乘与coalescing writes(合并写操作)
根据矩阵乘法的最基础定义公式,我们知道:结果中的每个元素的计算不依赖于结果中的其他元素。但是,如果定义在并行的方法中,这样的串行代码就会被编译器自动转换成M*N条指令。:这个过程由CUDA运行时自动管理的,如果需要插手优化这环节,需要在核函数设计和块大小分配上间接干预。矩阵相乘是一个非常典型的例子,用于展示CUDA编程和线程块(Block)及线程(Thread)的使用。如果一个SM的资源不足以处理更多的线程块,新的线程块会被分配到其他SM。在这个核函数中,每个线程负责计算结果矩阵C中的一个元素。原创 2024-01-15 22:17:14 · 1082 阅读 · 0 评论 -
【cuda】二、基础知识: 内存管理 同步
在CUDA中,使用**cudaFree()**来释放设备内存。原创 2024-01-15 20:40:43 · 1775 阅读 · 0 评论 -
【cuda】一、基础知识 thread grid
Threads最小,组成warps(SIMT)。warps每次一起执行。再组成thread blocks,是最小的编程单元,组成单个thread。再组成Grids。grid sizeblock数量,grid的size线程数量 256,线程块 的sizeN数组大小,总共需要的线程数量在这个示例中,我们定义了一个CUDA内核函数,该函数将两个数组的相应元素相加,并将结果存储在第三个数组中。然后在主函数中,我们分配了设备和主机内存,初始化了数据,将数据从主机复制到设备,执行了内核函数,然后将结果复制回主机。原创 2024-01-15 20:38:17 · 480 阅读 · 0 评论