国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看

合肥生活安徽新聞合肥交通合肥房產生活服務合肥教育合肥招聘合肥旅游文化藝術合肥美食合肥地圖合肥社保合肥醫院企業服務合肥法律

代寫cs250編程、代做C++程序語言
代寫cs250編程、代做C++程序語言

時間:2024-11-07  來源:合肥網hfw.cc  作者:hfw.cc 我要糾錯



Project 5: Profiling an Assembly Program
Goal
In this project you will learn how to find where a program spends most of the execution time
using statistical profiling, and you will implement your own statistical profiler.
Task 0: Download the initial sources and start tsearch_asm6.s
To start your project clone the project5 repository:
git clone /homes/cs250/sourcecontrol/work/$USER/project5-src.git
cd project5-src
The implementation of binary tree search in C is similar to the one from project4. You will copy
your implementation from tsearch_asm5.s into tsearch_asm6.s
To test the implementation type
data 149 $ ./run_bench.sh
================== Running TreeSearch Iterative in C benchmark ================
Total CPU time: 4.125084397 seconds
real 0m7.960s
user 0m7.830s
sys 0m0.124s
================== Running ASM 6 benchmark ================

It will also try to run the tsearch_asm6.s but it will fail if it is not implemented yet.
Task 1:Insert profiling code in the benchmark
The file profil.c implements the code that starts profiling the program, and writes the histogram
of the file at the end:
void start_histogram();
void print_histogram();
Open the file profil.c and see how start_histogram creates an array of counters, that is passed
to profil(), that creates the execution histogram. See "man profil". This histogram is an array of
integers, where every integer represents an instruction or group of instruction. profil() activates a
timer that every .01secs looks at the program counter of the program, and increments the
counter in the histogram that corresponds to that program counter.
Open the file tsearch_bench_better.c and find the main(). Then above main, you will insert the
external prototypes of start_histogram() and print_histogram(): as follows. Also call
start_histogram() at the beginning of main() and print_histogram() at the end.
extern void start_histogram();
extern void print_histogram();
/*
* Main program function. Runs the benchmark.
*/
__attribute__ (( visibility("default") ))
int
main(int argc, char **argv)
start_histogram();
…..
print_histogram();
}
Modify run_bench, so both gcc compilation commands link profil.c
echo ================== Running TreeSearch Iterative in C benchmark ================
gcc -g -static -o tsearch_bench_iterative_c tsearch_bench_better.c tsearch.c AVLTree.c tsearch_iterative.c profil.c || exit 1

gcc -g -static -o tsearch_bench_asm6 tsearch_bench_better.c tsearch.c AVLTree.c tsearch_asm6.s profil.c || exit 1

Now type run_bench.
data149 $ ./run_bench.sh
You will find the following file:
ls *.hist
tsearch_bench_iterative_c.hist
Open this file, and you will observe that it contains the program counters in the histogram that
are larger than 0. The counter is multiplied by 1ms, so the counters are displayed in ms. Identify
the program counter where the program is spent most of its time:

0x45b86a 60ms
0x45b870 1120ms
0x45b878 10ms
0x45b87c 30ms

