自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 【Valgrind】安装报错: 报错有未满足的依赖关系: libc6,libc6-dbg

libc6-dbg : 依赖: libc6 (= 2.31-13+deb11u11) 但是 2.36-9+deb12u7 正要被安装。是由于系统中有部分依赖不符合,按照报错,我系统的上的libc6,libc6-dbg所需依赖比valgrind要的要高不少。libc6 : 破坏: valgrind (< 1:3.19.0-1~) 但是 1:3.16.1-1 正要被安装。当然一种方法是降低这两个依赖的版本,但是可能存在什么系统问题,所以转而还是寻找其他解决方法。

2025-01-29 18:23:06 283

原创 使用.gitgnore 忽略可执行文件,以及gitignore文件不生效问题

但是还是不生效,也就是我重新Make生成可执行文件之后,再文件修改列表还是有更新的可执行文件在待commit列表。之前有过一次提交,那一次提交中包含了该可执行文件,所以导致。,忽略了linux无后缀的可执行文件。查了一下,原来是因为我在修改。对该可执行文件没生效。

2024-12-24 14:04:29 241

原创 【小白包会的】使用supervisor 管理docker内多进程

包含两个py文件,模拟两个不同的服务,一个服务process1 执行一个循环的进程(这里只是示例,可以是别的什么服务)但是有的情况中,希望一个docker中运行多个进程,运行多个服务,也就是一个docker容器执行多个服务。调研了一下,发现可以通过**supervisor ** 实现,综合对比下来,上手难度和配置相对来说还算简单。process2 来运行一个fasapi服务,服务监听8096端口。一般情况下,一个docker是仅仅运行一个服务的。总的来说需要在单体服务的基础上做以下操作。

2024-12-16 18:27:48 598

原创 softmax+crossentropy 前向损失 与 反向梯度

对于梯度计算并无影响,这里只是方便理解。这部分导数分成两部分计算,i==k 和 i!但是一般情况下,目标输出采用one-hot编码,只有一个元素值为1,其他元素值为0,例如。因为指数爆炸的存在,很容易发生溢出的,所以一般在计算时候,在分子分母同乘。值未变,但是就不那么容易造成溢出了。我们会看softmax的公式。计算其softmax。假设我们的目标输出为。

2024-12-09 19:17:22 928

原创 在docker容器内部访问主机服务

(仅对与linux系统)希望在容器内部能够访问主机上的服务,比如在主机上部署了某服务A监听了端口11434:localhost:11434。此时通过docker部署了另外一个服务B,服务B希望能够访问主机上的服务A,由于docker有内部网络的原因,在容器内部无法直接访问主机IP。docker20增加了解决办法。

2024-12-06 11:47:53 924

原创 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 707

原创 CublasLt 极简入门

为了克服这种开销,建议使用cublasLtMatmulAlgoGetHeuristic()查询启发式算法一次,然后使用cublasLtMatmul()在后续计算中重用结果。网上搜了挺多,Cublas的文档有不少,但是对于cuda10以上轻量化的cublasLt 的文档或博客却很少。在执行矩阵乘法前,需要定义输入矩阵和输出矩阵的描述符。对具体的矩阵乘法算法以及输入矩阵A,B,C以及输出矩阵D通过函数。用于描述每个矩阵的布局,包括行数、列数、数据类型等。为乜咯矩阵初始化和设置矩阵尺寸,类型,信息等。

2024-11-12 18:31:50 533 1

原创 CMAKE 编译CUDA项目失败 “/usr/bin/nvcc“ is not able to compile a simple test program.

应该尽可能添加在 project 命令之前,因为cmake在执行project命令时会自动检测并设置编译器,所以应该在project命令之前设置正确的nvcc编译期路径。可能是因为我的cuda为手动编译的原因,导致在。目录下没有找到正确的nvcc 路径导致失败。使用CMAKE编译cuda项目时失败。环境: ubuntu 20.04;在执行 cmake 命令时添加。这个nvcc路径可以通过。cuda版本:11.8。​ 在cmake中添加。

