今日目标:上午完成单线程debug和massif和operf;下午和晚上完成多线程code+debug
上午
- 1,2,3,4
- check start and spine_ty semantics
- follow one small case for debug
- 5,6,7,8
- 打桩
- operf+massif
- 9,10
- put collect into output
- run+operf
下午
- 1
- 分析operf
- 新的逻辑run+operf
- 新的choice code+run+operf
- 2,3,4
- 分析operf
- 设计和code多线程
晚上
- 1,2,3
- code多线程
- debug
- 打桩
- run(8 thread)+operf(operf貌似不需要)
- run 32 thread
去休息一下!
- 4
- 不分线程operf,寻找没有scale up的原因
写一个最暴力的,仅依赖config信息,验证输出正确性
massif on choice3
test_3
21.00% parent.resize Case2Tree.cpp:120
13.32% old_spine_id.push_back Case2Tree.cpp:109
29.97%+16.61% old_spine_id2new[ty][old_id] Case2Tree.cpp:108
operf on choice3
lambda:
Case2Tree::Graph::risky(std::vector<unsigned int, std::allocator
数字在这里
not define PUT_COLLECT_TO_OUTPUT
reach_from_spine: 2,263,230us
39.4811 self
12.1398 visited[] parent[] boardId[] leaf_offset[]
3.2950 board_safty[]
scan_safety(reset_visited): 42,471us
45.7143 self
8.5714 board_safty[]
collect_pattern(scan_visited): 4,469,802us
39.8587 edges[].push_back()
24.3866 self
4.9051 visited[] parent[]
4.5813 edges[] (edges has pre-allocate)
define PUT_COLLECT_TO_OUTPUT
reach_from_spine/scan_safety和not define一样
collect_pattern(scan_visited): 1,638,658us
40.1552 self
19.5567 visited[] parent[]
new define PUT_COLLECT_TO_OUTPUT (comment ptn_belong[parent[v]] = leaf;
)
reach_from_spine/scan_safety和not define一样
collect_pattern(scan_visited): 1,115,422us
43.3635 self
13.1032 visited[] parent[]
operf on new choice3
lambda:
Case2Tree::Graph::risky(std::vector<unsigned int, std::allocator
数字在这里
reach_from_spine: 3,243,857us
33.5102 self 1,083,448
15.2549 init visited 493,066
13.5878 visited[] parent[] ptn_belong[] 441,164
boardId[] leaf_offset[]
2.1331 board_safty[] 69,094
scan_safety: 36,062us
45.9459 self
8.1081 board_safty[]
no collect_pattern
operf on multi thread
32 thread
Task: 40% on lock related
23.7422 self
15.0670 shared_lock
12.8931 ~shared_lock
8.5413 parent[] visited[] ptn_belong[]
6.0671 unique_lock
5.7564 ~unique_lock
1.0691 visited_mut[] board_safty_mut[]