Технологии автоматического дедуктивного распараллеливания в языке Planning C - Владимир Пекунов

Технологии автоматического дедуктивного распараллеливания в языке Planning C

Страниц

45

Год

Данная работа основана на исследовании и разработке новых подходов к автоматическому распараллеливанию C-программ. Мы обращаем внимание на применение средств построения языковых расширений языка Planning C 2.0.

В рамках исследования были предложены уникальные механизмы реализации расширений, и доказана их реализуемость. Эти механизмы помогут упростить процесс распараллеливания программ и сделать его более эффективным.

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

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

В итоге, данная работа предлагает новые подходы и технологии для автоматического распараллеливания C-программ, которые могут значительно улучшить производительность и эффективность программирования. Наши исследования и разработки имеют конкретные практические применения и могут быть полезными для специалистов в области программирования и компьютерной архитектуры.

Читать бесплатно онлайн Технологии автоматического дедуктивного распараллеливания в языке Planning C - Владимир Пекунов

© Владимир Викторович Пекунов, 2022


ISBN 978-5-0056-3553-2

Создано в интеллектуальной издательской системе Ridero

Введение

В настоящее время активно развиваются технологии, связанные с решением ряда интеллектуальных задач, подразумевающих обработку больших массивов структурированных или слабо структурированных данных с применением более или менее трудоемких логических [12], символьных [11] или численных алгоритмов (см., например, [2, 14, 21]. Это, в первую очередь, технологии интеллектуальной обработки данных, к которым относятся разнообразные алгоритмы поиска логических и/или математических формальных закономерностей в данных (Big Data/Data Mining [7, 22]): деревья решения, машины поддерживающих векторов [22], нейронные сети [22, 24], МГУА [7] и иные интерполяторы и экстраполяторы [11]. Во вторую очередь, назовем элементы технологий поддержки диалога с пользователем на естественном языке (см., например, [22]). Далее назовем ряд технологий математического моделирования различных процессов, например, в сплошных средах: моделирования образования и распространения загрязнений [10, 13, 14, 35], прогнозирования погоды [41], прогнозирования изменений климата [6, 41], моделирования обтекания различных технических объектов [28], прочностные и иные трудоемкие расчеты, связанные с моделированием (см., например, [5]).

Решение (даже частичное) подавляющего большинства перечисленных выше проблем подразумевает выполнение огромных объемов расчетов. Неудивительно, что для осуществления подобных расчетов наиболее часто применяются параллельные или распределенные системы [4, 27], способные их выполнить за разумное время. Программирование таких систем, особенно в случае нетривиальных алгоритмов, является достаточно сложной задачей, к решению которой часто привлекаются специалисты в области параллельных/распределенных вычислений. Однако и в этом случае разработка и реализация параллельных алгоритмов занимает достаточно большое количество времени и требует тщательной отладки.

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

Это, несомненно, дает определенный эффект, однако следует заметить, что полноценная эффективная загрузка вычислительных ресурсов современной ЭВМ, в общем случае, все-таки требует, как минимум, организации многопоточности в разрабатываемых программах, а в идеальном случае – тщательного распараллеливания применяемых алгоритмов, что также требует специальных знаний в области параллельных вычислений.

Логичным является вывод о том, что эффективное применение вычислительных ресурсов (как для решения задач высокой сложности, так и для более рядовых задач) в настоящее время в большей или меньшей степени требует распараллеливания вычислений, подразумевающего наличие специальных знаний в этой области. Однако существенная часть ученых-исследователей и многие рядовые программисты не обладают ни такими знаниями, ни соответствующими навыками алгоритмизации. Отсюда можно заключить, что