自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 线程块的大小如何选择

线程块大小选择是一个平衡艺术,目标是最大化占用率,通常从128或256开始实验,根据具体核函数的资源需求和内存访问模式进行调整。这个过程是一个实验性的过程,需要在"更多的线程块"和"更大的线程块"之间找到最佳平衡点,目标是最大化SM的资源利用率和执行单元的活跃度。

2025-11-23 18:33:09 884

原创 决定SM可驻留的线程块和线程数的因素

SM能够同时跟踪和管理的线程总数是有限的。这个限制是为了确保硬件调度器有足够的能力管理所有线程的状态,通常与Warp调度器的数量有关(例如,1536个线程 / 32线程每Warp = 48个Warp)。如果一个线程块中的每个线程需要很多寄存器,那么即使线程块槽位和线程槽位还有空余,SM也可能因为寄存器耗尽而无法启动新的线程块。SM的共享内存的大小和每个线程块需要的共享内存共同限制了可驻留的线程块数目。SM的总寄存器数量和每个线程需要的寄存器数量共同限制了可驻留的线程数量。线程槽位限制最大能驻留的线程数量。

2025-11-22 16:43:10 185

原创 cuda核函数的执行配置和GPU中的SM的映射

CUDA核函数的执行配置与SM的映射是一个由硬件自动完成的、动态的、以线程块为分配单位的过程。程序员通过设计Grid和Block的维度,间接地控制了SM上的工作负载和资源分配。提供足够多的、大小合适的线程块,并高效利用SM的寄存器和共享内存,以最大化SM的利用率和计算吞吐量。简单来说,你的任务就是准备好一大群“士兵”(线程块),而GPU的SM作为“指挥官”,会自动、高效地将他们分配到各个“战场”上,并指挥他们以“小组”(Warp)为单位进行协同作战。

2025-11-22 16:27:29 490

原创 掌握GPU架构,主要需要关注和掌握的内容

最终,检验你是否“掌握”某一个GPU架构的标准是:给定一个具体的算法问题,你能否基于对目标架构的深刻理解,设计出高度优化的并行实现,并能够解释清楚你的每一个优化决策背后的硬件原理。这条路充满挑战,但一旦掌握,你将具备强大的底层性能和优化能力。祝你学习顺利!

2025-11-09 12:39:21 969

原创 onnx转ncnn报错处理

输入以下命令,将v5lite-e.onnx转换为ncnn格式。

2025-08-09 21:13:53 259

原创 torch.save和torch.load

torch.load() 是 PyTorch 提供的通用反序列化函数,用于从文件中加载任何使用 torch.save() 保存的 Python 对象。torch.save() 是 PyTorch 中用于序列化和保存模型、张量及其他 Python 对象的函数。

2025-08-09 18:58:44 425

原创 yolov5网络模型

在执行NMS前,首先删除掉置信度低于置信度阈值的框,剩余的框作为候选框放入候选框列表B中。之后按如下步骤进行处理。结果集 D 包含了所有保留下来的、代表图像中不同目标的边界框(理想情况下,每个目标对应一个框)。

2025-08-09 17:32:49 328

原创 ncnn加载模型时的运行报错问题

搜索param文件中的Interp结点,发现有一个Interp结点的输入blob数量为-1,这显示是不对的。根据后面的输入blob名称,可以看出输入blob数量实际为1,将其改为1,再次加载,加载正常。可以看到网络结构中有一个孤立的Interp结点,这是不符合预期的。使用网上的ncnn模型可以正常加载。说明ncnn框架没有问题。下载github上的ncnn模型加载查看是否有报错。

2025-08-09 11:42:29 348

原创 ncnn的param文件解析

k=v格式,不同层类型,各参数的含义不同,描述层类型入参、权重参数数量等。有的层类型可能没有特殊参数。(1)输入blob名称。有几个输入blob,就有几个输入blob名称。(2)输出blob名称。有几个输出blob,就有几个输出blob名称。7767517表示这个文件是ncnn的param文件。第二个值:表示blob的数量。第三个值:输入blob数量。第四个值:输出blob数量。第一个值:表示层的数量。

2025-08-09 11:03:21 243

原创 基于树莓派4B使用NCNN部署yolove-lite

其中,cpp_demo/ncnn/v5lite-s.cpp为ncnn推理源码。以下是对ncnn代码中的关键步骤和涉及的类与函数的一个总结。

2025-08-08 23:09:32 311

原创 树莓派4B上部署NCNN

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2025-07-20 12:14:45 946

原创 windows上部署NCNN

