Как стать автором
Обновить
28
0
Кирилл Рогожин @krogozh

Менеджер проекта

Отправить сообщение
Согласен, это было бы интересно. Но здесь нет единого рецепта, иначе бы я его может и описал. Выбор «MPI или OpenMP», и особенно «сколько ранков и сколько потоков» пускать, зависит от приложения, и по-хорошему надо прогнать сотню гибридных приложений, и вывести статистику результатов. Это отдельная большая работа, за рамками этого поста.
Вообще стеки в модулях должны работать с типом анализа Advanced Hotspots и детализацией «Hotspots, stacks and context switches». Вы переключали режим стека? По умолчанию стоит «user functions+1», глубже одного уровня в системные модули не спускается. Нужен «user/system functions» для полных стеков

image

Если проблема не в этом, пишите в личку — надо смотреть результаты и разбираться.
Добрый день, уважаемые коллеги.
Вы совершенно правы – обсуждаемая здесь статья была опубликована без рецензии со стороны разработчиков библиотеки IPP ( Intel® Integrative Primitives ) и статья действительно содержит явные ошибки допущенные авторами.
Мы работаем над исправлением и обновлением данной публикации и сообщим здесь на форуме когда это обновление произойдет.
Мы также подумаем как обновить соответствующие части документации и сделаем это в одном из будущих обновлений.

С Уважением, Intel® IPP Team.
Странно, подобных проблем с update 12 вроде не было. Напишите в саппорт — разберёмся.
Спасибо Анатолий! Да, отдельного маленького SP1, который бы можно было поставить сверху студии, нет. Версия SP1 — это просто инкрементальная версия студии, такая же? как update 1, 2 и т.д., и обновляется она так же. Единственное, что можно обнолять отельные продукты — IPS XE 2013 SP1 просто объединяет самые свежие версии. Например, VTune Amplifier XE 2013 update 12.
Да, порядок цен такой. Увы, политика продаж такова.
Идея и модель использования те же — дополнительная карточка с кучей ядер. Xeon Phi — это x86 архитектура, и портировать x86 программы проще — по-минимому надо просто перекомпилировать, языки программирования те же — С/С++, Fortran. На CUDA надо код переписывать, если он был для CPU.
Да, с GAP exe не создаётся. GAP (Guided Auto Parallelism) просто выдаёт советы о том, что бы можно было распараллелить в коде.
Advisor занимается моделированием параллельного исполнения. Разметку он требует для того, чтобы понять, какой кусочек кода пользователь хочет смоделировать и каким образом (цикл, таски и т.п.). Задача Advisor-а — дать вам возможность решить, стоит вообще распараллеливать этот цикл или нет, и какай потенциальный прирост производительности можно ожидать. Конструкция OpenMP приведена для примера — за деталями в документацию OpenMP.
Совершенно верно, можно. А ещё недавно тут стало можно запросить бесплатную лицензию для обучения студентов — простую некоммерческую можно использовать лишь индивидуально.
Про GPL: мало кто хочет делать код публичным, GPL паразитивен
TBB распространяется не по простой GPL, а по лицензии
GPLv2 and for the runtime exception
Принципиальная разница в том, что код своего приложения распространять не обязательно, и можно делать коммерческие приложения с бесплатной TBB. Какие-то нюансы есть, но в общем случае можно.
Правильно, лицензии Intel® TBB нужны для разработчиков — сколько их, столько и лицензий (принцип как с компилятором). Количество конечных пользователей приложения с TBB не ограничивается лицензией.
Ok. Из предложенных в википедии вариантов решения, мой ближе всего к «решению на основе монитора». И наверное да, в предложенной реализации голодание будет возможно. Не должны, но могут.
Если философ захватил палочки и есть, то после этого он обязательно думает, не пытаясь их захватывать. В это время есть будут соседи — умереть от голода они не должны.
К этому примеру надо относиться не как к упрощённому «use-case»-y, а как к синтетическому примеру для демонстрации функционала join_node и динамической структуры графа без явного входа и выхода. И уж тем более не как к демонстрации всей TBB как таковой — о ней много чего можно написать, функционала и способов применения множество. Если вспомнили про Гаусса, может будет ближе этот пример (на английском).
Здесь дело скорее в реализации не queue_node, а join_node, и его взаимодействии с портами. Он пытается резервировать палочки на обоих входах. Если хоть одна не резервируется, все резервации снимаются. Только если сразу обе доступны, они извлекаются из очереди. На готовность соседа это конечно повлияет — если палочка зарезервирована, он её зарезервировать уже не сможет. queue_node просто предоставляет возможность извлечь объект из очереди, когда потребуется.
Для профилировки производительности и поиска проблем с перенагрузкой используйте Intel® VTune Amplifier XE. На хабре про него много писал vtsymbal, правда больше про микроархитектурный анализ, вам может потребоваться более высокоуровневый. На русском есть несколько старых и не очень вебинаров.
Это сильно зависит от самой программы. Анализ ошибок памяти замедляет программу меньше — от 2х до 80х. Анализ проблем взаимодействия потоков — от 10х до 160х. Такой большой разлёт оценок демонстрирует степень зависимости от структуры программы. 80х и 160х — исключительные случаи.
Если работает 100 потоков и они постоянно обмениваются данными, замедление будет куда сильнее, чем если их 8 и обмениваются иногда.
Для Linux и gdb сделано — можете скачать trial и попробовать, как оно выглядит. Там может потребоваться использование target remote в gdb. Насчёт лицензий да, для разных ОС нужны отдельные лицензии.
1

Информация

В рейтинге
Не участвует
Откуда
Нижний Новгород, Нижегородская обл., Россия
Дата рождения
Зарегистрирован
Активность