自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【c++八股文】Day2:虚函数表和虚函数表指针

在保证安全的前提下实现高效运行时多态。

2025-06-11 16:01:13 158

原创 【CUDA】block复用与kWaveNums

本文探讨了GPU编程中block复用与增加block数量(kNumWaves)的平衡问题。二者看似矛盾,实则目标不同:block复用减少启动开销,适合任务量大但每个任务轻的场景;增加block数量提升GPU利用率,适合总任务量小的计算密集型操作。文章通过具体场景示例说明两种策略的适用条件,并给出实践建议:1)评估单个block计算量;2)估算GPU并发能力;3)设置gridDim.x=并发block数×kNumWaves(4-8);4)必要时引入block复用。最终目标是使block数量既能充分占用GPU资

2025-06-11 11:39:58 658

原创 【c++八股文】Day1:new和malloc

特性newmalloc分配方式调用(默认 malloc)调用malloc初始化✅ 调用构造函数❌ 不调用构造函数返回类型指定类型指针(自动推导)void*(需强转)是否需传大小❌ 不需要(编译器自动推导)✅ 需要显式传入异常处理分配失败抛出分配失败返回nullptr可重载✅ 可重载❌ 不可使用语义面向对象、推荐用于类结构体、POD、原始内存块操作是否需要大小为什么malloc✅ 需要函数本身不懂类型,用户告知free❌ 不需要内部已经记录了分配大小new❌ 不需要。

2025-06-09 16:04:24 823

原创 cuda程序一直输出0

我怀疑我的cuda版本和驱动不匹配,我的cuda是12.6但是显卡是gtx1650,我应该在编译时候指定什么参数?

2025-04-27 22:42:25 135

原创 [Git] rebase变基

在pr界面也有update branch的选项,我没有注意选择update with merge commit和update with rebase,现在已经选择了update with merge commit,因此多了一个commit在远端,现在我又落后远程仓库了,我希望不要有这个merge commit,连带之前的也取消掉,我应该怎么做。场景:提交了pr但是远程仓库更新了,这时候需要将这个pr的commit变基到最新的提交。在feature-branch下。

2025-04-07 16:16:28 204

原创 [Git] 使用ssh链接github仓库

【代码】[Git] 使用ssh链接github仓库。

2025-03-26 11:29:46 131

原创 【LeetCode】KMP算法

我们只需要将当前模式串中的指针移动从索引0开始的最大长度的位置,也即2,对应字符。,之后我们继续逐个移动字符进行匹配,如此直至找到匹配的子串或者文本串结束。把失败的后缀作为下一次匹配的前缀,这就是KMP算法的基本思想。如果直接计算每个子串的最长前后缀的长度,那么计算的复杂度将达到。,我们的目标是在文本串中寻找是否有子串与模式串相同。的下一个字符匹配失败的时候,我们查阅前缀表,得知。相同前后缀的最大长度为2,我们的目标是将。,但是在下一个字符的匹配中失败了。我们在失败的匹配中,匹配了两次。

2025-03-05 23:15:35 702

原创 [工具配置]AstroNvim安装流程

Astronvim安装流程

2025-01-28 10:34:17 338

原创 【CUDA笔记】为什么增加bank数可以提高总线带宽的利用率?

DRAM系统常采用bank和channel技术来提高访问效率,处理器包含一个或者多个channel,每个channel都是一个内存控制器,其总线将一组DRAM存储体连接到处理器,如下图所示:下图进一步解释了为什么bank技术可以提升channel的数据传输带宽。其中灰色的部分称为access latency,黑色的部分称为data transfer time。在实际中,access latency远远长于data transfer time。

2025-01-15 17:59:14 281

原创 【CUDA笔记】Tiling的访存优化分析

shared memory常用来作为数据缓存存储中间结果等。

2025-01-02 21:19:18 683

原创 【CUDA实验报告】CUDA中的误差累积导致的精度问题

以矩阵乘法复现CUDA中因为误差累积而导致的精度问题。

2025-01-01 23:48:35 452

原创 【CUDA手册】CUDA中的函数前缀及说明

CUDA中的函数前缀代表函数的不同用途,包括:__global__, __device__, __host__等

2025-01-01 16:59:47 231

原创 【CUDA手册】CUDA中的内存类型

对比介绍了CUDA中的register,local memory,shared memory,global memory,const memory以及各自的用途。

2024-12-30 21:14:35 1572

原创 Transformer的抽象理解

从抽象的角度来理解self-attention奇怪的数学公式

2024-12-27 16:27:26 616

原创 【CUDA手册】为什么cudaMalloc()需要一个指针的指针?

cudaFree和cudaMalloc的设计差异源于它们的功能和使用方式。让我们详细解释为什么cudaFree只需要一个指针参数,而cudaMalloc需要一个指针的指针作为参数。

2024-12-16 16:42:15 523

原创 DLsys-14-卷积实现

简述卷积的三种实现方式:逐元素乘累加,矩阵乘法,im2col

2024-12-13 23:29:06 616

原创 C++中为什么要有万能引用和完美转发

在模板函数中,形参类型写作T&&时,可能会出现一种特别的情况:它既能匹配左值引用(lvalue reference),也能匹配右值引用(rvalue reference)。这就是所谓的万能引用。

2024-12-11 17:59:52 1363

原创 C++如何从unique_ptr基类指针访问派生类对象的成员

基类指针指向派生类对象时,这个基类指针只能调用基类的成员函数。一个常用的做法是在基类中定义虚函数,派生类实现。这样使用基类指针调用对象的该方法时,不同的对象会有不同的行为从而实现多态。方法获取原始指针,然后进行类型转换。这种方法不会释放所有权,但需要确保在转换后正确管理所有权。是运行时类型检查,确保转换是安全的。如果基类指针实际上指向的不是派生类对象,转换将失败。如果你释放了原始指针的所有权(如使用。方法来释放所有权,然后将原始指针转换为派生类指针,最后重新包装为。方法),确保在转换后重新包装为。

2024-11-26 19:30:02 334

原创 C++传参为什么要传引用

在定义引用时,程序将引用和它的初始值在一起,而不是将初始值拷贝给引用。一旦初始化完成,引用将和它的初始值对象一直绑定在一起,将引用重新绑定给另外一个对象是不可行的,也因此引用必须初始化。在C++中,函数参数的传递方式有多种,包括传值、传引用和传指针。选择哪种方式取决于具体的需求和场景。

2024-11-20 11:52:18 270

原创 PYNQ3.0镜像制作 基于ZYBO Z7-20

基于Vitis2022.1、Petalinux2022.1、ubuntu20.04、Zybo-Z7-20构建Pynq3.0镜像

2023-08-09 09:36:03 1774 6

原创 解决使用git clone报错问题

【代码】解决使用git clone报错问题。

2023-08-06 15:24:39 232

空空如也

空空如也

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

TA关注的人

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