2024-11-11 17:36:53 663 2

原创 docker pull/build 失败 设置国内镜像源

参考 : docker 错误 Error response from daemon,request canceled while waiting for connection在写完一个服务构建时候写完docker 执行build 报错:有点搞, 第一行就报错了看错误应该是网络问题,拉取镜像时候就报错了为了验证猜想,在命令行随便执行一个pull命令 拉取一个MySQL镜像试一试果不其然出错了:Error response from daemon: Get “https://registry-1.docker.

2024-11-08 15:41:58 1686

原创 Host key for github.com has changed and you have requested strict checking和github.com‘s passwor解决方案

我的第一次执行上述步骤,能连接上,可是过了一天之后又报同样错误,再次执行上述操作,又一致需要输入github.com 密码。将github.com ssh-rsa 开头的公钥 复制到 ~/.ssh/known_hosts 文件中。打开 ~/.ssh/known_hosts, 删除掉 github.com 开头的行。更新 ~/.ssh/known_hosts 中的公钥。可能是github公钥更改,导致连接不上。尝试输入 github的账户密码,也不行。按照下面两种方式尝试,最终解决。

2024-11-06 11:10:12 856

原创 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 1222

原创 cuda 中的__restrict__ 作用详解

和 const 来修饰传递给内核的全局指针,那么在为 cc3.5 及更高版本的设备生成代码时,这也向编译器发出了强烈的提示,使这些全局内存负载流经只读缓存。从编译器的角度看,一个重要的事是指针别名,指针别名会阻碍编译器做各种各样的优化。同样,编译器不能将 c[4] 的计算重新排序到 c[0] 和 c[1] 计算的附近,因为之前对 c[3] 的写入可能会更改 c[4] 计算的输入。通过这样做,减少了内存获取和计算的次数,与之平衡的是“内存”加载和公共子式的带来的对寄存器的压力增加。_ 关键字支持受限指针。

2024-11-04 11:37:19 992

原创 Adam 优化算法《学习笔记》

Adam中包含两个重要部分:(RMSprop算法) 与在标准梯度下降算法中,每个参数在每次迭代时都使用相同的学习率。如果学习率过大则可能无法收敛;如果过小则收敛非常慢;而Adam算法通过计算梯度的一阶矩估计和二阶距估计,从而为不同的参数设计独立的自适应学习率。

2024-10-29 17:09:54 1171

原创 multi-Head Attention

大语言模型中一个"计算块"是由多个 自注意(self-attention)和反向传播组成, 然而一般LLM使用的是 masked self-attention 以及 multi-headed self-attention。

2024-10-22 18:55:11 723

原创 llm.c项目运行(小白版)

可能没有cudnn,会报异常:Makefile:122: *** ✗ cuDNN not found. See the README for install instructions and the Makefile for hard-coded paths. Stop.不过我的显卡显存不够,于是选择编译train_gpt2.cu, 该文件使用了混合精度训练。需要使用openAI发布的GPT2权重初始化,然后微调,以便在C中加载。这里可能会失败,没关系,多试几次可能就成功了。

2024-10-12 18:28:57 543

原创 cuda矩阵乘法优化之路

相对于1中的共享内存优化中,相当于每加载一个BLOCK_SIZE* width 的$M_i $ 时候,从N中加载两个 width * BLOCK_SIZE , 重复利用了Mi中读取的值, 其实这也是PMPP中的一个课后习题。在上面共享内存中,优化了数据内存读取,然而仍然是一个线程计算一个值,一次读取和计算的比例很低,在PMPP中提到一个启发式的思路,即一个线程计算两个P中元素。矩阵乘法,首先最朴素的方法,当然是类似CPU的直接计算,不过相对于CPU而言,GPU可以直接进行并行计算,对于矩阵乘。

2024-10-12 11:14:34 1031

原创 cuda中的错误处理

cuda中的错误处理

2024-10-10 11:50:24 316

原创 CSR 稀疏矩阵压缩 c++实现

使用c++实现了稀疏矩阵的CSR压缩

2024-09-25 15:16:21 336

