Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Реализация моделей SPMD и MPMD с помощью шаблонов и mpi-программирования






 

 

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

Роджер Пенроуз (Roger Penrose), The Emperor's New Mind

 

Понятие параметризованного программирования поддерживается шаблонами. Основная идея параметризованного программирования — обеспечить максимально благоприятные условия для многократного использования ПО путем реализации его проектов в максимально возможной общей форме. Шаблоны функций поддерживают обобщенные абстракции процедур, а шаблоны классов — обобщенные абстракции данных. Обычно компьютерные программы уже представляют собой обобщенные решения некоторых конкретных проблем. Программа, которая суммирует два числа, обычно рассчитана на сложение любыхдвух чисел. Но если программа выполняет только операцию сложения, ее можно обобщить, «научив» выполнять идругие операции над двумя любыми числами. Если мы хотим получить самую общую программу, можем ли мы остановиться лишь на выполнении различных операций над двумя числами? А что если эти числа будут иметь различные типы, т.е. комплексные и вещественные? Можно заложить в разработку программы выполнение различных операций не только над любыми двумя числами, но и над значениями различных типов или классов чисел (например, значениями типа int, float, double или комплексными). Кроме того, мы хотели бы, чтобы наша программа выполняла любую бинарную операцию на любой паре чисел — главное, чтобы эта операция была легальна для этих двух чисел. Если мы реализуем такую программу, ее возможности в плане многократного использования будут просто грандиозными. Эту возможность С++-программисту предоставляют шаблоны функций и классов. Такого вида обобщения можно добиться с помощью параметризованного программирования.

Парадигма параметризованного программирования, полдерживаемал средствами С++, в сочетании с объектноориентированной парадигмой, также поддерживаемой средствами С++, обеспечивают уникальный подход к MPI-программированию. Как упоминалось в главе 1, MPI (Message Passing Interface — интерфейс передачи сооб щ ений) — это стандарт средств коммуникации, используемых при реализации программ, требующих параллелизма. MPI-интерфейс реализуется как коллекция, состоя щ ал более чем из 300 функций. МРI-функции охватывают большой диапазон: от порождения задач до барьер н ой синхронизации операций установки. Существует также С++-представление для MPI-функций, которые инкапсулируют функциональность MPI-интерфейса в наборе классов. Однако в библиотеке MPI не используются многие преимущества объектно ориентированной парадигмы. Преимуществ парамегризованного программирования в ней также нет. Поэтому, несмогря на то что MPI-интерфейс весьма важен как стандарт, его «мощности» не позволяют упростить параллельное программирование. Да, он действительно освобождает программиста от программирования сокетов и позволяет избежать многих ловушек сетевого программирования. Но этого недостаточно. Здесь может пригодиться кластерное программирование, а также програ мм ирование SMP-и МРР-приложений. Шаблонные и объектно-ориентированные средства программирования С++ могут оказаться весьма полезными для достижения этой цели. В этой главе для упрощения базовых SPMD- и MPMD-подходов вместе с МРI-программированием мы используем шаблоны и методы объектно-ориентированного программирования.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.