自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 资源 (2)
  • 收藏
  • 关注

原创 nvidia-smi topo -m

2022-02-13 15:55:58 1537

原创 numactl介绍

```numactl -H```展示了数据该numa的CPU核。node distances展示了numa间的相互举例:0-0: 10最近;0-1: 12 较近;0-2: 32 最远。

2022-02-13 15:46:09 532

原创 AMD架构下监控PCIe指标

监控PCIe双向流量。```/opt/AMDuProf_3.4-475/bin/AMDuProfPcm -a -m pcie -d 10 -t 1000```

2022-02-13 15:38:07 637

原创 AMD架构下监控XGMI指标

XGMI:2socket间相互通信的内存交互量,与numa无关。为0最佳,有数量则memcpy会慢。```/opt/AMDuProf_3.4-475/bin/AMDuProfPcm -a -m xgmi -d 10 -t 1000```

2022-02-13 15:36:48 1972

原创 【xla】五.1、XlaCache命中规则

一、背景cache是个resource类型,里面存放着对于某种输入的优化后的二进制文件。也就是说每种二进制文件都对应着唯一输入参数。二、流程 BuildXlaCompilerArguments 根据XlaCompileOp的输入来构建args列表。 遍历所有input 如果是const类型,则记录const类型的值。 如果是kParameter类型,则记录kParameter的shape和type。 如果是DT

2021-10-25 11:34:26 197

原创 【xla】七、【构图阶段】其他pass

