排序:
默认
按更新时间
按访问量

天人合一之毕设——实践阶段11——测试多组benchmark产生的问题

   之前师兄就说一个benchmark太少,拿差不多四个进行比较结果会丰厚一些。   从一开始的迷茫疑惑,到终于改好了剩下3个benchmark,分别是bsearch/bfs/heapsort   听上去还是比较有代表性吧。。。到时候老师问这是什么标准程序我就直接说是师兄给我的,甩锅   果然,...

2018-04-18 10:23:22

阅读数:16

评论数:1

天人合一之毕设——实践阶段10-寻找其他的benchmark

    为了让实验结果有说服力,用一个benchmark(伪)是不够的。    4个差不多,也就意味着我要再找3个。    要求是: 1.较为简短和符合较常见语法    2.程序中较多malloc(虽然可以手动调整)    首先就要搞清楚malloc大家一般是什么时候用,总结我看论坛和帖子里面写的...

2018-04-18 08:43:42

阅读数:12

评论数:0

天人合一之毕设——实践阶段9—— 幂律定律

   师兄上次看到我跑的结果,说少部分对象占用大多数的访问次数,很符合幂律定律(本质上是二八定律)    copy了一段背景,了解下:  自然界与社会生活中存在各种各样性质迥异的幂律分布现象。1932年,哈佛大学的语言学专家Zipf在研究英文单词出现的频率时,发现如果把单词出现的频率按由大到小的顺...

2018-04-05 20:38:02

阅读数:9

评论数:0

天人合一之毕设——实践阶段8—— 全面测试、优化策略的测试与实施

    上次去找师兄聊了聊,首先对前期工作他回答了我不用考虑库函数    其次,对象大小开的有点小,可以尝试开到1G左右    而且只用一个程序不够丰满,让我在网上再找3个较简单的程序进行全面测试    要找肯定尽量找那些有访存特性的程序,增删改查、搜索之类的    目前觉得可能可以去试试找:二分...

2018-04-02 10:11:20

阅读数:7

评论数:0

天人合一之毕设——实践阶段7—— 画图

        1.因为得到了一个对象的访问顺序,如果以更加直观的形式来体现的话,那就是画成时序图        目前想到的就是以顺序为横坐标,访问的对象编号为纵坐标,画折线图        优点是:比较直观,尤其是局部热的情况,会连续保持一段直线        缺点是:横坐标会很长很长,如果分段...

2018-03-28 09:21:01

阅读数:11

评论数:0

天人合一之毕设——实践阶段—— 6 尚未解决的问题

        目前为止,功能应该算是大体完备        我的思路是:        首先将代码过一遍,进行局部插桩,比如if else等分支插{print 当前行},将所有的当前行按序构造成一个数组         循环体思想也是类似,插计数器,用数组按序记载所有循环次数        接下...

2018-03-26 20:27:01

阅读数:31

评论数:0