Then run the command "nm -v tsearch_bench_iterative_c | less"that prints all the functions in
the program sorted by address, and finds the function that includes this program counter. Use
the up/down arrow keys to navigate "less".
data 163 $ nm -v tsearch_bench_iterative_c | less
….
000000000045aee0 T __stpcpy_evex
000000000045b340 T __strchr_evex
000000000045b5e0 T __strchrnul_evex
000000000045b840 T __strcmp_evex
000000000045bcb0 T __strcpy_evex
000000000045c100 T __strlen_evex
000000000045c280 T __strncmp_evex
000000000045c7f0 T __strncpy_evex
….
__strcmp_evex is the function where tsearch_bench_iterative_c spends most of its time.
Now to find the assembly instruction type "objdump -d tsearch_bench_iterative_c | less" that
prints the assembly instructions that make the program and their address in the program. Find
the assembly instruction that includes the counter 45b870, that is 45b86c . This is because
0x45b870 is larger than 45b86c but smaller than 45b8**.
objdump -d tsearch_bench_iterative_c | less
000000000045b840 <__strcmp_evex>:
45b840: f3 0f 1e fa endbr64
45b844: 89 f8 mov %edi,%eax
45b846: 31 d2 xor %edx,%edx
45b848: 62 a1 fd 00 ef c0 vpxorq %xmm16,%xmm16,%xmm16
45b84e: 09 f0 or %esi,%eax
45b850: 25 ff 0f 00 00 and $0xfff,%eax
45b855: 3d 80 0f 00 00 cmp $0xf80,%eax
45b85a: 0f 8f 70 03 00 00 jg 45bbd0 <__strcmp_evex+0x3**>
45b860: 62 e1 fe 28 6f 0f vmovdqu64 (%rdi),%ymm17
45b866: 62 b2 75 20 26 d1 vptestmb %ymm17,%ymm17,%k2
45b86c: 62 f3 75 22 3f 0e 00 vpcmpeqb (%rsi),%ymm17,%k1{%k2}
45b8**: c5 fb 93 c9 kmovd %k1,%ecx
45b877: ff c1 inc %ecx
45b879: 74 45 je 45b8c0 <__strcmp_evex+0x80>
45b87b: f3 0f bc d1 tzcnt %ecx,%edx
45b87f: 0f b6 04 17 movzbl (%rdi,%rdx,1),%eax
The instruction marked in red is the instruction that is taking the most time.
Task 2: Write your own profiler program.
Using the example in Task1, write a program myprof.c that prints a table with the top 10
functions where the program spends most of its time and it will also print for each function,
which instructions take most of the time . The program will take the following arguments:
myprof prog
The program will open prog.hist, and store the entries in an array of structs with the program
counter and the time in ms. Then it will call system("nm -v prog > nm.out") using the system()
function (see man system) that executes a command inside a C program, and redirect it into a
file nm.out. Myprof will read nm.out, and it will also store the entries in an array of structs with
program counters and function names. Then for every pc in the histogram, it will increment the
time in ms of the corresponding function. After this is done, it will sort the functions by time, and
identify the 10 top functions where the execution spends most of the time. Finally, it will also
print the assembly code of these functions using objdump, and print the time spend in each
assembly instruction. Only the instructions with a time greater than 0 are printed.
The output will look like the following example:
myprof tsearch_bench_iterative_c
Top 10 functions:
ith Function Time(ms) (%)
1: mystrcmp 120ms 25%
2: malloc 80ms 36%
….
Top 10 functions Assembly
1: mystrcmp 120ms 25%
120ms 42cf60: f6 c2 20 test $0x20,%dl
2: malloc 80ms 36%
20ms 4628cc: 48 89 de mov %rbx,%rsi
10ms 4628cf: e8 cc e3 ff ff call 460ca0
Task 3:Using your profiler, improve your tsearch_asm6.s
Using your profiler, optimize your implementation in tsearch_asm6.s
Grading
The grading will be done during lab time. You don't need to turn in the implementation since the
git repository will have your most recent implementation.

請加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp




 

