加勒比久久综合,国产精品伦一区二区,66精品视频在线观看,一区二区电影

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

代寫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程序
  • 無相關信息
    合肥生活資訊

    合肥圖文信息
    2025年10月份更新拼多多改銷助手小象助手多多出評軟件
    2025年10月份更新拼多多改銷助手小象助手多
    有限元分析 CAE仿真分析服務-企業/產品研發/客戶要求/設計優化
    有限元分析 CAE仿真分析服務-企業/產品研發
    急尋熱仿真分析?代做熱仿真服務+熱設計優化
    急尋熱仿真分析?代做熱仿真服務+熱設計優化
    出評 開團工具
    出評 開團工具
    挖掘機濾芯提升發動機性能
    挖掘機濾芯提升發動機性能
    海信羅馬假日洗衣機亮相AWE  復古美學與現代科技完美結合
    海信羅馬假日洗衣機亮相AWE 復古美學與現代
    合肥機場巴士4號線
    合肥機場巴士4號線
    合肥機場巴士3號線
    合肥機場巴士3號線
  • 短信驗證碼 目錄網 排行網

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

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

    麻豆国产精品一区二区三区| 欧美va天堂在线| 国产精品综合| 免费在线观看成人| 99精品网站| 日韩激情在线观看| 日本不卡一二三区黄网| 亚洲最新无码中文字幕久久| 午夜日本精品| 精品在线网站观看| 日韩av资源网| 久久久久久毛片免费看 | 欧美无毛视频| 国产一区导航| 国产综合精品| 秋霞影院一区二区三区| 日本最新不卡在线| 欧美黄色免费| 欧美久久久网站| 日韩激情免费| 日本久久综合| 99在线热播精品免费99热| 里番精品3d一二三区| 天堂va在线高清一区| 国产日产精品_国产精品毛片| 国产日韩高清一区二区三区在线| 日韩av中字| 欧美激情国产在线| 国产免费成人| 女人香蕉久久**毛片精品| 加勒比色综合久久久久久久久| 精品视频在线观看免费观看| 亚洲色图综合| 欧美黄色大片网站| 日本成人超碰在线观看| 国产欧美亚洲一区| 日韩免费大片| 四虎国产精品免费久久| 丝袜诱惑一区二区| 亚洲午夜天堂| 日韩在线观看| 人在线成免费视频| 激情黄产视频在线免费观看| 视频一区在线播放| 美女诱惑一区| 免费观看在线综合色| 99伊人成综合| 老司机午夜免费精品视频 | 国产精品成人av| 男女视频一区二区| 欧美残忍xxxx极端| 亚洲黄色免费av| 欧美xxxx做受欧美护士| 精品欧美一区二区三区在线观看| 91精品影视| 岛国精品在线| 免费视频一区| 一区二区三区四区日韩| 国产精久久一区二区| 亚洲人成精品久久久 | 影音先锋亚洲电影| 亚洲精品美女91| 国产精品一区二区三区av | 99视频精品免费观看| 香蕉成人久久| 久草在线资源福利站| 深夜av在线| 久久精品 人人爱| 欧美日韩中文| 日韩精品导航| 精品日韩一区| 一区免费在线| 国产福利片在线观看| 午夜精品久久久久久久久久蜜桃| 日本精品久久| 粉嫩一区二区三区在线观看| 精品视频一区二区三区在线观看| 99热这里只有精品首页| 99久久www免费| 久久高清国产| 欧美一区久久久| 日本视频免费一区| 亚洲系列另类av| 精品视频高潮| 久久性色av| 亚洲四虎影院| 欧美片网站免费| 国产毛片久久久| 亚洲激情网站| 你懂得影院夜精品a| 国产精品大片| 一区二区在线视频观看| 午夜国产欧美理论在线播放| 超碰高清在线| 在线观看一区视频| 亚洲综合色婷婷在线观看| 欧美粗暴jizz性欧美20| 国产黄大片在线观看| 麻豆成人在线观看| 日韩欧美中文字幕一区二区三区| 波多野结衣一区| 91综合久久一区二区| 捆绑调教美女网站视频一区| 日韩三级不卡| 亚洲一区国产| 美女国产一区二区三区| 日韩av高清在线观看| 免费不卡中文字幕在线| 日韩av中字| 欧美精品三级在线| 亚洲香蕉网站| 深夜成人在线| 国产亚洲一区二区三区不卡| 欧美1区2区3区| 91九色综合| 国产欧美视频在线| 久久av一区| 亚洲精品影院在线观看| 91精品久久久久久久蜜月| 视频一区二区三区中文字幕| 麻豆国产精品777777在线| 精品人人人人| 亚洲性色av| 亚洲国产中文在线二区三区免| 免费看黄裸体一级大秀欧美| 亚洲国产精品一区制服丝袜| 欧美亚洲国产日韩| 日本免费一区二区三区四区| 精品国产亚洲一区二区三区大结局| 影音国产精品| 亚洲国产一区二区三区高清| 久久免费av| av在线播放一区| 精品视频网站| 国产亚洲一区二区手机在线观看| 日韩电影在线免费观看| 日韩中文欧美在线| 国产成人短视频在线观看| 黄色亚洲大片免费在线观看| 捆绑调教一区二区三区| 国产一区日韩一区| 三级不卡在线观看| 免费精品国产| 另类人妖一区二区av| 亚洲精品一二三区区别| 亚洲久久一区二区| 午夜精品偷拍| 久久视频在线观看| 亚洲一区不卡| 国产一区二区三区四区| 亚洲欧美高清| 综合伊思人在钱三区| 蜜芽一区二区三区| 亚洲精品一级二级三级| 色偷偷综合网| 国产精品白丝一区二区三区| 久久99久久99精品免观看软件| 久久精品色播| 久久中文在线| 国产色综合网| 亚洲电影男人天堂| 亚洲精品mv| 99精品视频在线| 在线观看亚洲| 日韩制服丝袜先锋影音| 在线视频亚洲欧美中文| 日韩毛片在线| 亚洲黑丝一区二区| 国产不卡精品| 多野结衣av一区| 久久97久久97精品免视看秋霞| 免费亚洲一区| 国产精品乱看| 第一区第二区在线| 国产日韩欧美| 鲁大师成人一区二区三区| 日韩精品一区国产| 日韩亚洲国产免费| 先锋影音久久| 成人三级视频| 亚洲日韩中文字幕一区| 日韩毛片视频| 五月精品视频| 精品国产乱码久久久久久樱花| 欧美日韩视频免费看| 红桃视频欧美| 超碰地址久久| 伊人久久综合网另类网站| 中文在线а√在线8| 天天射天天综合网| 精品视频在线播放一区二区三区| 国产欧美自拍| 日韩av自拍| 天天av综合| 成人中文视频| 国产乱码精品一区二区三区四区| 免费毛片b在线观看| 亚洲免费网址| 理论片一区二区在线| 亚洲丝袜美腿一区|