Обзор компании Intel в рамках параллельного программирования

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

ля Fortran был G77, который поддерживал лишь FORTRAN 77. В новых версиях G77 был исключён в пользу нового GFortran frontend который поддерживает Fortran 95.

Также существуют front-endы для Pascal, D, Модула-2, Modula-3, Mercury, VHDL и PL/I.

Архитектуры

Список поддерживаемых GCC (для версии 4.3) процессоров включает в себя:

Alpha,ARM,Atmel AVR, x86,IA-64,m68k,MIPS,MSP430,PA-RISC,PDP-11,PowerPC,SuperH,VAX, Inteli960, MMIX, AVR32.

Структура

Внешний интерфейс GCC является стандартом для компиляторов на платформе UNIX. Пользователь вызывает управляющую программу, которая называется gcc. Она интерпретирует аргументы командной строки, определяет и запускает для каждого входного файла свои компиляторы нужного языка, запускает, если необходимо, ассемблер и компоновщик.

Компилятор каждого языка является отдельной программой, которая получает исходный текст и порождает вывод на языке ассемблера. Все компиляторы имеют общую внутреннюю структуру: front end, который производит синтаксический разбор и порождает абстрактное синтаксическое дерево, и back end, который конвертирует дерево в Register Transfer Language (RTL), выполняет различные оптимизации, затем порождает программу на языке ассемблера, используя архитектурно-зависимое сопоставление с образцом.почти полностью написан на Си, хотя значительная часть front-end для Ады написана на Ада.

Отладка программ, скомпилированных с помощью GCC

Главным инструментом для отладки программ, скомпилированных с помощью GCC, является GNU Debugger (gdb). Существуют также узкоспециализированные средства для отладки:

Valgrind для поиска утечек памяти

GNU Profiler (gprof) используется для того, чтобы определить, сколько времени уходит на выполнение той или иной части программы, как часто вызываются те или иные процедуры; для использования gprof необходимо компилировать программу со специальными опциями для включения профилирования.

- gcov для анализа покрытия

 

Intel Threading Building Blocks (TBB)

 

Intel Threading Building Blocks (также известная как TBB) - кроссплатформенная библиотека для параллельного программирования, реализованная на языке С++

Основные преимущества программы (рассматривается последняя версия TBB 3.0):

Повышенная продуктивность работы

В библиотеке Intel TBB используются абстракции на базе задач, упрощающие получение масштабируемых и надежных приложений с помощью нескольких строк кода. Алгоритмы на базе задач, контейнеры и примитивы синхронизации упрощают разработку параллельных приложений.

Слева показано сравнение с аналогичными функциями потоков Windows*, требующее значительно большее количество кода для правильной параллелизации программы двухмерной трассировки лучей Tachyon. Разработчики приложений для Linux* и Mac OS X* могут ожидать сходные результаты.

Универсальность

В библиотеку Intel TBB входят компоненты, упрощающие и ускоряющие разработку масштабируемых высокопроизводительных параллельных приложений. В частности, в нее включены параллельные алгоритмы, контейнеры, планы задач, выделение масштабируемой памяти и примитивы синхронизации. Кроме того, библиотека времени исполнения обеспечивает оптимальный размер пула потоков, дробление задач и планирование для оптимизации производительности, балансировку нагрузки посредством передачи задач, а также эффективное использование памяти и кэш-памяти. Текст, выделенный в таблице курсивом, означает "новая функция"

Приложения, готовые к потребностям будущего

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

Отличная масштабируемость и увеличенная производительность при использовании библиотеки Intel TBB вместо последовательной реализации. Разработчики приложений для Windows и Mac OS X могут ожидать сходных результатов.

Переносимость

Библиотека Intel TBB протестирована на совместимость и поддерживается при использовании на платформах Windows*, Linux* и Mac OS*. Также она поддерживает системы FreeBSD*, IA Solaris*, XBox* 360 и PowerPC через сообщество разработчиков ПО с открытым исходным кодом. Организации могут расширять свою базу клиентов, используя готовое открытое решение для параллелизма, поддерживающее разнообразные платформы.

Конкурс Acceler8 2011

 

В ноябре 2011 года компания Intel проводила конкурс параллельного программирования Acceler8 ориентированная на студентов и аспирантов ВУЗов.

Коротко о задаче

Дана двумерная матрица значений, нужно найти в ней прямоугольную подматрицу с максимальной суммой элементов в ней среди всех подматриц.

Очевидно, что если все элементы матрицы положительны, то ответом является вся матрица. В связи с этим, чтобы задача была задачей, во входной матрице должны быть как положительные, так и нулевые и отрицательные элементы. Чтобы не читать матрицу из файла, вам нужно будет ее сгенерировать псевдослучайным алгоритмом:

Генерация матрицы

Каждый элемент прямоугольной матрицы размером N столбцов и M строк (индексация строк и столбцов начинается с нуля) должен генерироваться по следующему алгоритму:

 

int seed = seed0;_t dstSize = M * N;long sum = 0;mean, remainder;

/* initialize the destination array */(i = 0; i < dstSize; i += 1)

{= PRNG(seed, a, b, m);[i] = seed;

 

/* make a sum of all elements */+= seed;

}

/* calculate the mean value. Avoid float logic when making rounding. */= (int) (sum / (long long) dstSize); /* updated line */= (int) (sum % (long long) dstSize); /* updated line */+= (remainde