
CUDA
文章平均质量分 75
令狐少侠、
**
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Cuda—— Atomic Functions
原子函数对驻留在全局或共享内存中的一个 32 位或 64 位字执行读取-修改-写入原子操作。在 float2 或 float4 的情况下,对驻留在全局内存中的向量的每个元素执行读取-修改-写入操作。例如,atomicAdd() 在全局或共享内存中的某个地址读取一个字,向其添加一个数字,然后将结果写回同一地址。原子函数只能在设备函数中使用。原创 2023-03-27 13:55:12 · 1233 阅读 · 0 评论 -
cuda Sgemm矩阵乘法优化
一个线程的计算过程如下图所示,每次从Shared memory中取矩阵A的长度为TM的向量和矩阵B的长度为TN的向量,这两个向量做外积并累加到部分和中,一次外积共TM * TN次乘累加,一共需要循环BK次取数和外积。计算一次 FMA(乘累加)之前需要读一次 A 和读一次 B,众所周知,读取 Global Memory 的代价很大,通常都需要几百个 cycle(时钟周期),而计算一次 FMA 通常只需要几个 cycle,大量的时间被花费在了访存上。注意M、N要为4的倍数,M可以为任意数。,同时考虑边缘情况,原创 2023-01-18 09:32:17 · 813 阅读 · 0 评论 -
CUDA——向量化内存
cuobjdump 从 CUDA 二进制文件(独立的和嵌入在主机二进制文件中的文件)中提取信息,并以人类可读的格式呈现它们。此外,如前所述,如果您的指针未对齐或您的数据类型大小(以字节为单位)不是 2 的幂,则您不能使用矢量化加载。在本文中,我将向您展示如何在 CUDA C/C++ 中使用矢量加载和存储来帮助提高带宽利用率,同时减少执行指令的数量。最后,我们启动的线程数是我们在标量内核中执行的线程数的一半。所有其他指令都是相同的。但是,需要注意的是,执行的指令数量将减少一半,因为循环只执行了 N/2 次。原创 2022-11-25 15:13:03 · 1358 阅读 · 0 评论 -
CUDA动态并行实现快速排序
排序是任何应用的基本构造块的关键算法之一。有许多排序算法已经被广泛研究。,常见的排序算法时间和空间复杂度如下:一些排序算法属于分治算法的范畴。这些算法适用于并行性,并适合 GPU 等架构,在这些架构中,要排序的数据可以被划分进行排序。快速排序就是这样一种算法。如前所述,Quicksort 属于“分而治之”的范畴。与其他排序算法(如需要额外存储的合并排序)相比,快速排序的内存负载和要求更低。快速排序的更实际的实现使用随机化版本。随机化版本的预期时间复杂度为O(nlogn)。原创 2022-11-02 12:34:41 · 3716 阅读 · 6 评论 -
cuda——nms
cuda——nms原创 2022-08-07 23:13:47 · 1038 阅读 · 0 评论 -
激光雷达障碍物检测与追踪实战——cuda版欧式聚类
我实际测试过,cuda版本的欧式聚类耗时3ms左右,速度提升了10倍左右!直接看代码,注释很详细。原创 2022-07-15 17:10:22 · 1825 阅读 · 5 评论 -
CUDA——内存管理
内存管理CUDA是C语言的扩展,内存方面基本集成了C语言的方式,由程序员控制CUDA内存,当然,这些内存的物理设备是在GPU上的,而且与CPU内存分配不同,CPU内存分配完就完事了,GPU还涉及到数据传输,主机和设备之间的传输。为达到最优性能,CUDA提供了在主机端准备设备内存的函数,并且显式地向设备传递数据,显式的从设备取回数据。统一内存Unified Memory统一内存是可从系统中的任何处理器访问的单个内存地址空间(参见上图)。 这种硬件/软件技术允许应用程序分配可以从 CPU 或 GPU 上原创 2022-05-23 16:49:27 · 3256 阅读 · 1 评论