Циклы
В первой версии разрабатываемого компилятора с Паскаля векторизации подвергается for циклы, в тело которых входят только операторы присваивания и вложенные операторы for. Таким образом, структура и уровень вложенности циклов могут быть произвольными, в то время, как наличие в теле любых других операторов языка (ввода/вывода, условных, goto, вызовов процедур, за исключением вызовов стандартных функций, имеющих векторный аналог) исключает попытку распараллеливания соответствующего цикла.
Следует отметить, что некоторые из ограничений, например, выход из цикла по goto носят принципиальный характер, в рамках применяемого подхода. Остальные ограничения могут быть сняты в порядке усовершенствования компилятора, без существенного изменения основного алгоритма векторизации. Вопрос о целесообразности внесения тех или иных дополнений должен решаться в процессе анализа эффективности использования данного метода в целом, и поэтому в настоящей работе способы снятия ограничений не рассматриваются.
Метки: компилятор, алгоритм векторизации, циклы