КРИ 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 08:16

eustas
eustasВсего баллов:
1,965
Зарегистрированный пользователь
Я обычно пишу код, компилирую и проверяю, достаточно ли хорошо компилятор понял меня и завекторизовал. Если недостаточно, то цикл повторяется, и так до полного взаимопонимания.
Потому и не пользуюсь указанными библиотеками :-( ну и не знаю о их существовании тоже =)
24.05.2010 12:25

Kirill Mavrodiev (Intel)
Kirill Mavrodiev (Intel)Всего баллов:
2,704
Зарегистрированный пользователь
Отлично! Есть отправная точка. Расскажите каким инструментарием вы пользуетесь когда проверяете, достаточно ли хорошо компилятор понял вас и завекторизовал. Можно по другому сформулировать вопрос: Вы смотрите на disassemble или достаточно отчета компилятора о том, что цикл был успешно векторизован?
24.05.2010 12:27

Kirill Mavrodiev (Intel)
Kirill Mavrodiev (Intel)Всего баллов:
2,704
Зарегистрированный пользователь
И назревает сразу следующий вопрос: Как вы повторяете цикл векторизации? Делаете ассемблерные вставки? Переписываете на примитивах(intrinsic)? Или пользуетесь прагмами компилятора?
26.05.2010 00:07

spaun2002
spaun2002Всего баллов:
280
Зарегистрированный пользователь
Kirill Mavrodiev,
Ровно в обратном порядке - сначала прагмами и смотрим что получилось, устраивает/не устраивает. Если не устраивает то смотрим что можем сделать intrinsic'ами. Если получается хорошо, то спускаемся до асма (ибо intrinsic у MS VS очень любят таскать данные из регистров в память и обратно)
27.05.2010 00:30

eustas
eustasВсего баллов:
1,965
Зарегистрированный пользователь
Точно! Именно так: сначала жалобы компилятора + pragma (поскольку это самый быстрый путь к победе), затем игра с intrinsic.

Частенько, правда, помогает PGO: волшебные +10% даёт почти всегда (это уже обсуждалось в блогах) =)
27.05.2010 00:50

Kirill Mavrodiev (Intel)
Kirill Mavrodiev (Intel)Всего баллов:
2,704
Зарегистрированный пользователь
2 spaun2002&eustas, Я все не могу выудить из вас информацию: каким образом вы понимаете на сколько хорошо компилятор завекторизовал. Пользуетесь ли вы опцией –vec-report?
Недавно я поймал себя на мысли, что я рассказываю на различных тренингах и докладах практически одно и тоже о фичах компилятора, которые облегчают жизнь. Но я ни разу не слышал, что после этого этими фичами начинают пользоваться.
28.05.2010 02:03

eustas
eustasВсего баллов:
1,965
Зарегистрированный пользователь
> сначала жалобы компилятора
Это по репортам

Далее глазками по асму =)

Обратная ссылка (0)


Оставить комментарий  

Для получения технической помощи посетите сайт службы поддержки.
Имя (обязательно)*

Электронная почта (обязательно; не будет отображено на этой странице)*

Ваш URL-адрес (необязательно)


Комментарий*