-
背景 最近在调研各种hashmap.. 发现ska::flat hash map性能优秀。。于是来看看代码。。 发现最大的特点是,ska::flat_hash_map使用了带probe count上限的robin hood hashing 相关概念 Distance_from_desired 对于采用了open addressing的hash实现,当插入发生冲突时,会以一定方式(如线性探测、平方探测等)来探测下一个可以插入的slot. 因而实际插入的slot位置与理想的slot位置通常不相同,这段距离定义为distance_from_desired 在没有冲突的理想情况下,所有distance_from_desired的值应该都为0 …
Read More -
背景 起因是同事在实现int4的功能,结果流水线有一条死活过不了(gcc版本为4.8.5),一直core dump 经过初步排查,找出了如下最小可以复现的代码: 1 2#include <immintrin.h>3 4class Test{ 5 public: 6 Test(){ 7 tmp = _mm256_set_epi32(0,0,0,0,0,0,0,0); 8 } 9 private: 10 __m256i tmp; 11}; 12int main(){ 13 auto *tmp = new Test(); 14 return 0; 15} gcc版本为4.8.5 其中编译选项为 1g++ -std=c++11 …
Read More -
背景 动手实现一个简单的Lab,主要依赖于课本第八章的内容 感觉主要是05比较难。。发现执行的顺序不太对。。原因是SIGCHLD里面waitpid参数没写对。。 后面的就相对简单了 累计大概花了10个小时的样子 实现细节 built-in comamnd built-in command 指的是shell自身的命令,因此只有少数几个,比如pwd.在上使用which pwd的时候,会提示"pwd: shell built-in command" 测试文件的构成 以trace04.txt举例 1# 2# trace04.txt - Run a background job. 3# 4/bin/echo -e …
Read More -
背景 怎么算微分。。通常有三种方法。 Symbolic Differentiation Numerical Differentiation Automatic Differentiation (auto diff) auto diff中两种主流的方式分别是forward-mode和reverse-mode 由于forward-mode的方法中,计算的时间复杂度是O(n),n是输入的参数个数。而reverse-mode中,计算的时间复杂度是O(m),m是输出节点的个数。在dnn中,n往往很大,远大于m,因此这里主要介绍reverse-mode auto diff方法。 backprop和reverse mode auto …
Read More -
背景 动手实现一个memory allocator,体会core到爆炸的乐趣(不是 trace file 结构分析 trace file 是对allocator的输入的描述,可以从mdriver.c中的 1static trace_t *read_trace(char *tracedir, char *filename); 看到Parse的逻辑,从而得到trace file的结构。 1 fscanf(tracefile, "%d", &(trace->sugg_heapsize)); /* not used */ 2 fscanf(tracefile, "%d", …
Read More -
迫于生计,从今天开始学习推荐系统相关的内容,今天先来读一篇推荐系统领域的综述 Toward the next generation of recommender systems: a survey of the state-of-the-art and possible extensions 由于目前的工作其实是偏向推荐系统的serving,训练的开发,因此这些paper可能都是粗读,也不会把paper中的内容逐句翻译,而是找出我认为最为重要的一些概念加以记录。 INTRODUCTION 推荐的问题简单可以归纳成对user未看见的item进行打分的过程,这个分一般称之为rating.有了rating,推荐前top k 个最好 …
Read More -
目前我的博客是部署在github pages上,源码是一个repo,渲染出来的静态页面是一个repo. 更新的时候是把后者作为前者的submodule. 感觉这种方式有些落后了,简直和某司内部的平台有的一比。因此尝试采用了下github actions,来自动化这个部署的流程。 build github pages 其实类似gitlab ci. 最开始我以为需要自己配置服务器,结果发现并不需要,直接用公用的就可以。 详细内容可以阅读github actions 遇到的主要问题其实是,在一个repo的github actions的pipeline 里推送到另外一个repo提示一些权限方面的错误。 解决的办法是配置下ssh key. 假 …
Read More -
2020年终总结
Jan 3, 2021 · 1 min read本来不知道写什么所以不打算写了,不过后来觉得可以把今年做的一些重大的决定写出来,把当时的分析和想法记录下来。这样若干年后再回看,就能找到,是哪些明智或愚蠢的决定,对人生产生了巨大的影响。 职业选择 在商汤待了1234天之后,还是离开了这个一毕业就在地方。新的岗位完全远离了cv方向,主要和推荐相关了。 在换工作方面其实一直特别迷茫,迷茫在我不知道我在商汤的岗位是在做什么。想起19年的时候,猎头都是先默认我是做cv算法的。当得知我虽然不是做算法研究的,就没兴趣聊了2333. 或者有些猎头会觉得,既然不是做算法研究的那就是做工程的了,那对后端一定很熟悉吧? 我觉得这个也和行业内重刷点,轻落地的氛围有很大关系。 这个氛围感觉2020年有了很 …
Read More -
背景 CSAPP:3e 的配套实验 地址 分成了两个部分,第一部分是模拟一下cache的miss,hit,evict的规则。第二部分是优化一个矩阵的转置,使得miss尽可能少。 PART A 给了一个标程csim-ref,要求实现一个程序,输出与该标程一致。 写的时候太心急了。。导致没看完作业要求就开始写了。。 然后就纠结了好久。。如果要访问的地址超过了一个block line的边界该怎么办。。 然而实际上题目里已经把这种情况排除了。。 For this this lab, you should assume that memory accesses are aligned properly, such that a single …
Read More -
前言 偶然发现了 torch2trt 的模型转换方案,思路是直接将pytorch op映射到TensorRT的python api. 在pytorch进行每个op forward的时候,tensorrt也相应往network上添加op. 这里会先涉及torch2trt的使用,后面会补充这个转换工具的代码学习 使用torch2trt torch2trt pytorch可以直接安装,但是torchvision根据 pytorch-for-jetson-version-1-6-0-now-available 中的说法,需要编译安装 1git clone https://github.com/pytorch/vision 然后切换到tag …
Read More