===== Разработка приложений без использования шаблона ===== Параллельное обработка данных может быть реализована множеством способов. В том числе и способом разделения/объединения данных внешним приложением, что является наиболее простым в реализации т.к. позволяет использовать, по сути, последовательные приложения. При разработке параллельных приложений может использоваться несколько подходов: * автоматическое распараллеливание * распараллеливание средствами языка * распараллеливание с помошью библиотек ====Сравнение средств разработки параллельных приложений==== ^ Название^ Метод^ Возможность отладки^ Платформы^ Независимы от компилятора^ Распределённое исполнение^ | Intel Composer XE 2013 | Управляемая автоматическая параллелизация| Последовательного| Windows/*nix| нет| нет| | OpenMP | Расширение языка | Последовательного| Windows/*nix| нет| нет| | Microsoft Concurrency Runtime | Библиотека шаблонов | Последовательного| Windows| нет| нет| | Intel Threading Building Blocks| Библиотека шаблонов | Последовательного| Windows/*nix| да| нет| | Message Passing Interface | Обмен сообщениями. Синхронный запуск. | Параллельного| Windows/*nix| нет| да| | TempletSDK | Комбинированный | Последовательного и параллельного| Windows/*nix| да| да| Но у всех вышеперечисленных подходов имеются свою недостатки. * автоматической параллелизацией трудно управлять * языки высокого уровня, предоставляющие средства распараллеливания на уровне языка требют специальных компиляторов * множество различных библиотек с несовместимым интерфейсом Наиболее распространёнными инструментами являются OpenMP и MPI. Таким образом для рассмотрения выбраны: * параллельный запуск последовательного приложения * приложение разработанное с использованием OpenMP * приложение разработанное с использование MPI