1
함수의 특정 루프에 대한 자동 벡터화를 해제하고 싶습니다. 어떻게 GCC에서이 작업을 수행 할 수 있습니까? 나는 __attribute__((optimize("no-tree-vectorize")))
으로 전체 함수에 대해 자동 벡터화를 해제 할 수 있지만 함수의 개별 루프에 대해 어떻게 수행합니까 (#pragma loop(no_vector)
을 사용할 수있는 MSVC 사용).GCC의 함수에서 특정 루프의 자동 벡터화 사용 안 함
void dot_int(int * __restrict a, int * __restrict b, int * __restrict c) {
for(int i=0; i<1024; i++) {
c[i] = a[i] + b[i];
}
//#pragma loop(no_vector) //don't vectorize this loop
for(int i=0; i<1024; i++) {
c[i] = a[i] + b[i];
}
}
왜 그렇게하고 싶은지 물어봐도 될까요? – Biffen
저는 벡터화 된 루프를 벡터화 된 파트와 벡터화되지 않은 파트로 분리하려고합니다. 지금은 내가 얻을 수있는 방법입니다. 별도의 인라인 함수를 사용해 보았지만 작동하지 않았습니다. –