国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女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怎么修改定
  • 短信驗證碼 豆包網頁版入口 破天一劍 目錄網 排行網

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

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

    国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看
    成人亚洲欧美一区二区三区| 黄色动漫在线免费看| 秋霞毛片久久久久久久久| 国产美女被下药99| 国产精品欧美日韩一区二区| 日本久久91av| 91久久久国产精品| 欧美精品999| 国产三级中文字幕| 久久av.com| 欧美高清性xxxxhdvideosex| 久久9精品区-无套内射无码| 亚洲一区二区三区视频| 国产伦精品一区二区三区照片| 国产精品乱码一区二区三区| 欧美高清视频一区二区三区在线观看| 日韩在线视频观看| 日韩精品视频在线观看视频| 久久久久久久久久久久久久久久av| 日本精品一区二区三区高清 久久| 久久九九国产视频| 日产日韩在线亚洲欧美| 国产成人精品免费视频| 日本精品久久久久中文字幕 | 欧美最大成人综合网| 色吧影院999| 日本不卡二区| 国产精品天天av精麻传媒| 国内外免费激情视频| 国产精品国产对白熟妇| 国产欧美最新羞羞视频在线观看| 久久99热精品这里久久精品| 成人短视频在线观看免费| 中文字幕一区二区三区乱码| 91九色蝌蚪国产| 日本成熟性欧美| 色婷婷综合成人av| 黄网站欧美内射| 久久资源免费视频| 成人免费在线一区二区三区| 亚洲精品影院| 成人免费在线网| 日韩在线三区| 国产成人久久久| 精品一区二区三区日本| 欧美激情亚洲视频| 国产精品12p| 欧美性大战久久久久xxx| 国产精品黄视频| 97久久天天综合色天天综合色hd| 日韩一二区视频| 日本久久久久久久久| 五月天亚洲综合情| 亚洲午夜久久久影院伊人 | 久久久久久九九| 欧美日韩高清免费| 国产99视频精品免视看7| 久久这里只有精品18| 激情六月天婷婷| 午夜精品一区二区三区在线播放| 久久久999成人| 97色伦亚洲国产| 欧美在线一区二区三区四区| 中文精品视频一区二区在线观看| 久久福利电影| 国产精品一区二区三区毛片淫片| 日韩一二区视频| 欧美激情一二区| 日韩中文理论片| 国产欧美精品一区二区三区介绍| 日本视频一区二区在线观看| 久久夜精品香蕉| 国产成人亚洲综合91| 精品无人区一区二区三区| 欧美一区二区三区综合| 国产精品久久av| 91国内精品久久| 欧美成人蜜桃| 熟女视频一区二区三区| 精品蜜桃一区二区三区| 久久久久久欧美| 超碰成人在线免费观看| 色阁综合av| 欧美一级片免费在线| 国产欧美精品va在线观看| 国产在线视频欧美一区二区三区| 视频一区二区三区在线观看| 久久天堂av综合合色| 国产精品久久中文字幕| 91精品国产沙发| 日本免费久久高清视频| 精品国产第一页| 久久精品91久久久久久再现| 91国产美女视频| 国产免费成人av| 欧美精品在欧美一区二区| 天堂va久久久噜噜噜久久va| 亚洲最大激情中文字幕| 国产精品久久久91| 久久精品久久久久久国产 免费| 国产日韩av在线播放| 欧美做受高潮1| 日本精品免费| 色综合视频二区偷拍在线| 一卡二卡3卡四卡高清精品视频| 国产精品高潮呻吟久久av无限| xvideos亚洲| 国产成人激情视频| 久久综合久久综合这里只有精品| julia一区二区中文久久94| 国产伦精品一区二区三区在线| 国产一区视频在线| 美国av一区二区三区| 欧美日韩国产精品激情在线播放 | 亚洲激情一区二区| 色在人av网站天堂精品| 蜜臀久久99精品久久久久久宅男| 国产精品久久久久久av下载红粉| 日韩中文字幕免费视频| 久久久久久久午夜| 久久国产精品免费观看| 久久精品国产精品亚洲色婷婷| 久久婷婷国产综合尤物精品| 久久久免费精品视频| 久久涩涩网站| 国产成人91久久精品| 久久99精品久久久久久久久久| 色婷婷综合久久久久| 久久久久久久久国产精品| 久久久久久久久久久人体| 日韩亚洲综合在线| 国产精品美女主播在线观看纯欲 | 日韩精品大片| 欧美一区二区影视| 黄色特一级视频| 美女精品国产| 官网99热精品| 116极品美女午夜一级| 国产h视频在线播放| 日韩亚洲综合在线| 国产精品精品久久久久久| 精品久久久久av| 欧美日本黄视频| 亚洲精品乱码久久久久久蜜桃91 | 欧美精品一区二区三区国产精品 | 国产精品久久av| 综合色婷婷一区二区亚洲欧美国产| 亚洲最大成人网色| 日本一区二区精品视频| 欧美精彩一区二区三区| 国产日本欧美一区二区三区 | 亚洲一区二区三区在线视频| 欧美一区二区三区电影在线观看| 日韩欧美精品在线不卡| 黄页网站在线观看视频| 成人福利网站在线观看11| 国产成人精品a视频一区www| 国产精品网站免费| 欧美日韩成人黄色| 欧美一区二区三区成人久久片| 欧美不卡1区2区3区| 不卡一区二区三区视频| 久草精品在线播放| 久久成人一区二区| 日本在线观看天堂男亚洲| 欧美激情一区二区三区在线视频| 国产欧美一区二区三区在线看| 久久欧美在线电影| 国产精品秘入口18禁麻豆免会员| 亚洲综合精品伊人久久| 人妻少妇精品久久| 福利在线一区二区| 久久久精品久久| 亚洲欧美一区二区原创| 欧美精品久久久久久久自慰| 国产精品一区二区久久国产| 久久婷婷开心| 久久99久久99精品免观看粉嫩| 日韩免费一区二区三区| 国产精品亚洲综合| 三级精品视频久久久久| 亚洲一区免费看| 男女猛烈激情xx00免费视频| 国产精品av一区| 精品视频9999| 青青草国产免费| 97国产在线视频| 国产精品乱码一区二区三区| 天堂精品视频| 成人免费视频97| 国产精品久久久久av福利动漫| 日日碰狠狠丁香久燥| 国产美女在线精品免费观看| 日韩中文在线不卡| 水蜜桃亚洲精品| 国产精品一区二区三区久久| 国产成人久久久精品一区 | 成人羞羞国产免费网站| 久久夜精品香蕉| 欧美精品一区二区三区在线看午夜|