This shows you the differences between two versions of the page.
iocla:cursuri:curs-16_17 [2019/12/30 12:04] dragos.niculescu [Demo-uri] |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Curs 16 - 17: Optimizari ====== | ||
- | |||
- | <html> | ||
- | <iframe src="https://ctipub-my.sharepoint.com/personal/dragos_niculescu_upb_ro/_layouts/15/Doc.aspx?sourcedoc={3191d1ae-dca1-4027-a96e-c94e791e7be1}&action=embedview&wdAr=1.3333333333333333" width="722px" height="565px" frameborder="0">This is an embedded <a target="_blank" href="https://office.com">Microsoft Office</a> presentation, powered by <a target="_blank" href="https://office.com/webapps">Office</a>.</iframe> | ||
- | </html> | ||
- | |||
- | * [[https://ctipub-my.sharepoint.com/:p:/g/personal/dragos_niculescu_upb_ro/Ea7RkTGh3CdAqW7JTnkee-EBsaTLWwMQz6TymVUuPpZ69Q?e=ekuw2W|Curs 16 - 17: Optimizari (PPT)]] | ||
- | |||
- | * Suport curs | ||
- | * Ray Sefarth, "Introduction to 64 Bit Intel Assembly Language Programming for Linux", 2011, capitolul 15 | ||
- | * Richard Blum, "Professional Assembly Language", 2005, capitolul 16 | ||
- | * De citit, alte surse | ||
- | * [[http://agner.org/optimize/| Agner Fog optimization manuals - optimizarea e un curs de semestru! ]] | ||
- | * [[https://danluu.com/assembly-intrinsics/|Hand coded assembly beats intrinsics in speed and simplicity]] | ||
- | * [[http://arjunsreedharan.org/post/82710718100/kernel-101-lets-write-a-kernel|Let's write a kernel]] | ||
- | * [[http://neilkemp.us/src/sse_tutorial/sse_tutorial.html|Intel SSE Tutorial : An Introduction to the SSE Instruction Set]] | ||
- | |||
- | | ||
- | |||
- | |||
- | ===== Demo-uri ===== | ||
- | |||
- | Pentru parcurgerea demo-urilor, folosim<code bash> | ||
- | git clone https://github.com/iocla/demo.git | ||
- | </code> și accesăm directorul rezultat în urma decomprimării<code bash> | ||
- | cd curs-12 | ||
- | </code> | ||
- | |||
- | Acum putem parcurge secțiunile cu demo-uri de mai jos. | ||
- | |||
- | ==== Demo ==== | ||
- | |||
- | ''cd curs-12-demo/'' | ||
- | |||
- | ''cat /proc/cpuinfo | grep Hz'' | ||
- | |||
- | ''make'' | ||
- | |||
- | ''./test_freq'' | ||
- | estimează frecvența procesorului folosind registrul TSC pentru sleep(1) | ||
- | |||
- | ''./test_rdtsc'' | ||
- | în bucla rep trebuie încercate diverse combinații de instrucțiuni. | ||
- | Programul afișează numărul de instrucțiuni din buclă și numărul de cicli folositi. | ||
- | |||
- | ''./test_sse'' | ||
- | se compară viteza de execuție cu operații SSE cu prelucrarea clasică octet cu octet | ||
- | |||
- | ''./lock'' | ||
- | Cum arată inline assembly? Cu C++ | ||
- | Cum arată un "race condition"? | ||
- | Instrucțiunile nu sunt atomice! | ||
- | Prefixul lock. | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||