所有的Pass:REGISTER_OPTIMIZATION(OptimizationPassRegistry::PRE_PLACEMENT, 26, EncapsulateXlaComputationsPass);--REGISTER_OPTIMIZATION(OptimizationPassRegistry::PRE_PLACEMENT, 25, IntroduceFloatingPointJitterPas

2021-10-25 11:32:48 303

原创 【xla】六、【构图阶段】xlaRunOp

xlaRunOp的InputOp是xlaCompileOp。其中xlaCompileOp通过Output向xlaRunOp输入了在XlaExecutableClosureStore中的key。xlaRunOp通过Key找到XlaExecutableClosureStore中的executable。然后通过executable的Run/RunAsync函数执行executable。...

2021-10-25 11:31:44 168

原创 【xla】五、【构图阶段】xlaCompileOp

作用:运行时将Function通过XlaCompilationCache编译成Executable,并放入cache中。其中XlaCompilationCache使用了:tensorflow/compiler/tf2xla/xla_compiler.cc下的XlaCompiler::CompileFunction将function转换成Executable。放入Cache流程:XlaCompileOp::ComputeCompileToLocalExecutableXlaComp

2021-10-25 11:30:45 207

原创 【xla】四、【构图阶段】BuildXlaOpsPass

作用:将FunctionCall节点换成:XlaCompileAndXlaRun核心流程:扫一遍整个计算图找出所有的FunctionCall节点。对所有的FunctionCall节点调用ReplaceNodeWithXlaCompileAndXlaRun函数。ReplaceNodeWithXlaCompileAndXlaRun: 找到xla的FunctionCall算子。 根据FunctionCall算子的信息(input, function等)构建一个xla_compile

2021-10-25 11:29:29 222

原创 【xla】三、【构图阶段】EncapsulateSubgraphsPass

该Pass的run函数主要作用: 定义:rewrite_subgraph function 调用:EncapsulateSubgraphsInFunctions 一、rewrite_subgraph function作用:为子图整理/分类/关联input。二、EncapsulateSubgraphsInFunctions该函数主要构造:encapsulator, 用encapsulator来将graph中被标记的节点划分为一张子图。主要调用了: encapsulator

2021-10-25 11:27:56 226

原创 【xla】二、【构图阶段】MarkForCompilationPassImpl

一、主要函数: Initialize() 1433 TF_RETURN_IF_ERROR(RunEdgeContractionLoop()); // 尽量多的收缩节点到cluster内 1434 TF_RETURN_IF_ERROR(CreateClusters()); // 更改图中节点的属性(更改device或打xla标记) 1435 TF_RETURN_IF_ERROR(DumpDebugInfo()); // LOG 相关二、InitializeFind..

2021-10-25 11:26:29 501

原创 【XLA】一、【构图阶段】图优化器的注册和执行

一、注册:在tensorflow/compiler/jit/jit_compilation_pass_registration.cc对jit相关的优化器进行统一的注册。举例: REGISTER_OPTIMIZATION(OptimizationPassRegistry::POST_REWRITE_FOR_EXEC, 10, MarkForCompilationPass); 其中POST_REWRITE_FOR_EXEC指阶段。10指该阶段中该OPTIMIZATION第几个被调用。MarkFo

2021-10-25 11:24:04 401

原创 C++字符串(库字符串)转人类语言(humanstring)

GCC and MSVC C++ Demangler

2021-10-22 14:43:22 94

原创 简单高效Perf

1. perf收集整机热点函数:perf top2. perf收集进程热点:perf top -p <pid>3. perf收集进程热点和函数栈perf record --call-graph dwarf -p <pid>#注:请ctrl+c结束收集。一般3-5s即可。如果想自动请perf record -H4. perf打印进程热点:perf report#注:在perf.data的文件夹内使用5. perf打印进程热点和函数栈:

2021-09-27 09:37:19 273

原创 Linux下查看每颗CPU情况

CPU使用率:htopCPU频率:watch -d -n 2 'cpupower monitor'

2021-09-25 16:17:44 381

原创 Nsight system(nsys)

一、数据收集:/opt/nvidia/nsight-systems/2021.2.1/bin/nsys profile -y 180 -d 5 -o merge_table python test.py# -y 延迟多久开始# -d 收集多久# -o 输出文件的名称 (该名称用于nsys的显示端,比较有用,不然都是1,2,3这样的数字。)二、数据分析:查找功能标签功能界面介绍关联算子...

2021-09-07 09:12:49 3937 1

原创 tensorflow c++算子快速实践

背景在c++算子优化的过程中,开发完的算子需要怼进TensorFlow的一套流程中(c++端开发算子,c++端和python对对接,python端封装等)。上述流程比较复杂。用以下办法,可以快速实践c++算子的效果。编写c++算子按照TensorFlow c++ kernels的规则编写算子。将c++算子打包成.so文件TF_CFLAGS=( $(python -c 'import tensorflow as tf; print(" ".join(tf.sysconfig.get_

2021-09-03 15:24:56 450

原创 SIMD/AVX文档解析

首页:https://software.intel.com/sites/landingpage/IntrinsicsGuide/

2021-06-14 17:47:16 478

原创 生成文字表格注释表格工具

https://tableconvert.com/?output=text

2021-03-02 15:08:32 1587

原创 c++ SIMD AVX2比较 例子

示例代码含义:记目标字符串中有多少个目标字符。linux代码(例子)如下:#include <iostream>#include <x86intrin.h>#include <fstream>#include <chrono>using namespace std;struct StringView { const char* p; const size_t len;};StringView FileSize(const

2021-02-02 18:21:52 1392

原创 c++ SIMD 样例

代码如下:#include <iostream>#include <x86intrin.h>#include <fstream>#include <chrono>using namespace std;struct StringView { const char* p; const size_t len;};StringView FileSize(const char* fileName) { ifstream i

2021-02-01 18:34:31 2899 5

原创 大量IO影响性能问题排查

问题表现分布式系统的QPS(性能)突然下降。检查了类中心节点,发现中心节点IO非常高,如下:可以看到CPU的负载非常高;CPU项的wa非常高。检查高IO进程如上图,使用iotop可以看到:io高的是我们的目标进程。iotop指示基本DISK READ跟正常ps对比内存:正常ps有低内存现象。 异常ps有低内存现象。IO:正常ps没有高io现象。 异常ps有高io现象。负载:正常ps负载:20~30。 异常ps负载80~120。磁盘状况iostat能.

2021-01-14 17:47:52 3441

原创 Tensorflow dataset

name 用法 usage 大致用法解释 types intro TextLineDataset tf.data.TextLineDataset 读取文件Dataset 从text文件中读取一行数据 可选,默认256k 无辅线程 buffer_size为配置buffer大小、 ParallelInterleaveDataset tf.dat...

2021-01-10 15:05:39 536

原创 Tensorflow错误码一览表

IDNAMETEXT大意0OK成功1CANCELLEDThe operation was cancelled (typically by the caller).被取消2UNKNOWNUnknown error. An example of where this error may be returned is if a Status value received from another address space belongs to an erro...

2021-01-10 14:24:22 542

原创 Tensorflow C++端打印tensor,python端打印feature

std::cout << "dtype:" << DataTypeString(x.dtype()) << std::endl; // 输出tensor类型std::cout << "nums:" << x.NumElements() << std::endl; // 输出tensor 包涵的元素个数for (uint32_t i = 0; i < x.NumElements(); ++i) { std::cout &

2021-01-10 14:06:30 1104

原创 c++11下call_once的单例模式

1. 背景: 单例模式分什么懒汉、饿汉啥的,大家只要懂得概念应付面试就好了。单例模式一般是资源管理器呀,什么全局唯一的一些东西,其实并不需要什么性能,也不会占用太大内存,有的时候甚至都不用考虑加锁,有些不持续的内存泄露也无妨。2. 单例模式比较建议使用饿汉模式,饿汉模式的分配是不考虑竞争的,仅分配一次的,不影响性能的。class Obj{private: Obj() Obj(const Obj& o);public: static Obj* in..

2020-10-24 17:20:40 1290

原创 CPU指标的含义

这是一张top的截图:里面在第三行描述了CPU相关信息,分别是:Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st这里分别介绍下:指标全拼含义ususer用户态CPU使用时间占总CPU使用时间的百分比sysystem内核态CPU使用时间占总CPU使用时间的百分比ninice改变过优先级的进程占总CPU使用时间的百分比ididle空闲CP

2020-09-14 09:48:34 666

原创 上下文切换的定义和影响

一、背景:上下文切换CPU 上下文切换,就是先把前一个任务的 CPU 上下文(也就是 CPU 寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的新位置,运行新任务。我的理解是因为CPU在一个时刻只能执行一个任务(进程、线程),现代处理器(CPU)都是可支持多任务的,也就是分时间片的,当一个长任务在CPU上的时间片完成后,他的信息(数据)其实是被放在寄存器和程序计数器(目的是为了记录任务执行到哪条语句(机器码)了)上的。这时我们需要把他的信息保存

2020-09-13 14:36:47 901

原创 shell统计命令(持续更新)

行转列awk '{for(i=1;i<=NF;++i){print $i}}'#切记是从1开始到NF。以每行为key,统计相同行的个数awk '{keys[$0]++}END{for(i in keys){print i,keys[i]}}'sort | uniq -c打印出文件固定行的内容sed -n "196,1p" xxx...

2020-09-11 00:07:37 454

原创 平均负载定义和影响

1. 概念平均负载:指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数。用人话说,就是指定时间单位内,有多少个可以执行的线程。我们举个例子:假设你的服务器只有一个进程(单线程),这个进程跑满了CPU(CPU使用率100%),那么你服务器的负载就是1。2. 负载的影响负载低:表明该服务器啥都没运行,空闲状态,浪费资源,浪费电。负载高:多个进程争抢资源(IO/CPU),导致服务响应较慢,影响用户体验。3. 负载的查看很简单,top命令即可查看,如图:右上角的loa

2020-09-06 00:18:56 432

原创 profiler分析c++进程内存占用

背景在比较大的工程中,进程的内存占用分析是很重要的一环,可以分析出各个模块的内存占用,也可以接下来对内存占用大的模块进行优化等等。Google Profiler工具可以简单、快捷的打印出每个函数的内存占比。安装wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.5/gperftools-2.5.tar.gz./configuremake -j 32make install使用加载执.

2020-08-13 23:03:56 4545

原创 TensorFlow从指定checkpoint恢复

打开保存checkpoint文件的路径。打开其中的checkpoint文件。如下:all_model_checkpoint_paths: “model.ckpt-0”all_model_checkpoint_paths: “model.ckpt-100”all_model_checkpoint_paths: “model.ckpt-200”all_model_checkpoint_paths: “model.ckpt-300”all_model_checkpoint_paths: “mode.

2020-07-13 12:10:25 674

原创 全局替换pip源

在HOME目录下创建.pip/pip.conf文件,键入以下内容,即可全局替换pip源。[global]timeout=10index-url=http://mirrors.aliyun.com/pypi/simple/extra-index-url=http://pypi.douban.com/simple/[install]trusted-host=mirrors.aliyun.com

2020-07-12 14:44:54 362

原创 Docker简单使用命令

docker commit -a "zhaozheng09" -m 'debug version' containerId dockerImageIDdocker push dockerImageID如果遇到本地磁盘被写满了的话。这种是因为中间镜像太多了。删除的意思。docker rmi $(docker images --filter "dangling=true" -q --no-trunc)...

2020-05-15 10:09:32 168

原创 Bazel TensorFlow自定义编译命令

debug+asan版本bazel build -j 36 --action_env=LD_PRELOAD --copt="-g" --copt="-lasan" --copt="-fsanitize=address" --linkopt=-lasan --linkopt=-fsanitize=address --verbose_failures --compilation_mode=dbg --strip=never --copt="-D_GLIBCXX_USE_CXX11_ABI=0" //t

2020-05-12 15:44:20 813

原创 std::string内部规则(引用计数vsmemcpy)?

1. 写在前面该规则适用于新版c++,至于多新,我也没闹明白,我的gcc 5.3.0是适用以下规则的。2. 规则 规则1:gcc5.3.0 不等同于devtool5.3.1,devtool貌似是为了版本兼容而生的。并不是真正将gcc升级。 规则2:新版gcc(原则上高于4.8.5,但实际只测试过5.3.0)已经完全取消了引用计数规则,当做string赋值时,永远都是深拷...

2020-05-03 08:06:29 417

原创 TensorFlow编译常见问题

swig找不到c++abi--- tensorflow/tensorflow.bzl.orig 2017-11-01 21:21:13.000000000 +0100+++ tensorflow/tensorflow.bzl 2017-11-09 11:49:41.536361562 +0100@@ -920,6 +920,7 @@ args += [src.path] outp...

2020-04-27 16:01:35 242

原创 int_fast32_t本质

今天又学到了一些。这种带fast的,在某些机器上会快一些。因为不管是32bit,16bit,8bit,他都直接给定义成64bit,这样就不用对齐了。取地址的时候就不用再切分了。所以就快了。。。在mac上,也就是gnu上定义如下:在Linux上,也就是gcc上定义如下:所以我们看到,是加大内存到内存对齐,所以才快的。再不懂的同学可以搜下内存对齐~...

2020-04-23 09:19:40 1461

原创 Tensorflow源码分析之ExecutorState

写在前面该文章以尽量详细的注释来表明源代码中每一句的含义。Tensorflow版本:1.10我会以自己习惯的顺序或者便于理解的顺序或者仅我知道的地方来说,如有错误,请评论指出,感激不尽~.该代码注释仅作为记录,不作为其他使用1. ScheduleReady //该函数主要将该次的Process函数处理完成过后得到的ready队列里的node分配到各个线程中去 void Execu...

2020-04-21 23:32:23 618

原创 tmux 快捷键

1. leader键 也不知道是不是叫leader键,这个键的大致意思是激活命令输入。组合键都是leader+xxx这种形式。 默认值:ctrl+b 如果要修改默认值,有个.tmux.conf这个文件。目前我没深究。2. S选项 在多人共享的终端中,希望带上这个选项。命令如下:tmux -St.s lstmux -St.s new -stmp_t...

2020-04-15 08:39:58 268

cs_communicate.tar.gz

linux下基于reactor用c++实现的网络模型。

2019-09-24

cs_epoll.tar.gz

反应堆模型,简单例子,没啥描述,适用于教学。普通的小例子。

2019-09-23

空空如也

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

TA关注的人

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