나는 C (2 차원 푸 아송 솔버)로 프로그램을 작성하고 open 루프를 사용하여 큰 for 루프를 가속화했다. 내가 관찰 한 것은 OpenMP 병렬 블록 내부에서 #pragma always vector 지시문을 포함하는 경우에도 for 루프가 벡터화되지 않는다는 것입니다. 컴파일을 위해 나는 pathscale 컴파일러를 사용하고있다.OpenMP에서 루프의 벡터화
내가 벡터화하고자하는 코드는 다음과 같습니다
#pragma omp parallel shared(in, out, lambda,dim,C) private(k)
{
#pragma omp for schedule(guided,dim/nthreads) nowait
for(k = 0;k < dim; k++){
in[k] = C*out[k]*lambda[k];
}
}
는 곳을, 람다와의 이중 정밀도 배열입니다.
하지만 난 항상을 벡터 의 #pragma을 포함 할 경우에도, 어떤 컴파일러 답변하는 것은 : 당신은 이것에 대한 어떤 해결 방법이있는 경우
warning: ignoring #pragma always vector
알고 계십니까?
감사합니다.
나는 그 루프를 벡터화/병렬 처리하는 것으로부터 많은 것을 얻지 못할 것이라고 생각합니다. 많은 메모리 액세스를위한 작업이 거의 없습니다. – Mysticial
@ 신비로운, 이것은 경연을위한 입장의 일부분이고 도움 받았다. :) – Konstantinos