ИСТИНА |
Войти в систему Регистрация |
|
ИСТИНА ЦЭМИ РАН |
||
Распараллеливание уже написанных последовательных программ часто требует значительных преобразований, так как в большинстве случаев данные программы хорошо оптимизированы для последовательного выполнения. Так как основной ресурс параллелизма содержится в циклах, то необходимо обеспечить в первую очередь их преобразование для устранения зависимостей и конфликтов, мешающих их анализу и распараллеливанию. К таким преобразованиям можно отнести: внос и вынос инварианта, объединение циклов в тесно-вложенные, расширение и сужение приватизируемых переменных, разбиение и слияние циклов и др. В данной статье будут рассмотрены два основных преобразования – расширение приватизируемых переменных, которое позволит устранить зависимость тесно-вложенного гнезда, и разделение циклов, которое позволит увеличить количество распараллеливаемых тесно-вложенных циклов. Полученные преобразования были проверены на некоторых программах NAS Parallel Benchmarks.