![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
GPU
文章平均质量分 52
zidian666
这个作者很懒,什么都没留下…
展开
-
nvcomp压缩算法原理
cascade高效压缩整形数据。由RLE、Delta encoding、Bit-packing组合。RLE:1,1,1,1,3,3 =》值(1,3) 数(4,2);Delta:1,3,2,4,3 =》 1,2,-1,2,-1 相对前一个数的偏移量;Bit-packing:5,6,9,5 =》 5(0,1,4,0) 相对基数的偏移量;LZ4面向byte数据。简单高速。适用于任意数据。LZ4通过匹配重复字符串进行压缩,不是全文...原创 2022-02-24 16:38:12 · 1041 阅读 · 0 评论 -
cuda 零拷贝内存、多GPU编程
零拷贝内存查询是否支持prop.canMapHostMemory将运行时置入可以分配零拷贝内存的状态 cudaSetDeviceFlags(cudaDeviceMapHost)一般来讲,CPU和GPU只能访问各自的内存,有时候打破这种规矩会获得性能的提升。cudaHostAllocWriteCombined 设置合并式写入,提高GPU读取这块内存的效率,当CPU也要访问这块内存时会降低效率。cudaHostAlloc(&h1_data, TOTAL_BYTE原创 2022-01-19 18:01:40 · 979 阅读 · 0 评论 -
cuda流硬件原理和多流优化
创建流 cudaStream_t stream; cudaStreamCreate(&stream);kernel<<<>>>分配符第四个参数可带stream,GPU将顺序执行已经放到stream中的工作。fun<<<16, 256, 0, stream>>>(d1_data, d2_data);cudaMemcpyAsync以异步方式进行拷贝,将工作交到stream中。cudaMemcp原创 2022-01-19 17:02:44 · 687 阅读 · 0 评论 -
cuda 原子操作、页锁定内存
设置运行cuda程序的计算功能集最低版本例如1.1版本,编译参数nvcc -arch=sm_11例如1.2版本,编译参数nvcc -arch=sm_12原子操作在CPU中,若两个线程对同一变量同时进行操作,可能导致结果不正确。原子操作保证多线程一次操作一个变量。GPU中也如此GPU中启动的线程块为处理器数量的两倍时,效率最佳。原子操作函数均以atomic开头cudaHostAlloc() 分配页锁定内存此函数作用和参数都和malloc一样,都是在主机上分配内存,为什么cud原创 2022-01-18 14:26:11 · 542 阅读 · 0 评论 -
cuda实战阅读笔记:共享内存、常量内存、事件时间
共享内存变量__shared__ type var;所有线程都能对var进行操作,例如一个数组,每个线程写入var中的一项。为保证所有线程均完成对var的读写后再对var进行操作,应使用__syncthreads() 进行同步。使用__syncthreads()应注意,线程代码不能让线程无法结束,导致__syncthreads永远得不到同步.常量内存变量__constant__ type var;得益于GPU中巨量的线程,GPU的数据吞吐量不再受限于计算速度,而是带宽。GPU提供.原创 2022-01-18 11:09:02 · 354 阅读 · 0 评论