Názor k článku Z recenzí Ryzenu: přetaktování, SMT a herní výkon, potřeba optimalizací a podpora ECC od Jan Olšan - Myslím, že se stále píše. Jsou samozřejmě různé...

  • 6. 3. 2017 23:21

    Jan Olšan (neregistrovaný)

    Myslím, že se stále píše. Jsou samozřejmě různé druhy softwaru, ale třeba takový FFmpeg, x265, x264 (tj. páteř multimediálních aplikací dneška na serverech i doma) se na míru procesorům ladí.

    Někdy má program fakt víc různejch variant kódu pro různý CPU, např. x264 - MMX(2), SSE2, SSSE3,SSE4, AVX2 (pár funkcí je tam i pro XOP, ale je to minimum). Když se používá ruční asemblér přes YASM, NASM, tak to není až tak komplikovaný. Třeba u toho x264/x265 mají programátoři nástroj, kterej sjede všechny varianty a řekne, kolik cyklů pro tu danou funkci to CPU pro jednotlivé větve potřebuje. Program má detekci CPU, a navolí pak cesty pro jednotlivá CPU podle nějakých pravidel. Obvykle je to jen o tom, že starší CPU používají nižší generace SIMD a novější automaticky i ty vyšší, ale jde tam dát i nějaké výjimky, typu že Core 1 nemá používat SSE2 protože ho má pomalejší než SSE2.

    Pochybuju, že by Ryzen dostával vlastní větve kódu, protože nemá jako Bulldozer nějaké vlastní unikátní instrukce. Ale můžou udělat věci jako zakázat na něm AVX/AVX2, pokud nepomáhá (to se zjistí změřením výkonu s a bez). Případně se dají identifikovat funkce, které se mu nelíbí třeba proto, že některé instrukce trvají dýl nebo mají horší throughput. V takovým případě se ten asemblér může trošku pozměnit, aby chutnal jak AMD, tak i Intelu.

    Tam, kde na tom výkonu záleží jako v těch multimédiích, se tohle myslím docela praktikuje. Rozhodně ne všude, ale určitě není pravda, že se všude nechává všecko na kompilátorech.