sphinx 使用指南
前言Sphinx介绍Sphinx是一种文档生成工具,主要用于生成和管理过程文档。它支持以Python为基础的丰富插件,可以输出为HTML,PDF,Latex等格式。 reStructuredText 介绍reStructuredText (简称reST)是一种轻量级标记语言,文件名后缀为.rst。是 Sphinx 使用的默认纯文本标记语言 markdown介绍Markdown 也是一种轻量级标记语言,文件名后缀通常为.md。 环境准备Python安装Linux环境 确保已安装Python 1python3...
C++协程入门
C++20协程入门什么是协程?简单来说:协程是一个可以暂停和恢复的函数。 如果从传统函数的角度来看,暂停意味着线程会停止执行。那么,协程与普通函数的区别在哪里呢?关键在于: 普通函数是线程紧密相关的,函数的状态依赖于线程栈; 协程是线程无关的,它的状态独立于任何线程,可以在不同的线程间切换。 为了更好地理解这一点,我们可以先回顾一下函数调用的机制。每当调用一个普通函数时,当前线程的栈会保存这个函数的状态(例如函数参数、局部变量等)。这一过程通过栈顶指针的移动来完成。例如,函数 Foo() 调用 Bar() 的过程如下: 在这个过程中: 从 地址3 到 地址2 的内存空间分配给...
深入浅出访存优化
该篇内容基于小彭老师访存优化课程,添加了自己的理解和备注 第0章:前言将会用到的工具代码: ticktock.h封装TBB计时工具 12345678910111213#pragma once// #include <chrono>// #define TICK(x) auto bench_##x = std::chrono::steady_clock::now();// #define TOCK(x) std::cout << #x ": " <<//...
TBB开启并行编程之旅
...
全面理解STL- std::map和它的朋友们
!!本文内容搬运小彭老师现代C++大典内容,仅为个人学习备份使用,请大家支持原作者链接:✝️小彭大典✝️数据结构与复杂度不论什么语言,容器(或者用学校里的话说:数据结构)的正确使用,能够在复杂度层面上,大幅提升性能。 C++ 中也是如此,有数组(vector),字典(map),还有上一课讲过的集合(set)。 今天我们要介绍的就是 C++ 的字典容器 map,以及 C++11 引入的另一个字典容器 unordered_map,他们的区别我们最后会详细讨论。我们先学习较为简单的 map,随后学习 unordered_map...
现代CMake模块化项目指南
一、文件、目录组织规范1. 推荐的目录组织方式目录组织格式: 项目名/include/项目名/模块名.h 项目名/include/项目名/模块名.h 项目名/src/模块名.cpp CMakeLists.txt内容: 1target_include_directories(项目名 PUBLIC include) 源码文件(.h)中写: 12#include <项目名/模块名.h> 项目名::函数名(); 头文件中写: 1234#pragma oncenamespace 项目名...
火山引擎大模型网关
前言了解到明年的智能车比赛可能会使用到大模型相关内容,因此打算尽快熟悉NodeHub中火山大模型网关项目 准备: 地瓜机器人社区的账号和密码 RDK系列开发板,且已联网 什么是大模型网关来自火山引擎官网解释:大模型网关(AI Gateway)服务允许您通过一个 API 接口访问多家大模型提供商的模型。利用边缘云基础架构的优势,本平台显著提高模型访问速度,为终端用户提供更快速、更可靠的 AI...
CUDA开始的GPU编程-第八章
第8章:板块与共享内存为什么需要区分出板块的概念?之前说到实际的线程数量就是板块数量(gridDim)乘以每板块线程数量(blockDim)。 那么为什么中间要插一个板块呢?感觉很不直观,不如直接说线程数量不就好了? 这还得从 GPU 的硬件架构说起。 SM(Streaming Multiprocessors)与板块(block)GPU 是由多个流式多处理器(SM)组成的。每个 SM 可以处理一个或多个板块。 SM 又由多个流式单处理器(SP)组成。每个 SP 可以处理一个或多个线程。 每个 SM 都有自己的一块共享内存(shared memory),他的性质类似于 CPU...
CUDA开始的GPU编程-第七章
第七章:原子操作经典案例:数组求和如何并行地对数组进行求和操作? 首先让我们试着用串行的思路来解题。 12345678910111213141516171819202122232425262728293031323334353637#include <cuda_runtime.h>#include <cstdio>#include <vector>#include "CudaAllocator.h"#include "helper_cuda.h"#include...
CUDA开始的GPU编程-第六章
第六章:thrust库使用 CUDA 官方提供的 thrust::universal_vector虽然自己实现 CudaAllocator 很有趣,也帮助我们理解了底层原理。但是既然 CUDA 官方已经提供了 thrust 库,那就用他们的好啦。 123456789101112131415161718192021222324252627282930313233343536#include <cuda_runtime.h>#include <thrust/universal_vector.h> // trusth库#include...