Информация об изменениях

Сообщение Re[21]: За счет чего выстреливают языки? от 16.07.2015 17:15

Изменено 16.07.2015 17:22 BulatZiganshin

Здравствуйте, alex_public, Вы писали:

_>Только вот фокус в том, что если мы заменим приведённый алгоритм на что-то вроде a[x]=b[x]+c[x]; при том же объёме данных, то как раз получим то самое ускорение в 6 раз от векторизации. ))) Хотя великим теоретикам микроархитектур такое наверное сложно предвидеть. )))


в этом случае расклад будет совсем другой. а главное для тебя, практика — больше шансов что тупые компиляторы смогут это сами правильно векторизовать

_>Кстати, gcc и clang сейчас поддерживают гораздо более удобную векторизацию через перегрузку операторов для __attribute__ ((vector_size(32))). Но здесь все эти варианты не пройдут — нужен чистый ассемблер.


есть всякие библиотеки, посмотри в частности у агнера фога

_>Хотя в начале было бы ещё интересно посмотреть на результат icc для этого кода, вдруг он достаточно умный...


это запросто. у меня вообще одна программа (кажись тот самый crc32) давала наиболее быстрый x64 код с msvc2013, а x86 — с msvc2010

только непонятно что ты дальше с этим делать будешь? перейдёшь на этот компилятор? ручная векторизация по крайней мере означает что дальше у тебя всё будет работать независимо от компиляторов и их ключей
Re[21]: За счет чего выстреливают языки?
Здравствуйте, alex_public, Вы писали:

_>Только вот фокус в том, что если мы заменим приведённый алгоритм на что-то вроде a[x]=b[x]+c[x]; при том же объёме данных, то как раз получим то самое ускорение в 6 раз от векторизации. ))) Хотя великим теоретикам микроархитектур такое наверное сложно предвидеть. )))


в этом случае расклад будет совсем другой. а главное для тебя, практика — больше шансов что тупые компиляторы смогут это сами правильно векторизовать

_>Кстати, gcc и clang сейчас поддерживают гораздо более удобную векторизацию через перегрузку операторов для __attribute__ ((vector_size(32))). Но здесь все эти варианты не пройдут — нужен чистый ассемблер.


есть всякие библиотеки, посмотри в частности у агнера фога. и зачем тебе чистый ассемблер? лучше чем с интринсиками тут даже я не напишу

_>Хотя в начале было бы ещё интересно посмотреть на результат icc для этого кода, вдруг он достаточно умный...


это запросто. у меня вообще одна программа (кажись тот самый crc32) давала наиболее быстрый x64 код с msvc2013, а x86 — с msvc2010

только непонятно что ты дальше с этим делать будешь? перейдёшь на этот компилятор? ручная векторизация по крайней мере означает что дальше у тебя всё будет работать независимо от компиляторов и их ключей