이 프로그램의 성능을 시험해보기 전에 예를 들어 보았 기 때문에 오랫동안 서명하지 않았지만 이제는 병렬 처리하려고 할 때 카운터에 서명해야합니다.서명 된 long long을 OpenMP에서 반복 변수로 사용할 수 있습니까?
하지만 카운터의 데이터 유형이 long long이며 unsigned long long으로 서명 되었기 때문에 결과가 단지 1의 카운터를 리턴하는지 확신 할 수 없습니다. 또는 Xeon Phi가 포함 된 OpenMP와 관련이있는 경우
OpenMP tutorial website에서 "for의 반복 변수는 부호있는 정수 변수 유형이어야하며 OpenMP 3.0에서는 부호없는 정수 변수 유형, 포인터 유형 또는 상수 시간 일 수 있습니다 무작위 액세스 반복자 유형. " http://pastebin.com/ESU1yXYT
에서
[...]
#include <sys/types.h>
#include <omp.h>
[...]
size_t i, j;
signed long long counter = 0;
[...]
if((ch1^ch2) == 0)
{
counter = 1;
}
#pragma omp parallel for private(counter)
for(i = 1; i < smallest; i++)
{
ch1 = getc(fp1);
ch2 = getc(fp2);
if((ch1^ch2) == 0)
{
counter++;
}
}
[...]
전체 코드는 내가 비율을 찾기 위해 몇 가지 데이터 형식을 캐스팅해야합니까? 아니면 아마도 OpenMP 문제일까요?