В ходе московского IDF корпорацией Intel был представлен полный набор средств разработки для платформ IA-32/IA-32e/IA-64/XScale

Что самое важное для работы программиста? Естественно, средства разработки программ. Правильный выбор компилятора не менее, если не более важен, чем выбор аппаратных средств для исполнения приложения. Действительно, если оптимизация компилятором позволяет поднять производительность исполняемого кода, скажем, на 30%, для заказчика это означает, что можно приобрести на треть меньше узлов кластера, или на треть меньше процессоров в многопроцессорном сервере. Для больших компьютерных установок это очень приличные деньги!

В ходе московского форума IDF корпорацией Intel был представлен полный набор средств разработки для платформ IA-32/IA-32e/IA-64/XScale. Стоит заметить, что для всех этих аппаратных платформ чаще всего наилучшей производительности позволяет достигнуть именно инструментарий Intel. Как правило, все эти средства работают с ОС Linux и Windows (в последнем случае компиляторы, а также отладчики, совместимы со средой Microsoft Visual Studio и платформы .Net).

Известно, что некоторые программисты для «повышения эффективности» в наши дни почему-то применяют ассемблер, используя команды SSE и SSE2, а теперь и SSE3. Между тем компиляторы Intel C/C++ (и аналогичные компиляторы Fortran) генерируют коды, содержащие команды такого сорта, уже давно. При этом альтернативные компиляторы обеспечивают эффективную поддержку новых процессоров, как правило, с существенным опозданием (на год — не самый худший случай).

Thread Checker помогает в диагностике очень сложных ситуаций: он обнаруживает ошибки, которые в общем случае вообще не обязаны проявиться в тесте

Как известно, бригада разработчиков Compaq Visual Fortran (CVF) влилась в ряды создателей ifc/ifort. CVF прекратил свое развитие, но его основные функции интегрированы в ifort 8.1. Важная особенность компиляторов С/C++/Fortran от Intel — поддержка стандарта OpenMP, позволяющего полуавтоматически распараллеливать программы с помощью указаний компилятору. Эта возможность была востребована ранее только на SMP-cерверах. Однако уже ныне технология Hyper-Threading, а в будущем — и многоядерные процессоры делают полезным применение OpenMP даже для настольных компьютеров.

Не менее важный инструмент, чем компиляторы, представляют собой библиотеки времени выполнения (уместно отметить, что работы и по компиляторам, и по библиотекам времени выполнения ведутся в лаборатории Intel в Нижнем Новгороде). В случае с инструментарием Intel это, во-первых, IPP (Integrated Performance Primitives) — кроссплатформенная библиотека, которая включает функции для обработки сигналов и изображений, текстовых строк, для криптографических задач, а также матрично-векторные функции. Во-вторых, это Math Kernel Library, реализующая функции линейной алгебры (BLAS, некоторые функции Lapack), быстрого преобразования Фурье и др.

Средства Intel Threading Tools включают три основных компонента и используются при разработке многопоточных приложений, например, с помощью POSIX API, Win32 API или OpenMP.

Программа ProfileView выдает суммарную статистику выполнения кодов и показывает «критический» (самый длинный по времени выполнения) путь для многопоточного приложения. Собранные данные помогают в диагностике таких ситуаций, как «борьба» за общий ресурс, «избыточная» синхронизация потоков и т. п. Более «тонкое» средство под названием TimeLine показывает поведение нитей в динамике.

Крайне полезным является третий компонент — Thread Checker. Он отслеживает обращения в оперативную память, из-за чего работа программы сильно замедляется. Однако Thread Checker помогает в диагностике очень сложных ситуаций: он обнаруживает ошибки, которые в общем случае вообще не обязаны проявиться в тесте — к примеру, как взаимные блокировки потоков, попытки одновременной работы с одним адресом памяти и др.

Поведение многопоточной программы может быть недетерминированным (в зависимости от времени наступления событий), и поэтому отладка таких программ весьма сложна. Подобно VTune, средства Threading Tools могут работать в среде Linux, а графический интерфейс доступен в Windows.

Если Threading Tools ориентированы на распараллеливание в компьютерах с общим полем памяти (например, с двумя физическими процессорами или с двумя логическими процессорами при одном физическом — в случае применения Hyper-Threading), то Сluster Tools предназначены для работы с кластерами на платформах Linux/Unix при использовании средств распараллеливания MPI (MPICH, LAM MPI). Cluster Tools включают два компонента — Trace Analyzer и Trace Collector, которые являются развитием линии известных MPI-отладчиков Vampir и VampirTrace соответственно (ранее это ПО разрабатывались вне Intel, но с недавних пор являются ее собственностью).

Поделитесь материалом с коллегами и друзьями