CUDA编程
文章平均质量分 78
DU_YULIN
这个作者很懒,什么都没留下…
展开
-
Bug分析: cuda程序cudaGetDeviceProperties()返回unknown error
cuda程序cudaGetDeviceProperties()返回unknown error原创 2022-08-29 23:26:07 · 1212 阅读 · 1 评论 -
CUDA C编程10:核函数可达到的带宽
系列文章目录文章目录系列文章目录前言一、理论知识二、案例分享2.1 朴素转置2.2 展开转置2.3 对角转置2.4 通过瘦块方法来增加并行性2.5 完整代码:总结参考资料前言忙里偷闲,继续学习CUDA C编程,今天开始学习核函数的带宽的相关知识点,提高性能。一、理论知识分析核函数性能时,要注意以下两点:(1)内存延迟:完成一次内存请求的时间;(2)内存带宽:SM访问设备内存的速度,以每单位时间内的字节数来度量。之前了解的改进核函数性能的方法有两种:(1)通过最大化并行线程束原创 2022-04-19 01:46:26 · 1253 阅读 · 0 评论 -
CUDA C编程: win10 vs2017开启与关闭一级缓存
系列文章目录文章目录系列文章目录前言开启与关闭一级缓存总结参考资料前言这里跟大家分享下win10 vs2017中如何启用与关闭一级缓存开启与关闭一级缓存在win10 vs2017项目属性页面中添加如下编译命令可以开启或关闭GPU设备一级缓存://开启一级缓存-Xptxas -dlcm=ca//关闭一级缓存-Xptxas -dlcm=cg这里有一点要特别注意,上述编译命令是大小写敏感的,否则win10 vs2017会报编译错误。总结以上是本人实际经验,如有错误,原创 2022-04-16 00:37:34 · 477 阅读 · 0 评论 -
CUDA C编程10:内存访问模式之全局内存读取
系列文章目录文章目录系列文章目录前言一、内存访问模式之全局内存读取1. 内存访问模式基础知识1.1 对齐和合并访问二、全局内存读取示例1.代码实现2.NVIDIA Visual Profiler运行结果分析总结参考资料前言之前在复习现代C++的新特性,没有继续CUDA C编程的学习,今天开始继续之前的学习,这里跟大家分享内存访问模式中全局内存读取的知识。一、内存访问模式之全局内存读取1. 内存访问模式基础知识我们所编写的GPU程序容易受到内存带宽的限制,因此,最大限度利用全局内存原创 2022-04-08 00:40:44 · 3080 阅读 · 0 评论 -
CUDA C编程9:内存管理之统一虚拟寻址、统一内存寻址
系列文章目录文章目录系列文章目录前言一、统一虚拟寻址1. 统一虚拟寻址技术2. 示例程序二、统一内存寻址1.统一内存寻址技术2.示例程序总结参考资料前言这里开始介绍内存管理中的统一虚拟寻址和统一内存寻址技术的相关知识点。一、统一虚拟寻址1. 统一虚拟寻址技术只有计算力在2.0及以上版本的设备支持一种特殊的寻址方式,即为统一虚拟寻址(UVA)。有了UVA,主机内存和设备内存共享统一虚拟地址空间,说白了,和之前介绍的零拷贝内存技术的功能相同,不需要cudaMemcpycudaMemc原创 2022-03-11 01:13:16 · 3366 阅读 · 0 评论 -
CUDA C编程8:内存管理之零拷贝内存
系列文章目录文章目录系列文章目录前言一、零拷贝内存相关知识点二、零拷贝内存示例1. 代码实现2. 运行结果总结参考资料前言这里跟大家分享内存管理第三篇:零拷贝内存。一、零拷贝内存相关知识点之前学习的CUDA知识中,主机不能直接访问设备变量,需要通过cudaMemcpycudaMemcpycudaMemcpy函数实现主机与设备间数据拷贝,当然设备也不能直接访问主机变量。这里介绍的零拷贝内存则是个例外,主机和设备都可以访问零拷贝内存。注意,零拷贝内存相当于从全局内存中分出的一块独立原创 2022-03-10 01:15:03 · 2723 阅读 · 0 评论 -
CUDA C编程7: 内存管理之固定内存
系列文章目录文章目录系列文章目录前言一、固定内存相关知识点二、固定内存示例总结参考资料前言这里开始介绍CUDA C编程内存管理中的固定内存相关知识。一、固定内存相关知识点系统分配的主机内存默认是可分页的,GPU不能在可分页主机内存上安全地访问数据,这是因为主机操作系统在物理位置上移动数据时,GPU无法控制。当从可分页主机内存传输数据到设备内存时,CUDA驱动程序首先分配临时页面锁定的或固定的主机内存,将主机源数据复制到固定内存中,然后从固定内存传输数据给设备内存。使用如下函数可原创 2022-03-08 23:56:57 · 1239 阅读 · 0 评论 -
CUDA C编程6 - 内存管理之内存分配、传输与释放
系列文章目录文章目录系列文章目录前言一、内存管理相关概念1. 内存分配和释放2. 内存传输二、内存分配、传输与释放示例总结参考资料前言这里开始跟大家分享CUDA内存管理相关的知识。一、内存管理相关概念这里主要介绍如何使用CUDA函数来显示管理内存和数据移动。CUDA提供了在主机端准备设备内存的函数,并且显示的向设备传输数据和从设备中获取数据。1. 内存分配和释放在主机上使用如下函数分配全局内存:cudaErrortcudaMalloc(void∗∗ devPtr,原创 2022-03-08 00:38:22 · 1447 阅读 · 0 评论 -
CUDA C编程5 - CUDA内存模型
系列文章目录文章目录系列文章目录前言一、CUDA内存模型1. 寄存器2. 本地内存3. 共享内存4. 常量内存5. 纹理内存6. 全局内存7. GPU缓存二、静态全局内存示例总结参考资料附录前言最近在温习CUDA C 全局内存的知识,这里对关键知识点进行总结并分享给大家。较差的全局内存访问方式是造成内存负载效率大幅下降的原因之一。这里主要介绍以下几点内容:剖析核函数与全局内存的联系及其对性能的影响;介绍全局内存访问模式介绍如何通过核函数高效的利用全局内存一、CUDA内存原创 2022-03-06 22:31:23 · 595 阅读 · 0 评论 -
CUDA C编程4 - 动态并行理解
系列文章目录文章目录系列文章目录前言一、动态并行概念二、嵌套执行三、动态并行的限制条件四、嵌套规约4.1 基本方法(线程同步及线程块同步)4.2 加速方法(去除线程同步以及线程块同步)4.3 进一步加速方法(待完善。。。)五、运行结果总结参考资料附录:完整代码前言之前学习了CUDA C编程中动态并行技术, 这里进行总结,以加深理解,并希望能够对大家有所帮助。一、动态并行概念之前接触的CUDA C设备函数的调用都是在CPU端进行的,即设备函数的执行在CPU的控制下。自然而然,我们就会原创 2022-03-01 01:29:26 · 1299 阅读 · 1 评论 -
CUDA-C编译错误 -动态并行程序
文章目录前言问题描述及分析动态并行实例程序动态并行程序运行结果总结参考资料前言今天试着在windows 10 VS2017上编译并运行CUDA-C中动态并行技术的简单程序,想看看该技术的运行效率,但是编译就出错了,这里记录下解决过程。问题描述及分析动态并行程序的HelloWorld示例编写好后,编译程序时,出现如下错误:从错误提示中可知,设备函数需要单独的编译模式,结合参考书中介绍的编译命令,需要将 -rdc=true, 即强制生成可重定位的设备代码,这是动态并行的一个要求。基于这个知识,在编译原创 2022-02-24 23:46:27 · 745 阅读 · 0 评论 -
CUDA C编程3 - 并行性衡量指标
系列文章目录文章目录系列文章目录前言一. CUDA C并行性衡量指标介绍二、案例介绍1. 案例说明2. 案例实现3. 结果分析总结参考资料前言CUDA编程,就是利用GPU设备的并行计算能力实现程序的高速执行。CUDA内核函数关于网格(Grid)和模块(Block)大小的最优设置才能保证CPU设备的这种并行计算能力得到充分应用。这里介绍并行性衡量指标,可以衡量最优性能的网格和模块大小设置。一. CUDA C并行性衡量指标介绍占用率(nvprof 中的achieved occupanc原创 2022-02-17 01:34:45 · 1572 阅读 · 0 评论 -
CUDA C编程1 - 入门介绍
系列文章目录文章目录系列文章目录前言1. CUDA C程序组成2. CUDA C编程范式总结参考资料前言今天开始又一次开始学习CUDA C编程,今后也会陆续更新学习笔记以及代码,希望加深记忆的同时,能够跟大家分享学习所得。1. CUDA C程序组成CUDA C程序主要包括两部分:(1)主机代码(2)设备代码CUDA程序保存为.cu文件,CUDA平台使用编译器nvcc编译器来编译设备代码,运行在GPU上;使用C语言编译器来编译主机代码,运行在CPU上。2. CUDA C编程范式原创 2022-01-13 00:17:45 · 797 阅读 · 0 评论 -
OpenCV CUDA编程Issue: GpuMat::upload()第一次调用速度很慢问题
文章目录Issue描述Issue分析实验结果总结Issue描述之前一直在学习OpenCV CUDA编程,遇到一问题:第一次调用GpuMat::upload()函数时,速度出奇的慢,大约要2-4分钟才能继续运行,后面调用GpuMat::upload()函数则没有这个问题。Issue分析在网上查找原因,说的最多的就是第一次调用upload()函数需要初始化CUDA,所以第一次花费比较长时间也是合理的。还有另外的说法,即CMake Opencv CUDA库时,没有配置正确GPU设备的计算能力值,即配置原创 2021-11-16 13:55:55 · 3580 阅读 · 0 评论 -
VS2017 OpenCV CUDA库学习1:图像加法操作
文章目录前言1. OpenCV CUDA库使用框架2. C++ 调用OpenCV CUDA库实现图像加法操作3. 执行结果总结学习资料VS2017 CUDA编程学习1:CUDA编程两变量加法运算VS2017 CUDA编程学习2:在GPU上执行线程VS2017 CUDA编程学习3:CUDA获取设备上属性信息VS2017 CUDA编程学习4:CUDA并行处理初探 - 向量加法实现VS2017 CUDA编程学习5:CUDA并行执行-线程VS2017 CUDA编程学习6: GPU存储器架构VS2017原创 2021-11-15 22:19:21 · 2722 阅读 · 0 评论 -
VS2017 CUDA编程学习实例3:CUDA实现直方图统计
文章目录前言1. C++ CUDA实现直方图统计3. 执行结果总结学习资料VS2017 CUDA编程学习1:CUDA编程两变量加法运算VS2017 CUDA编程学习2:在GPU上执行线程VS2017 CUDA编程学习3:CUDA获取设备上属性信息VS2017 CUDA编程学习4:CUDA并行处理初探 - 向量加法实现VS2017 CUDA编程学习5:CUDA并行执行-线程VS2017 CUDA编程学习6: GPU存储器架构VS2017 CUDA编程学习7:线程同步-共享内存VS2017 CU原创 2021-11-14 16:14:05 · 2163 阅读 · 2 评论 -
VS2017 CUDA编程学习实例2:CUDA实现秩排序
文章目录前言1. C++ CUDA实现秩排序3. 执行结果总结学习资料VS2017 CUDA编程学习1:CUDA编程两变量加法运算VS2017 CUDA编程学习2:在GPU上执行线程VS2017 CUDA编程学习3:CUDA获取设备上属性信息VS2017 CUDA编程学习4:CUDA并行处理初探 - 向量加法实现VS2017 CUDA编程学习5:CUDA并行执行-线程VS2017 CUDA编程学习6: GPU存储器架构VS2017 CUDA编程学习7:线程同步-共享内存VS2017 CUDA原创 2021-11-14 15:04:16 · 2870 阅读 · 0 评论 -
VS2017 CUDA编程学习12:CUDA流
文章目录前言1. CUDA流的理解2. C++ 实现CUDA流3. 执行结果总结学习资料VS2017 CUDA编程学习1:CUDA编程两变量加法运算VS2017 CUDA编程学习2:在GPU上执行线程VS2017 CUDA编程学习3:CUDA获取设备上属性信息VS2017 CUDA编程学习4:CUDA并行处理初探 - 向量加法实现VS2017 CUDA编程学习5:CUDA并行执行-线程VS2017 CUDA编程学习6: GPU存储器架构VS2017 CUDA编程学习7:线程同步-共享内存VS原创 2021-11-12 21:49:56 · 3015 阅读 · 0 评论 -
VS2017 CUDA编程学习11:CUDA性能测量
文章目录前言1. CUDA事件API2. C++ 实现CUDA事件例子3. CUDA事件例子的执行结果4. NVIDIA Visual Profiler工具总结学习资料VS2017 CUDA编程学习1:CUDA编程两变量加法运算VS2017 CUDA编程学习2:在GPU上执行线程VS2017 CUDA编程学习3:CUDA获取设备上属性信息VS2017 CUDA编程学习4:CUDA并行处理初探 - 向量加法实现VS2017 CUDA编程学习5:CUDA并行执行-线程VS2017 CUDA编程学习6原创 2021-11-11 20:18:57 · 1309 阅读 · 0 评论 -
VS2017 CUDA编程学习实例1:CUDA实现向量点乘
文章目录前言1. 向量点乘2. C++ CUDA实现向量点乘3. 执行结果总结学习资料VS2017 CUDA编程学习1:CUDA编程两变量加法运算VS2017 CUDA编程学习2:在GPU上执行线程VS2017 CUDA编程学习3:CUDA获取设备上属性信息VS2017 CUDA编程学习4:CUDA并行处理初探 - 向量加法实现VS2017 CUDA编程学习5:CUDA并行执行-线程VS2017 CUDA编程学习6: GPU存储器架构VS2017 CUDA编程学习7:线程同步-共享内存VS2原创 2021-11-10 13:40:47 · 1885 阅读 · 0 评论 -
VS2017 CUDA编程学习10:纹理内存
文章目录前言1. 纹理内存的理解2. C++ CUDA实现常量内存使用3. 执行结果总结学习资料VS2017 CUDA编程学习1:CUDA编程两变量加法运算VS2017 CUDA编程学习2:在GPU上执行线程VS2017 CUDA编程学习3:CUDA获取设备上属性信息VS2017 CUDA编程学习4:CUDA并行处理初探 - 向量加法实现VS2017 CUDA编程学习5:CUDA并行执行-线程VS2017 CUDA编程学习6: GPU存储器架构VS2017 CUDA编程学习7:线程同步-共享内原创 2021-11-03 00:03:19 · 1039 阅读 · 1 评论 -
VS2017 CUDA编程学习9:常量内存
文章目录前言1. 常量内存的理解2. C++ CUDA实现常量内存使用3. 执行结果总结学习资料VS2017 CUDA编程学习1:CUDA编程两变量加法运算VS2017 CUDA编程学习2:在GPU上执行线程VS2017 CUDA编程学习3:CUDA获取设备上属性信息VS2017 CUDA编程学习4:CUDA并行处理初探 - 向量加法实现VS2017 CUDA编程学习5:CUDA并行执行-线程VS2017 CUDA编程学习6: GPU存储器架构VS2017 CUDA编程学习7:线程同步-共享内原创 2021-10-28 23:30:00 · 492 阅读 · 0 评论 -
VS2017 CUDA编程学习8:线程同步-原子操作
文章目录前言1. 原子操作的理解2. C++ CUDA实现原子操作3. 执行结果总结学习资料VS2017 CUDA编程学习1:CUDA编程两变量加法运算VS2017 CUDA编程学习2:在GPU上执行线程VS2017 CUDA编程学习3:CUDA获取设备上属性信息VS2017 CUDA编程学习4:CUDA并行处理初探 - 向量加法实现VS2017 CUDA编程学习5:CUDA并行执行-线程VS2017 CUDA编程学习6: GPU存储器架构VS2017 CUDA编程学习7:线程同步-共享内存原创 2021-10-21 00:06:14 · 727 阅读 · 0 评论 -
VS2017 CUDA编程学习7:线程同步-共享内存
文章目录前言1. CUDA线程同步-共享内存理解2. C++ CUDA代码实现3. 运行结果总结学习资料VS2017 CUDA编程学习1:CUDA编程两变量加法运算VS2017 CUDA编程学习2:在GPU上执行线程VS2017 CUDA编程学习3:CUDA获取设备上属性信息VS2017 CUDA编程学习4:CUDA并行处理初探 - 向量加法实现VS2017 CUDA编程学习5:CUDA并行执行-线程VS2017 CUDA编程学习6: GPU存储器架构前言1. CUDA线程同步-共享内存原创 2021-10-18 23:42:08 · 914 阅读 · 0 评论 -
VS2017 CUDA编程学习6: GPU存储器架构
文章目录前言1. GPU存储器架构总结学习资料VS2017 CUDA编程学习1:CUDA编程两变量加法运算VS2017 CUDA编程学习2:在GPU上执行线程VS2017 CUDA编程学习3:CUDA获取设备上属性信息VS2017 CUDA编程学习4:CUDA并行处理初探 - 向量加法实现VS2017 CUDA编程学习5:CUDA并行执行-线程前言今天又复习了下GPU存储器架构,这里做下笔记以此来加深印象并分享给大家,希望能对大家有帮助。1. GPU存储器架构GPU存储器空间按照层次结原创 2021-10-14 23:38:16 · 359 阅读 · 0 评论 -
VS2017 CUDA编程学习5:CUDA并行执行-线程
文章目录前言1. 线程2. 代码实现总结学习资料VS2017 CUDA编程学习1:CUDA编程两变量加法运算VS2017 CUDA编程学习2:在GPU上执行线程VS2017 CUDA编程学习3:CUDA获取设备上属性信息VS2017 CUDA编程学习4:CUDA并行处理初探 - 向量加法实现前言今天学习了CUDA编程中关于线程的知识,这里做下笔记并分享给大家。1. 线程CUDA并行执行具有分层结构。每次内核启动时可被切分成多个并行执行的块,每个块又可以进一步被切分成多个线程,这也就是我们原创 2021-10-12 22:29:01 · 689 阅读 · 0 评论 -
VS2017 CUDA编程学习4:CUDA并行处理初探 - 向量加法实现
文章目录前言CUDA实现向量加法2. 结果展示总结学习资料VS2017 CUDA编程学习1:CUDA编程两变量加法运算VS2017 CUDA编程学习2:在GPU上执行线程VS2017 CUDA编程学习3:CUDA获取设备上属性信息前言今天开始见识下CUDA编程的并行处理能力,这里做下笔记并分享给大家。CUDA实现向量加法为了体现CUDA并行处理能力,这里也实现了CPU上向量加法程序,通过分别统计运行时间来证明CUDA的并行处理优势。#include <stdio.h>#in原创 2021-10-11 22:20:45 · 588 阅读 · 0 评论 -
VS2017 CUDA编程学习3:CUDA获取设备上属性信息
文章目录前言1. 学习内容2. VS2017 CUDA代码实现总结学习资料VS2017 CUDA编程学习1:CUDA编程两变量加法运算VS2017 CUDA编程学习2:在GPU上执行线程前言今天学习了如何使用CUDA获取GPU设备上属性信息,这里做个学习笔记并分享给大家。1. 学习内容CUDA获取设备数量与设备名称,CUDA获取设备通用属性信息,CUDA获取设备内存相关属性信息,CUDA获取设备线程相关属性信息等。2. VS2017 CUDA代码实现#include <stdio原创 2021-10-10 23:53:14 · 555 阅读 · 0 评论 -
VS2017 CUDA编程学习2:在GPU上执行线程
文章目录前言1. CUDA多线程理论2. CUDA编程实现总结学习资料VS2017 CUDA编程学习1:CUDA编程两变量加法运算前言今天学习了在GPU设备上执行多线程,这里做下笔记,并分享给大家1. CUDA多线程理论在进行内核配置参数时,通过指定模块数,以及每个模块执行线程数来实现GPU上多线程并行执行。在启动内核后,不等内核函数执行完成,立即返回CPU主线程继续执行,如果调用cuda API cudaDeviceSynchonoize()后,会等待所有内核函数执行完成后,才会继续执行C原创 2021-10-07 23:23:41 · 864 阅读 · 0 评论 -
VS2017 CUDA编程学习1:CUDA编程两变量加法运算
文章目录前言1. CUDA编程基础2. CUDA编程实现两变量加法运算总结参考前言今天开始学习CUDA编程,在这里当成笔记,分享给大家1. CUDA编程基础(1)CUDA编程需要将CPU上数据拷贝到GPU显存上,然后在GPU上进行高效计算并得到计算结果,最终将结果拷贝到CPU上打印;(2)CUDA编程区分GPU函数和CPU上函数是通过关键字 “_global_”;(3)使用cuda API cudaMalloc(), cudaFree()在GPU显存上分配并释放空间;(4)调用GPU上函数原创 2021-10-07 21:31:59 · 1025 阅读 · 0 评论