Jo ale je to relativně minoritní věc, myslím že kernel se obecně snaží být spíš obecnější a Linus sám je zřejmě toho názoru, že nejspíš stačí 128bitový SIMD a místo větších šířek by se mělo v CPU investovat do výkonu jinde (takže 256bit možná ještě OK ale 512bit zbytečnost).
Jenže stačí, když někdo zase dělá multimediální kód nebo podobné výpočetně intenzivní operace (ať už nad obrazovýma datama nebo v HPC) a nejednou to mají lidi přesně obráceně a někdy je vyloženě zajímá SIMD a nic jiného.
Pane Olsane, Linux se predevsim snazi z zeleza dostat maximum i kdyz to nekdy muze jit proti jinym projektovym zamerum (treba bezpecnosti). Linux je proste zavodni formule. Cili jestli je nejake zelezo k dispozici a ma funkci v dane aplikaci, pouzije se. Jeden priklad za vsechny: MD (software raid) v linuxu pocita rychlost pro ruzne rozsireni ISA pri kazdem bootu. Na W-22xx zkriplene pouzitim jen 2 RDIMMu (cili nizsi propustnost pameti) to muze vypada takto:
[ 1.972473] kernel: raid6: avx512x4 gen() 52464 MB/s
[ 2.020475] kernel: raid6: avx512x4 xor() 20061 MB/s
[ 2.068174] kernel: raid6: avx512x2 gen() 43025 MB/s
[ 2.116117] kernel: raid6: avx512x2 xor() 24714 MB/s
[ 2.164063] kernel: raid6: avx512x1 gen() 35451 MB/s
[ 2.212006] kernel: raid6: avx512x1 xor() 19833 MB/s
[ 2.259950] kernel: raid6: avx2x4 gen() 32650 MB/s
[ 2.307895] kernel: raid6: avx2x4 xor() 21471 MB/s
[ 2.355838] kernel: raid6: avx2x2 gen() 32239 MB/s
[ 2.403782] kernel: raid6: avx2x2 xor() 20119 MB/s
[ 2.451727] kernel: raid6: avx2x1 gen() 25682 MB/s
[ 2.499670] kernel: raid6: avx2x1 xor() 18275 MB/s
[ 2.547616] kernel: raid6: sse2x4 gen() 12241 MB/s
[ 2.595559] kernel: raid6: sse2x4 xor() 8075 MB/s
[ 2.643503] kernel: raid6: sse2x2 gen() 12124 MB/s
[ 2.691449] kernel: raid6: sse2x2 xor() 7602 MB/s
[ 2.739395] kernel: raid6: sse2x1 gen() 10874 MB/s
[ 2.787335] kernel: raid6: sse2x1 xor() 6162 MB/s
[ 2.787335] kernel: raid6: using algorithm avx512x4 gen() 52464 MB/s
[ 2.787336] kernel: raid6: .... xor() 20061 MB/s, rmw enabled
[ 2.787336] kernel: raid6: using avx512x2 recovery algorithm
Takze vidite, ze pro RAID6/MD se pouzije prave AVX512, protoze to z benchmarku vyslo jako nejlepsi.
Toto je asi tak nejzrejmejsi priklad, proto opomijim veci jako ZFS a nebo crypto.
Jojo, ono cela ta dlouha leta kdy nebyla AMD konkurence schopna, kdy ARM by jeste nikde (z pohledu vypocetni sily) a POWER/SPARC si hajili svoje domeny se proste nejak podepsat musela. Nicmene ignorujice moznou vyjimku v podobe Amber Lake, snad se i v Intelu blizka na lepsi casy -- kdyz uz i notesy maji AVX512...
O tom RAIDu zrovna vím, ale to jsou ty úzce zaměřené a dobře ohraničené věci. Co jsem tím chtěl říct je, že to není tak, že by vektorizace byla rozesetá v kernelu všude i na jen drobné optimalizace (ono by to vyžadovalo všude mít vektorizované a fallback cesty...). A vzhledem k portovatelnosti/udržovatelnosti je to tak asi určitě správně.
Jinak ohledně toho, že Linus je "zaujatý" (jak sám říká) proti SIMD a moc ho nemá rád: https://www.realworldtech.com/forum/?threadid=193189&curpostid=193203
Holt jádro operačního systému má mnohem víc obecného kódu než těch úloh s charakterem DSP, kde je SIMD nedocenitelné, proto je Linus zaměřený na ty obecné ne-SIMD operace a považuje je za nejdůležitější (je to úplně pochopitelné).