Skip to content

caixiao-0725/cuda-course

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

课程笔记 cuda

课程信息说明

课程网站:https://www.bilibili.com/video/BV1Qc411J7DB?p=45&vd_source=60ffcefe479d27f859009dd3a47fcea1

这门课主要讲解了cuda中的常用函数与算法,并做了相关实验

课程代码说明

reduce

   reduce文件夹下面的代码展示了邻域求和  间域求和的方法,以及减少warp divergence的方法,不过gpu的用时一直在波动,啥子情况?计时函数有问题?   

   cuda会自动优化,所以减少了warp divergence以后的测试时间和不减少差不多。(咱也不清楚怎么关自动优化)
   
   间域并行比领域并行快了很多,具体原因是啥? 可能是因为邻域并行的warp里有一半的线程不工作?
   
   关于循环展开,展开2次比不展开提升很多,展开次数越多,效果越不明显,感觉展开4次或者8次就差不多了

Image text

pinned_zero

将零拷贝内存和页锁定内存做了对比。

页锁定内存相比于零拷贝内存会慢一点,可能是慢在从主机内存拷贝到显存的时间了,注释掉页锁定的拷贝语句之后,确实是页锁定内存会快一点。

这时就要问了,看起来零拷贝比页锁定要快啊,那还要这个页锁定干嘛呢,当然是有用的,因为,零拷贝的内容不能缓存在显存里,如果内容要被反复使用,零拷贝就要不停地从内存里取值,增加总线压力,这样相比页锁定也就处于劣势。

shuffle

我看的课程里面用的是__shfl ,不过好像现在都是用__shfl_sync,这俩好像没什么区别。

shuffle在我看来是跳过了共享内存实现通信,他允许一个线程直接读取另一个线程的寄存器。(以前都要传到共享内存然后再被读取)

有up,down,xor等操作,跑下代码大概就知道什么作用了

About

codes for cuda course.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published