摘要: 技术书籍 — EffectiveMordenCpp 研读 一、类型推导 PROs: 源码某处的类型修改,可以自动传播其他地方 Cons: 会让代码更复杂(How?) 在模板类型推导时,有引用的实参会被视为无引用,他们的引用会被忽略 template<typename T> void f(T & param); // param 是一个引用 int x = 阅读全文
posted @ 2021-04-11 12:09 Aurelius84 阅读(119) 评论(0) 推荐(0) 编辑
摘要: Google C++ 语言规范 1. 命名空间 KeyNotes: 鼓励在.cc文件里使用匿名命名空间或者sttic声明 禁止使用内联命令空间,X::Y::foo 等价与X::foo。其主要用于跨版本的ABI兼容问题 namespace X{ inline namespace Y{ void foo(); } // namespa 阅读全文
posted @ 2021-04-11 12:07 Aurelius84 阅读(259) 评论(0) 推荐(0) 编辑
摘要: C++基础知识复习 第一部分:基础知识 一、const 1. 作用 修饰变量,表示不可能更改 修饰指针 const int *ptr——pointer to const int const *ptr—— const pointer 原则:被const修饰的后面的值是不可改变的 修饰引用 常用于形参。即避免了copy,又 阅读全文
posted @ 2021-04-11 12:06 Aurelius84 阅读(266) 评论(0) 推荐(0) 编辑
摘要: NVCC编译选项含义解析 NVCC编译 nvcc 是cuda程序的编译器。 1. 编译阶段 用于指定编译阶段最基本的编译参数。 -c: 同gcc,只预处理、编译和汇编为.o文件,不link -lib:生成一个库文件,windows上为a.lib,其他为a.a后缀 -cuda:编译所有的.cu文件为.cu.cpp.ii -cu 阅读全文
posted @ 2021-04-11 12:00 Aurelius84 阅读(3038) 评论(0) 推荐(0) 编辑
摘要: GCC编译选项含义解析 GCC 编译 GCC的编译流程分为四个步骤,分别为: 预处理(Pre-Processing) 可以通过gcc -E hello.cc -o hello.i查看中间结果 编译(Compiling) 汇编(Assembling) 链接(Linking) gcc 命令只能编译C++源文件,而不能自动和C+ 阅读全文
posted @ 2021-04-11 11:59 Aurelius84 阅读(1126) 评论(0) 推荐(1) 编辑
摘要: 如何加速C++文件的编译速度? 一、为什么慢? 重要的一个原因是C++的基本 头文件-源文件的编译模型: 每个源文件为一个编译单元 头文件数量多,可能会包含上百甚至上千个头文件 存在重复解析,每个编译单元中,这些头文件都要从硬盘里读取然后被解析 每个编译单元都会产生一个obj文件 这些obj文件被link到一起,此过程很难做到并行 阅读全文
posted @ 2021-04-11 11:57 Aurelius84 阅读(1039) 评论(0) 推荐(0) 编辑
摘要: 源码研习 — TVM中的IR设计与技术实现 # 一、关键问题 ## TVM中的 IR 是什么,架构设计上分几层? 解答:TVM的整体结构图如下: ![TVM架构图](https://raw.githubusercontent.com/tlc-pack/web-data/main/images/design/tvm_dyn_workflow.s 阅读全文
posted @ 2021-04-11 11:48 Aurelius84 阅读(5305) 评论(0) 推荐(1) 编辑
摘要: TensorFlow Runtime,简称 TFRT,它提供了统一的、可扩展的基础架构层,可以极致地发挥CPU多线程性能,支持全异步编程(无锁队列+异步化语义)。TFRT 可以减少开发、验证和部署企业级模型所需的时间。 阅读全文
posted @ 2020-12-25 20:08 Aurelius84 阅读(1691) 评论(0) 推荐(0) 编辑
摘要: 所有进程的祖宗进程,就是系统启动时的 init进程。init进程会启动很多daemon进程,为系统运行提供服务。然后启动getty,让用户登录,登录后运行shell。 阅读全文
posted @ 2020-12-14 20:03 Aurelius84 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 在深度学习模型训练中,每次迭代过程中都涉及到Tensor的创建和销毁,伴随着的是内存的频繁 `malloc`和`free`操作,可能对模型训练带来不必要的 overhead。 在主流的深度学习框架中,会借助 chunk 机制的内存池管理技术来避免这一点。通过实事先统一申请不同 chunk size 的内存,并记录到内存池中。创建一个Tensor时,若内存池中存在满足需求的可用内存,则直接分配。销毁一个Tensor时,并不马上`free`掉还给系统,而是标记为可用状态,放在内存池供下个Tensor使用。 阅读全文
posted @ 2020-12-08 21:22 Aurelius84 阅读(921) 评论(0) 推荐(0) 编辑