掃一掃在手機打開當前頁
  • 上一篇:代做COMP3230、Python語言程序代寫
  • 下一篇:MSE 280代做、代寫C++,Python程序
  • 無相關信息
    合肥生活資訊

    合肥圖文信息
    流體仿真外包多少錢_專業CFD分析代做_友商科技CAE仿真
    流體仿真外包多少錢_專業CFD分析代做_友商科
    CAE仿真分析代做公司 CFD流體仿真服務 管路流場仿真外包
    CAE仿真分析代做公司 CFD流體仿真服務 管路
    流體CFD仿真分析_代做咨詢服務_Fluent 仿真技術服務
    流體CFD仿真分析_代做咨詢服務_Fluent 仿真
    結構仿真分析服務_CAE代做咨詢外包_剛強度疲勞振動
    結構仿真分析服務_CAE代做咨詢外包_剛強度疲
    流體cfd仿真分析服務 7類仿真分析代做服務40個行業
    流體cfd仿真分析服務 7類仿真分析代做服務4
    超全面的拼多多電商運營技巧,多多開團助手,多多出評軟件徽y1698861
    超全面的拼多多電商運營技巧,多多開團助手
    CAE有限元仿真分析團隊,2026仿真代做咨詢服務平臺
    CAE有限元仿真分析團隊,2026仿真代做咨詢服
    釘釘簽到打卡位置修改神器,2026怎么修改定位在范圍內
    釘釘簽到打卡位置修改神器,2026怎么修改定
  • 短信驗證碼 寵物飼養 十大衛浴品牌排行 suno 豆包網頁版入口 wps 目錄網 排行網

    關于我們 | 打賞支持 | 廣告服務 | 聯系我們 | 網站地圖 | 免責聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 hfw.cc Inc. All Rights Reserved. 合肥網 版權所有
    ICP備06013414號-3 公安備 42010502001045

    国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看
    性色av香蕉一区二区| 国产精品美女主播在线观看纯欲| 欧美一级黄色网| 久久伊人91精品综合网站| 国产精品久久一区二区三区| 国产精品裸体瑜伽视频| 国产精品欧美风情| 欧美成人精品在线| 宅男av一区二区三区| 亚洲欧美日韩在线综合| 亚洲av综合色区| 视频一区二区视频| 日韩免费在线免费观看| 欧美日韩在线不卡一区| 激情六月丁香婷婷| 国产日韩欧美一二三区| 国产日韩精品一区二区| 99高清视频有精品视频| 久久精品国产美女| 国产一区二区网| 欧美日韩国产免费一区二区三区| 欧美日韩精品免费看| 男女午夜激情视频| 少妇高清精品毛片在线视频| 国产精品激情av在线播放| 国产精品视频500部| 国产成人永久免费视频| 日韩亚洲第一页| 欧美成年人视频网站| 久久久久久国产精品三级玉女聊斋| 亚洲一区二区中文| 热99精品里视频精品| 国产中文字幕乱人伦在线观看| 国内一区在线| 91精品国产乱码久久久久久蜜臀 | 亚洲女人毛片| 日本wwww视频| 国产日韩三区| 国产ts人妖一区二区三区| 国产精品久久国产精品| 亚洲精品国产suv一区88| 欧美在线视频一二三| 国产精品亚洲αv天堂无码| 久久久久免费看黄a片app| 久久99国产综合精品女同| 色综合视频二区偷拍在线| 好吊色欧美一区二区三区四区 | 国产av熟女一区二区三区| 国产精品男人的天堂| 亚洲一区影院| 好吊色欧美一区二区三区视频| 91国产一区在线| 欧美日本亚洲视频| 欧美在线视频网| 91免费国产精品| 不卡av在线播放| 日韩欧美xxxx| 91免费版看片| 欧美成人免费一级人片100| 欧美一级视频一区二区| 国产无套内射久久久国产| 色婷婷综合久久久久| 亚洲精品蜜桃久久久久久| 国产色婷婷国产综合在线理论片a| 久久久久久九九| 大j8黑人w巨大888a片| 国产男女在线观看| 国产精品久久久久久久久久小说| 性色av一区二区三区在线观看| 国产美女99p| 国产精品二区二区三区| 欧美综合在线观看| 久久99精品久久久久久青青日本| 一本一生久久a久久精品综合蜜| 激情五月综合色婷婷一区二区| 国产成人av网址| 五月天国产一区| 99热在线国产| 亚洲综合第一页| 成人精品视频久久久久| 中文字幕99| 国产精品亚洲精品| 欧美激情极品视频| 国产青青在线视频| 欧美巨大黑人极品精男| 蜜桃视频在线观看91| 国产精品久久久久久久久久直播| 黄色片一级视频| 欧美成aaa人片免费看| 韩日欧美一区二区| 国产精品久久久久久久久久小说| 欧美伊久线香蕉线新在线| 日韩亚洲综合在线| 欧洲日本亚洲国产区| 麻豆av一区二区三区久久| 欧美精品福利视频| 久久久久女教师免费一区| 国产美女久久精品| 国产精品日韩一区二区| 成人av免费电影| 成人精品视频久久久久| 一区二区三区四区免费视频| 俄罗斯精品一区二区三区| 亚洲自拍欧美另类| 日本午夜精品一区二区三区| julia一区二区中文久久94| 91老司机精品视频| 亚洲国产精品综合| 国产午夜精品视频一区二区三区| 亚州成人av在线| 韩日午夜在线资源一区二区| 蜜臀久久99精品久久久无需会员| 国产欧美欧洲| 亚洲精蜜桃久在线| 久久久久久亚洲精品中文字幕| 加勒比海盗1在线观看免费国语版| 国产精品久久久对白| 国产精品一区二区免费在线观看| 亚洲精品一区二区三区四区五区| 91精品久久久久久久久久久久久| 日本一区二区在线| 国产精品欧美久久久| 丰满少妇大力进入| 日本www高清视频| 国产精品国产亚洲精品看不卡 | 国产欧美日韩免费看aⅴ视频| 国产99在线|中文| 国产精品8888| 欧美激情www| 亚洲综合在线小说| 日韩在线www| 国产伦理久久久| 秋霞成人午夜鲁丝一区二区三区| 国产精品偷伦免费视频观看的| 国产在线精品一区二区三区| 午夜精品短视频| 久热精品视频在线观看| 国产xxxx振车| 国产男女免费视频| 欧美性视频在线| 亚洲国产精品久久久久爰色欲| 国产成人精品在线视频| 91精品视频在线免费观看| 免费看a级黄色片| 日韩av电影国产| 欧美激情网站在线观看| 久久久久久久久久码影片| 国产精品一区二区三区免费视频 | 国产在线一区二区三区| caoporn国产精品免费公开| 欧美自拍大量在线观看| 亚洲一区二区三区视频| 国产精品久久久久久久久久 | 国产精品中文在线| 欧美一级大片视频| 天天爱天天做天天操| 色综合久久88| 久久久久久久久久久亚洲| 成人精品久久一区二区三区| 韩国国内大量揄拍精品视频| 日本久久亚洲电影| 亚洲精品乱码视频| 一本一道久久久a久久久精品91| 国产精品久久久久福利| 视频在线一区二区| 国产成人精品免费视频| 91成人国产在线观看| 国产精品一区av| 国产亚洲综合视频| 免费99视频| 国内精品国产三级国产在线专| 青青在线免费观看| 日韩福利视频| 亚洲高清精品中出| 亚洲图片小说在线| 欧美日韩xxx| 欧美激情视频网址| 一区二区三区四区国产| 欧美激情中文字幕乱码免费| 美女av一区二区三区 | 国产精品久久久久av| 久久久精品网站| 久久久久久亚洲精品不卡| 久久久久久久久中文字幕| 色婷婷综合久久久久| 日韩在线观看免费av| 日韩中文字幕在线视频播放| 色阁综合伊人av| 久久久精品影院| 国产精品久久中文| 欧美成在线观看| 久久久久久com| 婷婷四房综合激情五月| 日本高清久久天堂| 欧美精品无码一区二区三区| 国内自拍欧美激情| 国产精品亚洲综合天堂夜夜| 91精品国产91久久久久青草| 久久亚洲精品欧美| 日韩在线观看免费av|