Обзор компании 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