天人合一之毕设——实践阶段——5 捣乱的结构体

        这个字典的benchmark里有很多的结构体,譬如说:                这是整体的哈希表,malloc对象的时候名字叫h,大小是4个字节        但是后面他又紧接着malloc了h->array,是HASH_SIZE个sizeof(hash...

2018-03-23 20:29:14

阅读数:9

评论数:0

天人合一之毕设——实践阶段4——棘手的return语句

   其实仔细想一下,我的工作其实有点类似于编译器的某部分。   一个运行时的程序和一个纯文本的区别在于:    1.if else 分支    2.各种循环语句 执行次数是0还是多次    这是之前考虑到的几点,前几天意识到一个问题    比如这种情况:    While( )    {   i...

2018-03-23 16:39:55

阅读数:5

评论数:0

天人合一之毕设——实践阶段3—— 对象命名空间

    本篇着重讨论一下指针同名问题     问题的产生应该是因为在不同的命名空间有不同的生存期    所以在判断malloc的时候记录下当前命名空间是比较好的,到时候搜查对象访问的时候就在此命名空间找    不过也还有一些情况可能会导致指向同一块内存的对象跨越命名空间    1.一个是F1调用F...

2018-03-17 21:00:47

阅读数:21

评论数:2

天人合一之毕设——实践阶段2——代码局部插桩

这就开始实现前面说的局部对if-else分支、循环块的局部插桩了其实思想很简单,只不过大家书写代码的方式千差万别,所以要考虑的情况还是蛮多的一、if-else分支(桩=输出当前行)1. if/else/else if(...)   ...2. if/else/else if(...)  {...}...

2018-03-15 20:42:02

阅读数:15

评论数:1

天人合一之毕设——实践阶段1——static and dynamic

     之前一股脑往前做的时候并没有考虑到大体方向的问题,直到一些问题暴露出来:     1.malloc calloc返回的一定是指针,而不是普通的数据类型           这就意味着对对象的读写只可能是通过*、->、[]三种符号来完成     2.静态的代码分析方式...

2018-03-13 10:33:48

阅读数:16

评论数:0

天人合一之毕设——准备阶段9 C语言的传参形式

   C语言有三种传参方式,传值、传引用、传地址,但是传引用和传地址本质也是值传递。    有几篇讲解的很好,http://blog.csdn.net/wenhao_ir/article/details/51611388    https://www.nowcoder.com/questionTe...

2018-03-05 19:38:19

阅读数:14

评论数:0

天人合一之毕设——准备阶段8 进阶正则表达式

目前在我的代码多次出现了运用正则表达式来匹配,从小白学起,搞清楚了一些问题,特此记录1.关于或的用法 (一串|一串) 其他地方都不用打括号,就在最外面打括号就行,不然有多种识别方式,就不能表示之前的语义了 如: .*(h\s*\w*.+|dic\s*.+)2.因为我代码中有个识别对象的要求就是,这...

2018-03-03 20:52:38

阅读数:15

评论数:0

天人合一之毕设——准备阶段7 我遇到的有关栈的错误

     目前实现的代码里,是以父函数为入口,每行判断是否有对象访问,以及每次遇到下层函数的时候进行递归。    考虑的不严谨的地方有:    1.传值访问 包括传入普通的参数和指针 两种情况下在底层函数的形式参数的访问算不算对这个实参的访问呢?    2.传地址访问      各自内外层的访问 ...

2018-03-02 15:12:18

阅读数:17

评论数:0

天人合一之毕设——准备阶段——Java图建立与遍历

    目前通过Java正则表达式已经实现了初步的提取,接下来要通过整个函数构建时序图。    因为对Java实现数据结构不是特别清楚,所以特地来做做功课。    构建时序图应该是BFS,为了方便实现,选择邻接表结构。    实现代码参考了这两篇博客,做了些改动    https://www.cn...

2018-02-10 12:45:46

阅读数:24

评论数:0

天人合一之毕设——准备阶段——5 正则表达式

因为要做整个程序的profile,应该会不可避免地遇到一些匹配,这时候正则表达式就派上用场啦。  1.C语言正则表达式 C语言使用正则表达式的方法很简单,只需要包含正则表达式头文件即可: #include(但在Linux下才能用这个库) 相关函数: regcomp():编译正...

2018-01-31 19:47:42

阅读数:31

评论数:0

天人合一之毕设——准备阶段——4 字典benchmark

 以往的异构内存研究都是一个online的监测预测方式,我做的毕设主要是从程序层面来做对异构内存的放置进行优化。 要想效果好看一点,就要手写一个仿存特征明显一些的,有意的让他时冷时热,自己控制。 师兄推荐的是key-value的字典,这样可以进行增删改查,人为的制造数据热点。 gitup上下载了一...

2018-01-30 21:11:29

阅读数:48

评论数:0

天人合一之毕设——准备阶段——3 HME仿真器

毕设做的是异构内存方面的研究,需要在模拟器上仿真,目前已经实现的有很多,gem5、nvmain等等 无奈实验室师兄太牛自己设计了一款模拟器,我就直接用他的咯! 学名HME,一种轻量级的仿真器,gitup上已开源https://github.com/CGCL-codes/HME 1.原理 ...

2018-01-29 15:09:15

阅读数:131

评论数:0

天人合一之毕设——准备阶段—— 2 函数调用图(call graph)

毕设要把数据对象的访问频率和时序图都提取出来,师兄提供了一个关于函数调用树的思路,可以简化提取过程,构造好之后就是遍历了。上网搜了下,专有名称叫函数调用图,应该是考虑到一个函数可能被多个函数调用,所以不只有一个根节点。        工具有很多,盗个图过来(转载自http://blog.csdn...

2018-01-28 17:09:34

阅读数:69

评论数:0

天人合一之毕设——准备阶段——1 初识malloc

之前上C语言课只简单知道malloc是程序员用来自动分配内存,没有过多关注,自己写代码也压根不会深入的往栈啊堆啊内存方面考虑。目前毕设做的关于异构内存方面的研究,主要是考虑堆区的优化,所以malloc就不可无视啦。 1、函数声明 void *malloc(int size); 说明:...

2018-01-28 13:34:20

阅读数:46

评论数:0

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