
读书笔记
文章平均质量分 80
吃肉夹馍不要夹馍
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
attention 注意力机制 学习笔记-GPT2
多头注意力实际上就是将单个Q,K,V向量,分裂为多个头,然后和self-attention一样流程计算每个头的注意力,最后得到一个输出向量,然后将多个头的输出向量拼接到一起,得到最后的输出结果。对于masked-attention呢,实际上就是计算注意力得分时候,对第t个单词,仅仅计算0到t单词的注意力得分,t~T 部分的注意力得分不计算,计算softmaxs时t之后的部分以初值0代替。而后和self-attention一样的,每一个注意力头的Value向量和该头的注意力得分相乘,得到该注意力头的结果。原创 2024-11-14 18:54:38 · 765 阅读 · 0 评论 -
Warp ShuffleCUDA 线程束洗牌函数
warp级别的操作原语,通过shuffle指令,允许thread直接读取其他thread的寄存器,只要两个thread在同一个warp中。一般架构下GPU中的线程数大小是32, 所以参数取值范围只能取2,4,8,16,32中之一。掩码指定将要参与计算的线程,当掩码中的一个二进制位为1时,表示对应的线程参与计算,反之,如果为0则忽略对应的线程。另外,函数中的参数mask是一个32位的掩码,刚好对应一个线程束内的32个线程。将高线程号的数据平移到低线程号中,而恰巧,这正是在归约问题中需要的操作。原创 2024-11-05 11:33:35 · 1303 阅读 · 0 评论 -
cuda 中的__restrict__ 作用详解
和 const 来修饰传递给内核的全局指针,那么在为 cc3.5 及更高版本的设备生成代码时,这也向编译器发出了强烈的提示,使这些全局内存负载流经只读缓存。从编译器的角度看,一个重要的事是指针别名,指针别名会阻碍编译器做各种各样的优化。同样,编译器不能将 c[4] 的计算重新排序到 c[0] 和 c[1] 计算的附近,因为之前对 c[3] 的写入可能会更改 c[4] 计算的输入。通过这样做,减少了内存获取和计算的次数,与之平衡的是“内存”加载和公共子式的带来的对寄存器的压力增加。_ 关键字支持受限指针。原创 2024-11-04 11:37:19 · 1140 阅读 · 0 评论 -
Adam 优化算法《学习笔记》
Adam中包含两个重要部分:(RMSprop算法) 与在标准梯度下降算法中,每个参数在每次迭代时都使用相同的学习率。如果学习率过大则可能无法收敛;如果过小则收敛非常慢;而Adam算法通过计算梯度的一阶矩估计和二阶距估计,从而为不同的参数设计独立的自适应学习率。原创 2024-10-29 17:09:54 · 1214 阅读 · 0 评论 -
cuda矩阵乘法优化之路
相对于1中的共享内存优化中,相当于每加载一个BLOCK_SIZE* width 的$M_i $ 时候,从N中加载两个 width * BLOCK_SIZE , 重复利用了Mi中读取的值, 其实这也是PMPP中的一个课后习题。在上面共享内存中,优化了数据内存读取,然而仍然是一个线程计算一个值,一次读取和计算的比例很低,在PMPP中提到一个启发式的思路,即一个线程计算两个P中元素。矩阵乘法,首先最朴素的方法,当然是类似CPU的直接计算,不过相对于CPU而言,GPU可以直接进行并行计算,对于矩阵乘。原创 2024-10-12 11:14:34 · 1125 阅读 · 0 评论 -
cuda中的错误处理
cuda中的错误处理原创 2024-10-10 11:50:24 · 342 阅读 · 0 评论 -
CSR 稀疏矩阵压缩 c++实现
使用c++实现了稀疏矩阵的CSR压缩原创 2024-09-25 15:16:21 · 373 阅读 · 0 评论 -
任意长度并行前缀和 扫描算法 《PMPP》笔记
在前面代码中,一个块最后的执行结果保存到了Y数组中,Y 数组保存了每个段扫描的结果,可以称之为扫描块, 一个扫描块只保存了当前块中前面所有元素的累加值,需要把这些扫描块合并到一个最终的结果中。上述栗子, 在16个输入的数组中,分为4个扫描块,kernel将4个扫描块看做独立的输入数据集处理,扫描kernel结束之后,每个Y元素保存了这个扫描块中扫描的结果。在第二步中,从每个扫描块中收集最后一个元素,放进一个数组S中,然后对此数组进行扫描,然后将扫描S数组后的值累加到对应的扫描块上。原创 2024-09-24 15:26:37 · 563 阅读 · 0 评论 -
vscode文件编译问题undefined reference to... collect2.exe: error: ld returned 1 exit status
undefined reference to 和collect2.exe: error: ld returned 1 exit status的小白问题原创 2023-01-29 00:54:31 · 8371 阅读 · 6 评论 -
python的简单调试
python的简单调试记得以前上大学时初次学C语言,常常是写代码十几分钟,改bug数小时,常常因为变量定义,分号,指针各种问题搞得头皮发麻,当时为了物理实验复杂计算编程序解决(那时候还不会matlab),结果往往是因为各种变量以及其中间变量的变量类型的定义就已经糊涂了,最后问题已经不是计算物理实验而是改程序bug,当然,现在看来,用C语言来进行科学计算不是不可以,只是太过繁琐,以至于往往把大部分精力用来调试程序而不是解决实际的问题。本想使用工具帮助更快的解决问题,结果却因为工具本身耗费大量精力以至于无法针原创 2021-11-28 16:16:42 · 1388 阅读 · 0 评论 -
Python 文件读取操作详解
Python 文件读取操作详解当前工作目录每个运行再计算机上的应用程序,都有一个“当前工作目录”,或称之为cwd,python中可以调用原生os包下的方法对文件目录进行简单操作。os.getcwd() 取得当前工作路径的字符串os.chdir(str) 改变当前工作目录至str路径绝对路径与相对路径绝对路径:从根文件夹开始相对路径:相对于当前工作目录其中包含两个特殊的字符 (.) 和(…) 其中单个的点(.) 表示当前工作目录的缩写,两个点(…)表示父文件夹。创建新文件夹原创 2021-11-14 20:14:58 · 1465 阅读 · 0 评论 -
python 正则表达式 ,看这篇就够了
python 正则表达式学习python正则表达式学习创建正则表达式对象括号分组管道方法匹配多个分组选择匹配多次匹配findall方法通配符python正则表达式学习很久没有用python写正则,有些荒废,很多都忘记了,这段时间正好看了python编程书籍,算是小菜鸡的温故知新,正则表达式有很多实际的用处,然而有时候却很复杂,在用python写爬虫的时候很有用,用的好可以事半功倍,简单的回顾一下python正则表达式的一些简单用法。创建正则表达式对象Python 中所有正则表达式的函数都在 re 模原创 2021-11-07 13:27:31 · 478 阅读 · 0 评论