КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Распараллеливание независимых вычислений
Применение графических процессоров на примерах сложения матриц и решения дифференциальных уравнений Области использования графических процессоров Необходимое программное обеспечение Для исполнения примеров, приведённых в следующих разделах, на графических процессорах SM3 необходимо следующее программное и аппаратное обеспечение: · Видеокарта с поддержкой Shader Model 3.0; · Драйвер с поддержкой соответствующего GPU; · Microsoft Windows XP SP2 (или новее); · Microsoft DirectX 9.0c (или новее); · Microsoft.NET Framework 2.0 (или новее); · Microsoft XNA Game Studio Express 2.0; Средства разработки: · Текстовый редактор для написания шейдеров на языке HLSL (к сожалению, специализированных сред для написания программ на HLSL нет); · Microsoft Visual C# 2005 Express или Microsoft Visual Studio 2005 для написания оболочки на C#. На графических процессорах могут эффективно решаться очень многие задачи, в которых много вычислений, но сравнительно мало условий и коммуникаций. Среди областей применения графических процессоров: · Матричные преобразования; · Молекулярная динамика; · Астрофизические расчёты; · Глобальная оптимизация; · Дискретное преобразование Фурье (в частности, обработка сигналов в реальном времени); · Кодирование видео; · Визуализация (томография, нанотехнологии); · Нейронные сети; · Биофизические расчёты. Очень наглядным примером вычислений, распараллеливаемых по данным, является операция сложения векторов (или матриц). В этом случае однотипные данные, – компоненты векторов, - складываются независимо друг от друга, а результатом сложения является вектор, такой же, как векторы с исходными данными: . Центральный процессор персонального компьютера (CPU) решает эту задачу последовательным сложением всех компонент векторов и :
. Для упрощения примера, мы не учитываем здесь то, что современные CPU являются суперскалярными, то есть – могут одновременно складывать несколько пар чисел, поскольку большого количества параллельных потоков данных они не обеспечивают. Без распараллеливания алгоритм программы для CPU имеет вид цикла: Рис. 5.1. Последовательное сложение векторов С другой стороны, при наличии N процессоров, работающих параллельно, эту же задачу можно было бы решить в N раз быстрее, сложив на каждом из процессоров по одной из компонент векторов: При меньшем, чем N количестве параллельных процессоров m < N сложение векторов всё равно возможно выполнить параллельно. Для этого можно разбить векторы на блоки по m чисел (что эквивалентно преобразованию векторов в двухмерные матрицы): . Представление соответствует сложению каждой из строк на отдельном процессоре: Принцип распараллеливания однотипных и независимых вычислений - как раз и реализован на графических процессорах. Эти процессоры включают в себя десятки параллельных графических конвейеров, специально предназначенных для параллельного проведения одинаковых операций над числами с плавающей точкой. В примере - ко всем элементам матриц применяется одна и та же операция сложения. Это – пример принципа параллельного программирования называют SIMD (Single Instruction Multiple Data, одна инструкция для множества данных, см. раздел 4.3.4). Помимо собственно распараллеливания, этот принцип вычислений имеет и то преимущество, что позволяет избавиться от операций изменения управляющих переменных цикла (i в примере выше), проверки условия завершения цикла и выхода за границы массивов. Частичное разворачивание циклов (например, обработка в теле цикла сразу 4-х элементов) используется и для оптимизации вычислений на центральных процессорах, в частности - позволяет компилятору задействовать расширенные наборы SIMD команд типа SSE и 3dNow!. Всё же, на графических процессорах принцип SIMD реализован в гораздо более полной мере.
Дата добавления: 2014-12-07; Просмотров: 492; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |