CUDA-Programming icon indicating copy to clipboard operation
CUDA-Programming copied to clipboard

Sample codes for my CUDA programming book

Results 14 CUDA-Programming issues
Sort by recently updated
recently updated
newest added

樊老师,您好!我已经阅读完了您的书籍,现在在使用CUDA开发一种高性能的算法,能比NV的某官方库更快。不知道您是否有类似于读者群之类的HPC交流群?我是某985大学的硕士,应该也可以为社群做出贡献。多谢!

![8967D61FB388618CD624DFBA2BE54F35](https://user-images.githubusercontent.com/65449458/157788762-78c90707-5455-4407-8b83-d55cca668c89.png) 此处的FMA只提到了 d=a*b+c,具体是怎么算的?因为这种公式可能可以引用到论文中,或许下一版可以增加一点介绍~比如专门增加一章讲解,CUDA程序性能衡量指标,以及对应的公式,工具。 书写的很好,感谢作者!

樊老师好,读完您的著作,对cuda编程有了很多新的认识。读书过程中发现了一处问题,P108提到”如果想要在循环内去掉对线程号的约束,又要避免出现读-写竞争,可以将相关代码改写如下: ``` C++ real v = 0; for (int offset = 16; offset > 0; offset >>= 1) { v += s_y[tid + offset]; __syncwarp(); s_y[tid] = v; __syncwarp(); }...

为什么我跑出来的结果是0 1 2 3或者0 0 0 0 这是为什么?

针对[最新的勘误表](https://github.com/brucefan1983/CUDA-Programming#%E7%AC%AC%E4%B8%80%E7%89%88%E5%8B%98%E8%AF%AF)核对了下2022年10月第5次印刷的书籍。 大部分已经该改正。除了以下几处。 1. 书中Listing 12.4代码与现GitHub项目中的oversubscription2.cu代码差别较大,与之前[CUDA-Programming-v1.0的代码](https://github.com/brucefan1983/CUDA-Programming/releases/tag/v1.0)也有出入。至少“size 应改为 size / sizeof(uint64_t)”改的不成功,改成了“size) / sizeof(uint64_t)”。至少是笔误了。 我自己 | 不安全的代码 | 第 143 页 | 程序中第 23 行核函数的第二个参数 size 应改为 size / sizeof(uint64_t)。我已修改本仓库中 [对应的程序](https://github.com/brucefan1983/CUDA-Programming/blob/master/src/12-unified-memory/oversubscription2.cu)。 -- |...

在本书的第129页,Listing 11.2 中列举了本章程序 kernel-kernel.cu 的部分内容。 ![Feishu20230212-213028](https://user-images.githubusercontent.com/97966234/218314037-ae771c8e-3c3c-4d50-8040-01a597e53266.jpg) 另外,在书本的第130页,第二段的末尾,您也说明,“为了计时方便,核函数中故意做了10^6次加法运算。” 但是,在Github相应的代码库中(CUDA-Programming/src/11-stream/kernel-kernel.cu),我们可以发现,其中的`add`函数仅仅增加了10^5次,也就是说,您展示于库中的代码,与书本展示的代码并不匹配。 ``` void __global__ add(const real *d_x, const real *d_y, real *d_z) { const int n = blockDim.x * blockIdx.x + threadIdx.x; if...

您好,请教几个问题。 我的显卡是2080Ti 当我读到,109页`10.3 更多线程束内的基本函数`中的`Listing 10.2`(如下) ```c++ #include "error.cuh" #include const unsigned WIDTH = 8; const unsigned BLOCK_SIZE = 16; const unsigned FULL_MASK = 0xffffffff; void __global__ test_warp_primitives(void); int main(int argc,...

Page 63关于6.2.4节最后一段第三行,“该表只包含了少数几个计算能力,更完整的列表见《CUDA C++ Programming Guide》的附录H”,这一句话是不对的。因为该在线网站已经没有附录了。其本该对应的资料已经转移到https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#compute-capabilities中,这是对应于其第16章【计算能力】的表21中的部分数据。此处需要更新改正!

P65 6.3.2节第一段第三行,“获得100%的占有率并不是获得高性能的必要或充分条件”,这句话不就是指100%占有率和获得高性能毫无关系么?感觉和后面矛盾啊。最多也是就说,“获得100%的占有率并不是获得高性能的充分条件”,这样比较合适?还是说有什么更深层次的理解?这里说明力度也不够啊?我觉得读起来很困惑。

我将该仓库中的check1api.cu及error.cuh代码直接拷贝在ubuntu 22.04 LTS的VS code中并保存在同一文件夹下,后用命令nvcc check1api.cu,编译结果是no error。GPU是GeForce RTX 4090。不知道具体原因为何,希望查看解答一下。