Jestem zaznajomiony z językiem C/C++ i językiem montażu x86/x64, ale teraz muszę studiować optymalizacje graficzne (ogólnie SSE/SSE2 i asm optymalizacje), jakie zasoby/książki/linki czy mogę użyć do poznania tych tematów? Szukałem w internecie, bez większego powodzeniaUczenie optymalizacji SSE/SSE2 i asm
Odpowiedz
Marco, odpowiedź
Trzypunktowy poniżej:
- Jeśli chcesz dowiedzieć się zestaw szybkich sztuczek, są tam książki dostępne w ramach ogólnych tytułów zagadek algorytmicznych. Następujące dwie użyłem i zapewniam doskonałe wyzwanie, by doskonalić twoje umiejętności. Book1 to zbiór bardzo ciekawych sztuczek. Cieszyłem się również tym Book2.
Stanowiska profesora Agnera Sądzę, że to ostatnie słowo na ten temat i trzeba je przeczytać.
Jeśli szukasz specyfiki jak zoptymalizować lub użyj 64 bitowy zestaw instrukcji - moje doświadczenie było to, aby utrzymać Intel Ręczne Vol 2 przydać. Możesz zadać konkretne pytanie na tym forum i zdobyć doskonałe rozwiązania. Jeśli chcesz zacząć na nieco bardziej podstawowym poziomie, istnieje doskonały zestaw tutoriali youtube przez WhatsACreel - zakres i objaśnienia są wspaniałe. Zabiera cię do AVX/AVX2 ustawia ponad 60 dziwnych sesji, zaczynając od podstaw.
Nie jestem zawodowym programistą - jestem specjalistą od zarządzania przedsiębiorstwem, ale piszę 64-bitowe kody asemblerowe dla instytucji akademickich/osób, których doktorat utknął lub cierpi/niektóre takie osoby w tym czasie/w moim wolnym czasie. Myślę, że x64 jest niezwykle potężny, pięknie kompaktowy i robi to, czego nie może zrobić żaden język. Tak więc, jeśli ktokolwiek próbuje zniechęcić cię do pisania w x64, powołując się na złożoność lub cokolwiek innego, pokaż im demontaż kodu wygenerowanego przez dowolny kompilator z własnego wyboru :-) (powinien wystraszyć je wystarczająco) lub po prostu delikatnie zignoruj im.
Wszystko co najlepsze,
Nietypowe jest dzwonienie do profesorów uniwersyteckich tylko po imieniu. Co by pomyślał o tym profesor Donald? –
Co więcej, nie jest konieczne, aby być tak formalnym, z wyjątkiem Niemców (wtedy musisz użyć nazwiska Herr Professor Doktor). –
- 1. Różnica między pamięcią asm, asm volatile i clobbering
- 2. Uczenie się i tworzenie międzyplatformowe (C++)
- 3. w jądrze Linux, asm lub asm-generic?
- 4. C++ Biblioteka wzmacniania uczenie
- 5. Uczenie się C++, prawda?
- 6. c99 __restrict i kompilator optymalizacji
- 7. Python - uczenie maszynowe
- 8. Uczenie się Rubinowych przekleństw
- 9. Uczenie się C++ bez IDE
- 10. Uczenie maszynowe na dużą skalę
- 11. Uczenie się wbudowanego oprogramowania układowego
- 12. Uczenie maszynowe: bez nadzoru Backpropagation
- 13. ASM: Stateful Transformation
- 14. Dekompilacja EXE do ASM
- 15. ASM: MASM, NASM, FASM?
- 16. Wyjaśnienie kodu Asm:
- 17. Nadzorowane uczenie się, (ii) Uczenie bez nadzoru, (iii) Zbrojenie Dowiedz się
- 18. Java dla optymalizacji pętli
- 19. Jakie rodzaje optymalizacji ma LLVM i jakie rodzaje optymalizacji muszą implementować same interfejsy?
- 20. optymalizacji kompilatora Java String
- 21. Metoda optymalizacji równań()
- 22. Programowa kontrola optymalizacji Pythona?
- 23. Pytanie o wyrobienie Microsoft ASM?
- 24. Uczenie się C++ jako programisty Perla
- 25. Nie można importować MLPRegressor scikit-uczenie się
- 26. uczenie się nhibernate (z płynem lub bez)
- 27. Błąd optymalizacji pętli LLVM?
- 28. Scikit-uczenie siatka z regresem SVM
- 29. ADC instrukcja w ASM 8086
- 30. GCC inline ASM o zmiennej
Ogólniej: http://www.agner.org/optimize/ wiele szczegółów na temat jak się tam optymalizacji. Aby uzyskać nieco bardziej kompletną tabelę opóźnień instrukcji, zobacz http://instlatx64.atw.hu/ – harold
W ostatnim semestrze wygłaszałem kilka wykładów na temat optymalizacji procesora, w tym SIMD, i zapewne przydatne będą slajdy z wykładów. http://www.cc.gatech.edu/grads/m/mdukhan3/ –
Tak jak na marginesie, mieszanie się z ASM jest zazwyczaj złym pomysłem (przynajmniej jeśli powodem jest po prostu optymalizacja), szczególnie w przypadku SSE. Używaj elementów intrinsics, które są znacznie łatwiejsze w użyciu, niezależne od platformy (jako niezależne od platformy, jak można uzyskać dzięki SSE), a co ważniejsze, bardziej wydajne, ponieważ kompilator jest prawdopodobnie znacznie lepszy w optymalizacji niż ty. Nie próbuj przechytrzyć swojego kompilatora (lub, jeśli chcesz, spróbuj * naprawdę mocno *). –