TGViewer
📓 Записки программера 📓 Записки программера @notes_of_programmer · 1.1K subscribers
Post #643 4.72K
Тут на соседнем канале зашла речь про ускорение некоторых алгоритмов с помощью SIMD и я побыстрому накидал реализацию двух - косинусное сходство и корреляцию Пирсона (на скриншоте бенчи для него, для косинусного сходства - в камментах в gist). Алгоритмы как будто прямо таки созданы для Single Instruction/Multiple Data :)

Первый блок на скриншоте - просто мап на Vector<double> и дальнейшие операции, ничо сложного, но даже это даёт 6-кратный буст. Второй блок с float, тут ещё побыстрее, просто потому что элемент в 2 раза тоньше и за один чпок забирается в два раза больше элементов по сравнению с double.

Но вот дальше там был ещё один кейс, когда входные данные короче И double И float - например short. И вот тут становица всё ещё интереснее: отмапленый в Vector256<short> забирает сразу 16 элементов входного массива. Напрямую в Vector256<float> такое не смапиш конечно, поэтому операция двухэтапная - сначала GetLower/GetUpper по 8 элементов экспандяца до int (32 бита = 256 бит), а потом кастяца до float (тоже 256 бит).

Вроде выглядит некоторыми костылями, но это даёт 14-кратный буст даже на длинных массивах, которые гарантированно не влезают в L2 кэш. Если кастить в 32-битный float конечно, с double ситуация пожиже - там буст ровно в два раза хуже (~x7), что вполне логичо :))

Судя по всему выполнение SIMD инструкций тут отлично сочетается с асинхронностью L1/L2-кэша - пока локальные данные кастяца, множаца и складываюца - в кэш подтягиваются следующие порции данных и к моменту следующей итерации они уже там. #simd
  • 👍 11
  • 🤯 5
  • 🔥 4
More from @notes_of_programmer
  1. Sep 30, 2026WSL containers is now generally available есть и морда к ним wslcontainerdesktop #windows
  2. Sep 24, 2026Надеюсь что не пригодится, но вдруг... Creating a memory dump in C# а заодно как его посмо…
  3. Sep 15, 2026А вот уже и мануалы подвезли для Dual-Screen layout вёрстки #css
  4. Sep 14, 2026Забавная штука для того чтобы накидать частично интерактивный мокап. От этого же автора ес…
  5. Sep 2, 2026Оказывается Clickhouse есть в виде wasm версии, смотрел презентации 26.8 и узнал об этом.…
  6. Aug 25, 2026Со времени этого поста плагин перестал работать т.к. в хроме поменяли версию манифеста и у…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →