774 Тем для обсуждения
6,825 Открытых обсуждений
- Association for Computing Machinery TechNews (ACM)
- Go Parallel! (Dr. Dobbs)
- HPCwire (Tabor Communications, Inc.)
- insideHPC (John West)
- Joe Duffy's Weblog (Microsoft)
- Microsoft Parallel Programming Development Center (Microsoft Germany)
- MultiCoreInfo.com
- scalability.org (Scalable Informatics)
- Software Dev Blog (Intel Germany)
- Soft Talk Blog (Intel United Kingdom)
- The Moth (Microsoft)
КРИ 2010- Есть на что посмотреть! А есть ли о чем поговорить?
Kirill Mavrodiev (Intel) (22 пост(а)) 24.05.2010 16:12
Копаясь в архивах Хабры, я наткнулся на “Отчет о КРИ – 2010 ”. Вот как раз после этого поста у меня и всплыли мои впечатления и старая народная мудрость ”Встречают по одежке - провожают по уму”. И как вы думаете, какие вопросы у меня возникли в первую очередь? Да никаких. Привыкши бывать только на научных конференциях, где обычно не встретишь девушек в бикини, я тут же был отправлен в нокаут девушкой от Mail@ru, которая предложила … . Вы только не подумайте чего плохого, она предложила мне зарегистрироваться. Но быстро “поднявшись на ноги” и осмотревшись я понял, что я на конференции и даже нашел секцию Интел. Где народ старательно пытался собрать модинговый системный блок на жидкостном охлаждении. После погуляв у меня наконец-то возник вопрос: ” Что же скрывается за красочной и полуобнаженной оберткой, которую я вижу.”. Но на этот вопрос я не нашел ответ в первый день, т.к. на те доклады, которые я хотел послушать, я не попал. Либо нужно было ждать более 3 часов, либо они уже прошли. А ждать не было времени, т.к. самому надо было готовиться к докладу. Мы же до сих пор все делаем по студенчески, все в последний вечер или ночь
. Шутка.
На второй день я сам докладывался, и как раз тогда я и получил ответ на мой вопрос. Я рассказывал о различных способах заставить или подсказать компилятору завекторизовать тот или иной блок цикла. А как известно, наиболее часто используемый участок кода (hotspot) и является циклом в несколько строчек. Презентацию в pdf формат вы можете скачать тут, а если интересуют ссылки по AVX, то тут . Так что не буду особо останавливаться на докладе.
Начиная свой доклад, я понятия не имел с какой аудиторией имею дело. Но прощупав аудиторию, я понял, что имею дело с высококвалифицированными разработчиками Игр. О разнице разработчиков Игр и вычислительных пакетов я узнал потом, но как оказалось проблемы и желания у все похожи. Все хотят мира во всем мире или хотя бы инструкцию вычисления векторного произведения, так как инструкция вычисления скалярного произведения (dot product) уже есть в SSE4. Между делом, напомню еще раз о существований опции компилятора
–vec-report[n] (n=1..5), которая поможет Вам разобраться с причинами по которым компилятору не удалось завекторизовать цикл или удалось, но частично.
Вот и подходит к концу время, выделенное мною для этого поста. Так что если тема не раскрыта, предлагаю обсудить ее. А под конец хочу поинтересоваться: Используете ли вы векторные библиотеки Intel C++ I32vec4, F32vec4, I8vec16? И если нет, то почему. Лично я не пользовался, т.к. о существовании таких библиотек даже и не знал)))
Категории: Intel Software Network
Пожалуйста, обратитесь к странице Уведомление об оптимизации для более подробной информации относительно производительности и оптимизации в программных продуктах компании Intel.
Комментарии (7)
| 24.05.2010 12:25
Kirill Mavrodiev (Intel)
| Отлично! Есть отправная точка. Расскажите каким инструментарием вы пользуетесь когда проверяете, достаточно ли хорошо компилятор понял вас и завекторизовал. Можно по другому сформулировать вопрос: Вы смотрите на disassemble или достаточно отчета компилятора о том, что цикл был успешно векторизован? |
| 24.05.2010 12:27
Kirill Mavrodiev (Intel)
| И назревает сразу следующий вопрос: Как вы повторяете цикл векторизации? Делаете ассемблерные вставки? Переписываете на примитивах(intrinsic)? Или пользуетесь прагмами компилятора? |
| 26.05.2010 00:07
spaun2002
|
Kirill Mavrodiev, Ровно в обратном порядке - сначала прагмами и смотрим что получилось, устраивает/не устраивает. Если не устраивает то смотрим что можем сделать intrinsic'ами. Если получается хорошо, то спускаемся до асма (ибо intrinsic у MS VS очень любят таскать данные из регистров в память и обратно) |
| 27.05.2010 00:30
eustas
|
Точно! Именно так: сначала жалобы компилятора + pragma (поскольку это самый быстрый путь к победе), затем игра с intrinsic. Частенько, правда, помогает PGO: волшебные +10% даёт почти всегда (это уже обсуждалось в блогах) =) |
| 27.05.2010 00:50
Kirill Mavrodiev (Intel)
|
2 spaun2002&eustas, Я все не могу выудить из вас информацию: каким образом вы понимаете на сколько хорошо компилятор завекторизовал. Пользуетесь ли вы опцией –vec-report? Недавно я поймал себя на мысли, что я рассказываю на различных тренингах и докладах практически одно и тоже о фичах компилятора, которые облегчают жизнь. Но я ни разу не слышал, что после этого этими фичами начинают пользоваться. |
| 28.05.2010 02:03
eustas
|
> сначала жалобы компилятора Это по репортам Далее глазками по асму =) |


eustas
1,965
Потому и не пользуюсь указанными библиотеками :-( ну и не знаю о их существовании тоже =)