原创 任意长度并行前缀和 扫描算法 《PMPP》笔记

在前面代码中,一个块最后的执行结果保存到了Y数组中,Y 数组保存了每个段扫描的结果,可以称之为扫描块, 一个扫描块只保存了当前块中前面所有元素的累加值,需要把这些扫描块合并到一个最终的结果中。上述栗子, 在16个输入的数组中,分为4个扫描块,kernel将4个扫描块看做独立的输入数据集处理,扫描kernel结束之后,每个Y元素保存了这个扫描块中扫描的结果。在第二步中,从每个扫描块中收集最后一个元素,放进一个数组S中,然后对此数组进行扫描,然后将扫描S数组后的值累加到对应的扫描块上。

2024-09-24 15:26:37 545

原创 计算polydata相交

vtk.vtkBooleanOperationPolyDataFilter()

2024-09-06 16:54:55 283

原创 使用numba报错: E ImportError: numpy.core.multiarray failed to import

使用numba报错: E ImportError: numpy.core.multiarray failed to import

2024-08-27 10:45:17 411

原创 VScode 批量操作

按照1的方法多选光标之后,ctrl + alt+ i 即可。按住 alt/option 键, 选择需要批量操作的位置。如果是多行,则按住 alt+shift 键。VScode 批量操作。

2024-07-24 18:58:19 1437

原创 c++内存对齐

32位系统上int是4字节, char是1字节, 上述一个结构体占用内存应该是 4+ 1=5byte. 但是结果却是8。以32位系统为例,存取粒度为4字节,该处理器只能从地址为4的倍数的内存开始读取数据。内存对齐能够提高CPU读取数据的速度,减少CPU访问数据的出错性, 避免指针访问出错。一般的处理器以2,4,6,16字节甚至32字节为单位来取内存,即。上述结构体中最长数据类型为int 4字节。和结构体最长数据类型中较小的那个。对齐模数 gcc中默认对齐模数。有效对齐值(对齐单位): 给定值。

2024-07-24 10:51:19 329

原创 gitlab更新了ssh-key之后再登录还是要求输入密码, 报 Permission denied, please try again.

gitlab连接报错: debug1: Authentications that can continue: publickey,password Permission denied, please try again.

2024-07-23 11:12:06 725

原创 运行时多态和编译时多态

​ 在运行时才能确定调用哪个函数,动态绑定。实际上是子类重新定义了父类的虚函数, 父类的指针就根据赋给它的不同子类的指针, 动态的调用属于子类的虚函数, 这样的函数调用在编译期无法确定。: 派生类重新定义父类中的函数, 函数名,参数列表,返回类型都必须和父类中被覆盖的函数严格一致, 只有函数体不同。静多态在编译时就确定调用函数的类型,函数重载就是一个典型的静多态。: 派生类的函数屏蔽了与其同名的基类函数。多态可以分为静多态和动多态。

2024-07-19 18:20:11 470

原创 虚函数表存放在哪里

总结: 虚函数表类似于类中的静态成员变量,和静态成员变量一样是全局共享的,属于一个类所有对象的,并不是某一个类特属的, 在linux/unix中 存放在可执行文件的只读数据段中。, 而虚函数指针是在对象实例化时候创建(调用构造函数时), 所以 **虚函数指针在运行时创建 ** , 将该类虚函数表的地址赋值给对象的虚函数指针。有虚函数的类, 改类的大小会增加一个指针的大小(32位系统是4字节, 64位系统是8字节)。一般分为五个区域: 栈区, 堆区,函数区(存放函数体等二进制代码), 全局静态区, 常量区。

2024-07-19 16:53:26 718

原创 求字符串中最早出现的次数最多的字符

首先考虑到使用map记录每个字符出现的次数, 遍历一遍字符串之后得到出现的最大次数。但是此时可能有很多个字符具有相同的最大次数, 所以再遍历一次字符串,得到最早出现的最大次数字符。在使用map的时候,会增加很多建表插入,计算hash的时间, 因为char和int是可以转换的, 所以直接使用数组其实也可以。实际上正向遍历字符串的时候是可以获取到最大次数和字符的,但是是最后出现的字符。如果反向遍历字符串,那么就可以得到最早出现的字符了。如 “aabbb” 返回 ‘b’“baab” 返回 ‘b’

