AUTOMATIC PROGRAMS GENERATING FROM NON-PROCEDURAL SPECIFICATIONS FOR GPUS
Автоматическая генерация программ для графических процессоров по непроцедурным спецификациям

2014 Bulletin of the South Ural State University Series Computational Mathematics and Software Engineering  
Рассмотрены методы и средства автоматического построения параллельных программ для графических процессоров по непроцедурной спецификации задачи, заданной на языке Норма. Приводятся алгоритмы автоматического построения программ для графических процессоров, основанные на анализе зависимостей и выявлении внутреннего параллелизма графа потока управления, полученного по программе на языке Норма. Приведены результаты применения описанных алгоритмов для создания расчетной программы с использованием
more » ... нологии CUDA при решении задачи из области газодинамики и оценена производительность получающихся параллельных программ. Ключевые слова: суперкомпьютеры, параллельное программирование, графические процессоры, CUDA, Норма, непроцедурные спецификации. Введение В современном научном сообществе задача разработки эффективных параллельных программ имеет важное стратегическое значение. Наверное, уже не осталось ни одной области науки или отрасли промышленности, так или иначе не связанной со сферой высокопроизводительных вычислений. Несмотря на то, что параллельное программирование появилось уже достаточно давно, успешно развивается и проводится масса исследований на эту тему, вопрос «как создать эффективную параллельную программу для решения такой-то задачи» до сих пор крайне актуален для программистов и математиков. Достаточно быстрое развитие новых аппаратных возможностей для поддержки параллельных вычислений, наблюдаемое в последнее время, еще больше усложняет проблему. Например, появление массово доступных многоядерных процессоров поставило вопрос об эффективном программировании для них. Практически одновременно появились массово доступные графические ускорители (графические процессоры), и опять возник вопрос об эффективном программировании для них. Агрессивное продвижение своих решений фирмами-производителями вычислительных систем, обладающих этими возможностями, часто дезориентирует прикладных специалистов, разрабатывающих параллельные вычислительные программы, толкает их на изменение средств разработки программ, хотя ясные и достаточно убедительные аргументы в пользу таких изменений отсутствуют. Так, применение технологии CUDA для эффективного программирования для графических ускорителей в первых своих версиях являлось, фактически, программированием на уровне ассемблера, с учетом тонких особенностей аппаратуры.
doi:10.14529/cmse140101 fatcat:lk42iuluvnghdi7ckr2a3ncmhy