Блог пользователя sslotin

Автор sslotin, 5 лет назад, По-русски

https://algorithmica.org/ru/sse

Статья про то, как оптимизировать циклы с помощью SIMD-инструкций и ускорять в ~10 раз достаточно простые программы.

Хотя комментарии на емаксе имеют свой шарм, от секции обсуждения на Алгоритмике было решено отказаться в пользу блогов на CF: этот пост можно считать основным местом для коментов.

  • Проголосовать: нравится
  • +120
  • Проголосовать: не нравится

»
5 лет назад, # |
  Проголосовать: нравится +25 Проголосовать: не нравится

Спасибо за блог. Было очень познавательно. Кстати я впервые вижу этот алгоритмистическй сайт. Очень понравился. Продолжайте в том же духе!

»
5 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

#pragma GCC optimize("O3")

А разве самый крутой не Ofast?

  • »
    »
    5 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +10 Проголосовать: не нравится

    Disregard strict standards compliance. -Ofast enables all -O3 optimizations. It also enables optimizations that are not valid for all standard-compliant programs. It turns on -ffast-math and the Fortran-specific -fstack-arrays, unless -fmax-stack-var-size is specified, and -fno-protect-parens.

    Основная разница только в вычислениях с плавающей точкой, а именно -ffast-math позволяет компилятору игнорировать nan-ы, inf-ы и прочие подобные штуки, и -fno-protect-parens позволяет менять порядок вычислений в выражениях, игнорируя в том числе даже скобки.

»
5 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Я тут захотел посмотреть, как люди используют SSE на CF, и погрепал какую-то часть посылок по подстроке "_mm". Вот что получилось: https://gist.github.com/sslotin/de9027f18f8794e95261a2586ab9ad2d

Из 1262910 посылок получилось 98 (и некоторые из них просто разные решения одной и той же задачи). Как по submissionID быстро получить ссылку на саму задачу или автора я не знаю.

(Исходники взял отсюда: https://www.kaggle.com/agrigorev/codeforces-code)