2014-11-17 7 views
0

У меня есть очень простой Fortran цикл, который устанавливает некоторые элементы массива в 0.0, как показано ниже:Компилятор неспособен векторизовать внутренний цикл

!dir$ loop count min(128) 
arr(1:max(start,someVar)) = 0.0 

Когда я скомпилировать файл с ifort, то векторизации отчет говорит:

file.f90(60): (col. 5) remark: LOOP WAS VECTORIZED 
file.f90(60): (col. 5) remark: loop was not vectorized: not inner loop 

Я попытался с помощью !dir$ simd перед циклом, и векторным. Но мой вопрос: почему wasn ' t он векторизации или преобразован в memcpy или memset? Это, очевидно, внутренняя петля.

ответ

0

После обновления до ifort 15 в отчете по оптимизации указано, что линия была фактически преобразована в memset. Я думаю, что новый memset-код пересекает массив, «memset'-ing chunks» за раз.

Смежные вопросы