
CUDA
文章平均质量分 84
byxdaz
十年以上C/VC++开发经验。熟悉网络编程、数据库编程、数字图像处理与识别,熟悉软件工程和项目管理,熟悉linux C/C++开发。
展开
-
CUDA 纹理入门
CUDA纹理是NVIDIA GPU提供的一种特殊内存访问机制,它允许高效地访问和过滤结构化数据。纹理内存最初是为图形渲染设计的,但在通用计算(GPGPU)中也很有用。原创 2025-05-18 15:54:23 · 757 阅读 · 0 评论 -
在Qt Creator中使用CUDA
要在Qt Creator项目中使用CUDA进行GPU加速计算,你需要进行一些配置。原创 2025-05-04 10:23:20 · 667 阅读 · 0 评论 -
cudaPointerGetAttributes详解
是 CUDA 运行时 API 中的一个重要函数,用于查询指针的内存属性。原创 2025-05-02 18:31:08 · 667 阅读 · 0 评论 -
NVIDIA Video Codec SDK编解码
以下是一个使用NVIDIA Video Codec SDK进行硬件加速视频解码的完整C++示例代码,包含初始化解码器、解析视频数据和帧处理等完整流程。原创 2025-05-03 08:00:00 · 1027 阅读 · 0 评论 -
NVIDIA Multimedia API 入门指南
NVIDIA Multimedia API 是一套用于加速多媒体处理的编程接口,主要针对视频解码、编码和处理任务。这些API充分利用NVIDIA GPU的硬件加速能力,为开发者提供高性能的多媒体处理解决方案。原创 2025-05-02 08:00:00 · 371 阅读 · 0 评论 -
CUDA 编程相关的开源库
CUDA 编程相关的开源库非常丰富,涵盖了高性能计算、深度学习、图像处理、线性代数、优化算法等多个领域。CUDA 的 C++ STL 风格模板库,提供高性能的并行算法(如排序、归约、扫描)。高性能通用 GPU 计算库,支持 CUDA/OpenCL,提供易用的数组操作接口。跨平台的并行编程模型,支持 CUDA、HIP、OpenMP 等,适合科学计算。NVIDIA 的高性能 CUDA 矩阵乘法库,用于自定义深度学习内核优化。CUDA 的底层并行原语库(如块级排序、归约)。针对量子计算和科学计算的张量操作库。原创 2025-04-28 18:15:48 · 1484 阅读 · 0 评论 -
CUDA编程之Grid、Block、Thread线程模型
Grid和Block均支持一维、二维或三维结构。例如,处理图像时常用二维Block(如16x16线程)魔方图。原创 2025-04-25 22:10:44 · 1074 阅读 · 0 评论 -
CUDA代码编译为动态库
将 CUDA 代码编译为动态库(.dll或.so)供其他程序调用,需解决和问题。完全移除对FindCUDA的依赖,改用 CMake 原生 CUDA 支持:cmake由于本地电脑安装了多个版本的CUDA库,需要指定CUDA版本。比如:我电脑安装CUDA11.8和CUDA10.2,环境变量中添加的是CUDA11.8cmd主机-设备内存拷贝由动态库内部处理,调用方只需管理主机内存。避免在动态库接口中直接暴露 CUDA 指针(如float* d_a。原创 2025-04-09 20:39:59 · 640 阅读 · 0 评论 -
CUDA编译器nvcc
用。原创 2025-04-09 16:00:20 · 1361 阅读 · 0 评论 -
CUDA编程之Host 与 Device
Host(主机)指 CPU 及其关联的内存(Host Memory),负责执行主程序逻辑和协调整体计算任务。负责初始化 CUDA 环境、分配设备内存及启动核函数(Kernel)。Device(设备)指 GPU 及其关联的显存(Device Memory),专为大规模并行计算设计。执行核函数(__global__修饰的函数),处理高密度数值运算。原创 2025-03-19 09:30:41 · 849 阅读 · 0 评论 -
CUDA多线程
用于同步线程块内所有线程的执行进度,确保共享内存的写入在所有线程可见后继续执行后续操作。例如,在累加共享内存时需两次同步:第一次清空内存,第二次汇总结果。等内置变量定位线程位置。线程块在GPU上并行执行,同一块内的线程可通过共享内存高效通信。实现更复杂的同步逻辑。协作组允许自定义线程组粒度(如warp、网格级),并通过。为基本执行单元,每个线程块内包含多个线程,通过。CUDA默认不支持跨线程块的全局同步,需通过。原创 2025-03-17 18:34:25 · 794 阅读 · 0 评论 -
CUDA编程之CUDA上下文
CUDA上下文是一个环境,它定义了如何在GPU上执行CUDA代码。每个上下文都与一个特定的设备相关联,并且可以包含多个流(Streams),这些流用于管理并发执行的任务。原创 2025-03-17 18:10:37 · 1094 阅读 · 0 评论 -
CUDA编程之多设备
cudaMemcpy3DPeer 与 cudaMemcpy3DPeerAsync:支持 三维数据块 的跨设备传输(如立体图像、体素数据),分别对应同步和异步模式,参数使用 cudaMemcpy3DParms 结构体定义传输维度。2) 如果两个设备使用非统一的地址空间,使用cudaMemcpyPeer(),cudaMemcpyPeerAsync(),cudaMemcpy3DPeer()或cudaMemcpy3DPeerAsync()完成内存复制。dst/src:目标/源设备内存指针。原创 2025-03-16 18:29:22 · 885 阅读 · 0 评论 -
CUDA编程之内存
CUDA的内存类型有全局内存、共享内存、常量内存、纹理内存、本地内存、寄存器等。我们需要分别了解它们的特点和使用场景。在CUDA编程中,合理利用各种内存类型对性能优化至关重要。原创 2025-03-15 18:48:35 · 779 阅读 · 0 评论 -
CUDA编程之内存零拷贝技术
零拷贝和普通的cudaMemcpy一样也是要走pci-e总线的,只不过cudaMemcpy是一次性全部copy过去,而零拷贝是用的时候自动在后台通过pci-e总线传输。一般建议只使用一次的数据以及少量的返回数据可以使用零拷贝,其他情况建议copy到显存使用,显存DRAM的带宽要比pci-e的带宽高出一个量级。零拷贝内存通过将主机锁页内存直接映射到设备地址空间,实现CPU与GPU共享内存,避免显式数据拷贝。分配,确保物理地址固定且不被操作系统换页,从而支持DMA(直接内存访问)。原创 2025-03-13 23:53:08 · 640 阅读 · 0 评论 -
CUDA编程之Stream
:CUDA流(Stream)是一组在GPU上按顺序执行的操作序列,不同流中的操作可并行或交错执行,以提升计算效率。。原创 2025-03-11 13:47:58 · 407 阅读 · 0 评论 -
CUDA编程之Event
CUDA Event 是 GPU 程序中的一种同步和计时工具,用于在特定位置插入标记点,并记录这些点的 GPU 时间戳。通过事件机制,开发者可以精确测量核函数执行时间或实现不同任务间的同步。用于非阻塞地查询 CUDA 事件的状态,判断 GPU 是否已完成指定事件之前的所有任务。2)堵塞方式——可以用于执行核函数后等待核函数执行完毕后的处理。在主机执行其他操作时,定期轮询事件状态,避免阻塞。1)非堵塞方式——可以用于一些不需要等待的处理。原创 2025-03-11 13:12:25 · 462 阅读 · 0 评论 -
CUDA原子操作
为了避免不同线程同时对数据进行读取/运算/写回导致结果错误,原子操作可以避免这种错误,当前面线程完成这三步操作后,后面的线程才会运行。原子操作需保证多线程并发访问的原子性,每次操作涉及「读取-修改-写入」的完整流程,硬件需通过锁或缓存一致性协议维护正确性,导致额外性能损耗。GPU的原子操作依赖特定硬件单元(如L2缓存原子操作单元),其吞吐量有限。全局内存的原子操作比共享内存原子操作更慢(因全局内存访问延迟更高)。2)对共享内存的原子操作优先于全局内存(因共享内存延迟更低)。1、原子操作机制开销。原创 2025-03-09 23:47:41 · 552 阅读 · 0 评论 -
NVIDIA显卡驱动、CUDA、cuDNN 和 TensorRT 版本匹配指南
1)NVIDIA 显卡驱动需满足 CUDA 工具包的最低要求,例如 CUDA 11.8 需驱动版本 ≥515.43.04,CUDA 12.x 需驱动 ≥535.54.03。CUDA 与 cuDNN:需严格匹配,例如 CUDA 11.8 对应 cuDNN 8.6.0,CUDA 12.2 对应 cuDNN 8.9.0。显卡算力与CUDA版本的关系主要体现在显卡的Compute Capability(算力)决定了支持的CUDA版本。,输入显卡型号和操作系统类型,选择≥目标CUDA版本要求的驱动版本。原创 2025-03-09 20:34:18 · 7716 阅读 · 0 评论 -
CUDA编程之OpenCV与CUDA结合使用
OpenCV与CUDA的结合使用可显著提升图像处理性能。原创 2025-03-09 11:38:55 · 1572 阅读 · 0 评论 -
CUDA编程入门代码
从主机到设备复制数据。从设备到主机复制暑假。使用cudaMallocHost/malloc分配主机内存,使用cudaFreeHost/free释放主机内存。分配设备内存,cudaFree释放设备内存。在Host与Device间传输数据。原创 2025-03-08 18:28:04 · 710 阅读 · 0 评论