在”x64 Native Tools Command Prompt for VS 2022“终端cd到ncnn解压后的目标,输入如下命令。NCNN也是下载源码自己构建。git clone最新的可能有编译问题,可以下载release版本的源码。并cd到解压后的protobuf-3.21.12目录下,并输入如下命令完成protobuf的构建。protobuf需要下载源码自己构建,这里选择的是3.21.12版本。在visual studio中编写如下代码,并运行。下载如下红框框选的版本,将源码解压到本地。

2025-07-19 21:08:05 1197

原创 linux进程

进程控制块(Process Control Block, PCB)是操作系统内核用于管理和调度进程的一个重要数据结构,它包含了描述和控制该进程所需的所有信息。进程标识符( PID):进程的唯一标识。进程状态:当前进程的状态,如就绪、运行、阻塞等。进程优先级:决定进程获得CPU时间片的顺序。程序计数器(PC):程序中下一条要执行的指令的地址。内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针。

2024-07-21 20:01:40 775

原创 C++常量表达式、constexpr、字面值类型

对于指针,只能赋值为0或者固定地址,对于函数体的变量,一般都并非固定地址,其地址不能用来做初始值;尽管可以定义一个const变量,把初始值设置成我们认为的常量表达式,但实际使用时,常常会出现此变量不是常量表达式的情况。在C++ 11新标准中,可以将变量声明为constexpr,使编译器验证变量是否为常量表达式。常量表达式的值需要在编译时得到计算,因此,这些类型一般比较简单,值也容易得到,这些类型一般被称为“当定义一个constexpr指针时,constexpr只对指针有效,对指针指向的对象无效。

2024-05-17 18:01:10 300

原创 C++ 类

类定义的一半格式如下:代码示例如下:二、访问控制1 访问说明符使用访问说明符可以加强类的封装性。使用class定义的类若没有使用访问说明符控制,则它的成员默认是private的。使用struct定义的类若没有使用访问说明符控制,则它的成员默认是public的。这是class和struct关键字定义类时唯一的区别。如果一个类想让其他类或者函数访问它的非公有成员,可以令其他类或函数成为它的友元。在类中增加一条以friend关键字开头的声明语句即可。格式如下:

2024-05-17 16:36:07 291

原创 C++ 类 静态成员

和其他成员函数一样,静态成员函数即可以在类的内部定义,也可以在类的外部定义。在类的外部定义时,不能重复static关键字,static关键字只出现在类的内部。因为静态数据成员不属于类的任何一个对象,所以并不是在创建类的对象时被定义的,也就是说它不是在构造函数中被初始化的。一般来说,不能在类的内部初始化静态成员,必须在类的外部定义和初始化每个静态数据成员。在类的外部定义静态数据成员的方法和在类外部定义成员函数差不多,需要指定成员类型名,然后时类名、作用域运算符以及成员数据自己的名字。

2024-05-16 09:20:52 1688

原创 C++ 类 构造函数、析构函数

构造函数是一个特殊的成员函数,用来控制其对象的初始化过程,初始化对象的数据成员。无论何时,只要类的对象被创建,就会执行构造函数。构造函数的名字与类的名字相同。构造函数没有返回值。构造函数可以重载。构造函数不能被声明称const的,当我们创建类的一个const对象时,直到构造函数完成初始化过程,对象才能真正 取得其“常量”属性。因此,构造函数在const对象的构造过程中可以向其写值。

2024-05-16 09:15:23 482

原创 C++ 继承和多态

派生类可以继承基类的成员,通过使用类派生列表明确指出继承的基类以及访问控制。class 派生类名: 访问说明符 基类名1, 访问说明符 基类名2, ...// 成员变量和成员函数//成员变量和成员函数//成员变量和成员函数。

2024-05-03 18:41:08 1454

原创 CUDA、cuDNN以及pytorch的版本选择和下载

CUDA、cuDNN以及pytorch的版本选择和下载前言一、CUDA1、查看当前可支持的最高CUDA版本2、CUDA下载3、更高版本CUDA二、cuDNN1、cnDNN下载三、pytorch1、pip install直接下载安装2、下载后离线安装参考文章前言在下载cuda、cuDNN以及pytorch时,需要注意版本选择,版本不对可能会带来很多问题一、CUDA1、查看当前可支持的最高CUDA版本在cmd命令行中输入NVIDIA-smi查看NVIDIA显卡driver version以及可安装的

2021-12-26 18:05:31 41919

数据结构严蔚敏版PPT

严蔚敏版数据结构PPT

2015-10-31

空空如也

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

TA关注的人

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