Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

Нажав на кнопку "Отправить", Я даю своё согласие на автоматизированную обработку указанной информации, распространяющейся на осуществление всех действий с ней, включая сбор, передачу по сетям связи общего назначения, накопление, хранение, обновление, изменение, использование, обезличивание, блокирование, уничтожение и обработку посредством внесения в электронную базу данных, систематизации, включения в списки и отчетные формы.


Параллельные вычисления (принципы организации, аппаратное обеспечение).

Параллельные вычисления (принципы организации, аппаратное обеспечение).

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

Параллелизм на уровне команд, в свою очередь, определяет производительность процессора. Современные кристаллы процессоров содержат несколько ядер, а в типовых серверах устанавливается несколько процессоров. Стремительно развивается использование серверных кластеров и систем распределенных вычислений. Одним словом, параллельные

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

Аппаратное обеспечение, поддерживающие параллельные вычисления постоянно совершенствуется. Разработчики суперкомпьютеров создают высокопроизводительные системы путем объединения отдельных вычислительных систем. Можно выделить две основные архитектуры таких систем - векторно-конвейерные ПК с распределенной памятью и векторно-конвейерные ПК с общей памятью. Каждый процессорный элемент векторно-конвейерной ПК имеет собственные потоки команд и потоки данных. Термин "ПК с совместно используемой памятью" используется применительно к системе, процессорные элементы которой используют единое адресное пространство. Если же каждому процессорному элементу соответствует отдельная область памяти, с которой он общается по сети, речь идет о системе с распределенной памятью.

Обе архитектуры имеют определенные достоинства, а выбор между ними зависит от поставленной задачи, которую необходимо решить. Благодаря развитию многоядерных процессоров для персональных компьютеров и многопроцессорных систем, в ближайшие годы ожидается рост количества систем с совместно используемой памятью. Даже в карманные ПК и телефоны уже устанавливаются многоядерные процессоры, а программисты получили возможность работы с этими платформами, оптимизированными для параллельных вычислений. Какие преимущества дают разработчикам ПО системы параллельных вычислений? Здесь необходимо рассмотреть два аспекта, зависящие от конкретных потребностей. Во-первых, это возможность выполнения нескольких задач за меньшее время, то есть повышенная производительность системы. Объясняется она тем, что каждый процессор занимается обработкой отдельной задачи. В таком случае разработчику остается проконтролировать работу планировщика заданий (обычно уже встроенного в ОС), который занимается распределением нагрузки между процессорами. Во-вторых, это выполнение отдельных задач за меньшее время. Например, современные условия коммерческой деятельности обязывают иметь возможность быстрых вычислений для контроля экономической ситуации в режиме реального времени. Таким образом, решение конкретной задачи должно проводиться за меньшее время. Использование параллелизма в рамках единой задачи с целью исполнения ее за меньшее время называют "параллельным программированием".

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

Разработчики ПО для высокопроизводительных вычислительных систем обычно имеют многолетний опыт параллельного программирования. Им хорошо знакомы параллельные алгоритмы, параллельное программирование прикладных программных интерфейсов, а также инструменты для разработчиков.

В свое время, NVIDIA и ATI запустило в массы технологию CUDА (Compute Unified Device Architecture) - технологию позволяющую использовать для вычислительных задач мощь графического ускорителя. На графических ускорителях с массивно-многопоточной архитектурой счет параллельных потоков идет на тысячи. В связи с этим, параллельное программирование, раньше используемое в небольшом числе дорогих суперпроектов, сегодня становится актуальным для прикладных программистов.

Например, предложенная компанией Nvidia технология CUDA заметно облегчает написание GPGPU-приложений. Она не использует графических API и свободна от ограничений, свойственных этим API. Данная технология предназначена для разработки приложений для массивно-параллельных вычислительных устройств. На сегодняшний момент поддерживаемыми устройствами являются все GPU компании Nvidia, начиная с серии GeForce8, а также специализированные для решения расчетных задач GPU семейства Tesla. Основными преимуществами технологии CUDA являются ее простота — все программы пишутся на «расширенном» языке С, наличие хорошей документации, набор готовых инструментов, включающих профайлер, набор готовых библиотек, кроссплатформенность (поддерживаются Microsoft Windows, Linux и Mac OS X).


Лицензия