2024-07-18 11:54:45 396

原创 反转链表并插值

反转链表 变体 面试题

2024-07-15 18:05:15 231

原创 New和malloc区别

New和malloc区别

2024-07-15 10:38:24 138

原创 python 引入并修改模块全局变量问题

为了方便全局变量的管理, 一般将全局变量放到一个单独的。py文件中, 对于其中一些逻辑控制类变量, 比如 一个全局变量文件 const.py, 一个文件a.py 修改了const.py 中一些变量值, 希望在另一个文件 b.py中读取到更改,并且做出相应的逻辑处理。在a.py中对值类型的修改,在b.py中是看不到的, 引用类型和实例化的对象(如单例)则相反。值类型包括:数字,布尔,字符串等。而引用类型包括:列表,字典等。

2024-07-12 12:03:41 404

原创 PyQT实现开关按钮

【代码】PyQT实现开关按钮。

2024-07-05 14:04:58 350

原创 Opencv4 重映射

【代码】Opencv4 重映射。

2024-07-04 17:52:30 146

原创 PYQT+orientationMarkerWidget 不显示的问题

实际上在VTK论坛上也有讨论, 比如:https://discourse.vtk.org/t/vtkorientationmarkerwidget-wont-show-in-pyqt5/6320。在进行上述修改之后,需要将vtk.vtkOrientationMarkerWidget() 的实例作为 主交互窗口MainWindow 的一个属性,才能进行显示。但是我实际根据轮然中修改也是没有作用(吐槽, 论坛解答给的结果也一样的不显示)想添加一个方向控件,然后再添加上视角的一键 A,S,I,P,L,R等等。

2024-07-04 11:16:54 381

原创 git commit 时候 yapf 报错 无法提交

git commit 执行代码检查时候报错问题解决

2024-06-25 18:03:12 186

原创 linux安装torch

ubuntu 安装 pytorch

2024-06-21 11:59:28 916

原创 RAS坐标与IJK世界坐标转换

RAS坐标与IJK坐标之间的转换

2024-06-21 11:27:30 507

原创 实现对vtkpolydata 表面光滑处理

对如下vtkpolydata (.vtp) 表面充满层次感, 并不光滑, 希望使其变得光滑的处理。

2024-06-14 11:15:56 316

原创 VTK 实现对vtkpolyata 膨胀放缩

通过VTK实现对polydata的膨胀放大. vtkwarpvector 和对比 vtkImplicitPolyDataDistance

2024-06-13 14:42:24 652 3

原创 python socketserver shutdown问题

也就是说,如果需要关闭socketserver服务,**需要在与serve_forever运行线程不同的另一个线程调用shutdown()**才行,否则会死锁。socketserver服务独立于客户端进程,但是需要在客户端关闭时后也通知关闭socket server进程。使用python的socketserver为客户端实现一个简单的socket server服务进行通信。之前项目是使用 close发现该socketserver服务依然存活。查阅了socketserver源码和网上资料 包括。

2024-05-28 16:58:44 199

原创 ubuntu重启后分辨率异常,识别不到显卡驱动, 更新显卡驱动吃网卡

新装系统20.04之后,偶发重启之后分辨率异常(变为1024**)并且无法选择别的分辨率, 使用nvidia-smi 报错, 看起来是因为显卡驱动异常,考虑更新显卡驱动,查询很多才发现实际原因是,ubuntu自己更新了linux微内核, 导致显卡驱动没了,但是手动安装了显卡驱动之后,可能会吃网卡导致没有网络。这两个命令效果应该是一样的,但是情况是这样安装之后再重启会发现虽然分辨率什么的正常了,nvidia-smi命令也能正常输出显卡信息,但是。查看缺少的内核系统 (使用。命令查看推荐的显卡驱动。

2024-05-16 14:03:45 738

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除