LITL论文复现及测试
作业4:
- 阅读pdf文件,找到其中你觉得在测试效率结果上最有特色的三种锁方法,根据这三种方法的参考文献并看他们与mutex的不同
- 对应1中的锁方法的源码(https://github.com/sslab-gatech/shfllock),根据论文中的数据集(自行查找)运行代码重现1中你觉得“特色”的结果
- 写一个竞争程度可以调整的互斥程序,要求基于一定数量的线程通过上述三种锁完成互斥访问,具体要求通过设定不同线程数量(第一个参数)
a. 每个线程必须上锁去访问一组数组的元素,数据元素100万个自定义结构体,128字节对齐
b. 每个线程在100万个元素上访问100000000次,以一定概率t(程序第二参数)对0号元素访问,以1-t的概率随机访问其他999,999个元素
c. 统计不同线程数量下、不同冲突概率时,不同锁方法的效率对比
环境是Ubuntu16.04 ,作业4基本全部更新到GitHub上了,暂时不打算同步到csdn。
水平有限,大家自行甄别吧。
LITL安装
编译部分
首先要安装papi,如果在之前有编译过的,应该要将原来的删掉,安装papi之后再编译
sudo apt-get update
sudo apt-get install libpapi-dev
进入ulocks/src/litl/
目录。
使用make -C .
命令编译,因该
这些新生成的sh文件,应该就是编译的结果吧。
测试部分
根据readme中的信息,我们可以用./xxxxxxx.sh myprogram
的方式运行生成的锁,
解下来,就可以测试锁啦,我从网上随便复制了一段锁测试代码。
#include <stdio.h>
#include <pthread