Posts
zuo
Cancel

SIMD

可以并行化执行是因为CPU在设计时,增加了一些专用的向量寄存器,这些寄存器的长度往往大于通用寄存器,比如SEE的XMM寄存器,位宽为128位;AVX和AVX2的YMM寄存器,位宽为256位;AVX512的ZMM寄存器,位宽为512位。这些专用的向量寄存器可以同时放入多个数据。 变量定义 第一部分,统一为__m; 第二部分为位数如64、128、256等; 第三部位为变量类型,i表示in...

AES-GCM加解密

什么是AES加密 常见加密分为两类: 对称加密 AES(Advanced Encrtption Standard)是对称加密的一种,即加密和解密使用相同的密钥。 非对称加密 加密和解密使用不同的密钥,非对程算法比对称算法更复杂,运算速度更慢。 AES加密流程关键概念 分组密码体制 分组密码体制是指将明文分成一段一段的来...

oneDNN

介绍 oneDNN(前身为mkl-dnn和dnnl),是intel开发的开源深度学习加速计算库,实现了部分常用神经网络算子,它是oneAPI的一部分。 开发oneDNN库的目的是为了提高intel处理器和显卡上开发深度学习应用的性能,因此该库主要针对intel的CPU和GPU进行优化,对AArch64和NVIDIA GPU实验性支持。目前使用了oneDNN的应用有TensorFlow、P...

C++ vs C

C++之父Bjarne Stroustrup设计C++是为了回答这样的问题:如何直接而高效地操作硬件(如内存管理,进程调度,设备驱动),同时又支持高效的高层次抽象(抽象在代码中体现为函数、类、模板、概念和别名)? C++在1980年代仅仅是一个基于C和Simula语言功能的组合,在当时的计算机上作为系统编程的相对简单的解决方案,经过多年的发展,已经成长为一个远比当年更复杂和有效的工具,应用...

Profiling

Intel自顶向下的微架构分析方法 Python 和 C/C++ 拓展程序如何性能优化?看这一篇文就够 LD_PRELOAD=/path/to/libprofiler.so.0 CPUPROFILE=output.prof ./program (args) pprof --pdf output.prof > output.pdf py-spy record -o output_...

git

覆盖本地文件 # 同一个仓的远程分支覆盖本地分支 git fetch --all git reset --hard origin/master # 用remote仓的分支覆盖本地分支 git fetch mindspore # mindspore是remote add的仓 git reset --hard mindspore/master 撤销add git reset HEAD...

GDB

GDB基于ptrace系统调用实现 ptrace提供了一种使父进程得以监视和控制其他进程的方式,它还能改变子进程中的寄存器和内核映像,因而可以实现断点调试和系统调用的跟踪。 软断点(Software Breakpoint):在断点位置插入特殊的指令(可以触发中断或者异常)。需要修改原始二进制文件。 硬断点(Hardware Breakpoint):依赖于硬件,需要配置寄存器。硬断点的数...

Fuzz

Fuzz测试是一种自动化软件测试技术,为程序的输入构造随机数据,然后监视程序执行是否会出现异常,比如崩溃,断言失败,内存泄漏,条件竞争等。 基本流程 确定测试目标 确定输入向量。例如文件数据、网络数据等 生成模糊测试数据 执行模糊测试 监视异常。监视目标程序是否产生异常,记录使程序产生异常的测试数据和异常的相关信息。 判断发现的漏洞是否可被利用。通过复现前面产生...

CMake

What CMake是一个开源、跨平台的工具,旨在构建、测试和打包软件。CMake通过简单的、独立于平台和编译器的配置文件来控制软件编译过程,并生成makefiles。 CMake源文件 以CMake编写的源文件以CMakeLists.txt命名或以.cmake为扩展名。 可以使用include命令包含.cmake。与其他语言允许将源文件拆分为模块或头文件类似,.cmake里可以定义...

TensorFlow

TensorFlow v1下,训练一个TF模型有三个步骤: 定义输入和模型结构 创建tf.Session实例sess 执行sess.run()启动训练 静态图 静态图采用声明式编程范式(先编译后执行),根据前端语言(如python)描述的神经网络结构和参数信息构建固定的静成计算图,静态图在执行期间不依赖前端语言,而是由TF框架负责调度执行,因此非常适合做神经网络模型的部...