Здесь происходит несколько вещей.Во-первых, правильное предложение - copyin
(без подчеркивания).Во-вторых, поскольку вы копируете только входные значения в область, любые изменения, сделанные в области данных, не возвращаются в ЦП, поэтому, если вы не выполняете это в системе с общей памятью, например, работающей на многоядерном ЦПтогда значение a
в вашем операторе printf
будет таким, что этот цикл никогда не выполнялся.Чтобы получить результаты из области данных, вместо этого вам понадобится предложение copy
.Это информирует компилятор скопировать входные значения в область и скопировать выходные значения из области.
Поскольку вы получаете 11, ясно, что цикл где-то запускается.Какой компилятор вы используете и какие флаги?Либо вы на самом деле не строите с включенным OpenACC, либо вы используете цель с общей памятью, а ваш учитель - нет.