첫 번째 게시물!스레드의 임의 번호 생성 openmp
주요 편집 ..
나는 -fopenmp와 GCC를 사용하여 컴파일 내적을 계산하기 위해이 프로그램을 가지고있다. 문제는 그것이 생성하도록 말하는 쓰레드의 수를 생성하지 않는다는 것입니다. 한 컴퓨터에서 다른 스레드에 2 개의 스레드를 지속적으로 생성합니다.이 두 숫자는 모두 주어진 숫자가 아닙니다. chunkksize를 변경하여 원하는 스레드 수를 선택할 수있는 간접적 인 방법 인 (static, chunksize) 스케줄링을 사용하고 있습니다. 모든 컴퓨터가 동일한 실행 파일을 사용하고 있기 때문에 런타임에 내 지침을 무시하는 무언가가있는 것 같습니다. 나는 또한 프로그램에 전체로드와 동일한 청크 분할을 주면 하나의 스레드를 사용하지만 이전 스레드와 동일한 수의 스레드를 생성한다는 것을 알았습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
#pragma omp parallel shared(vector1, vector2, loadsize, vectorsize, final_sum) private(i, threadsum, threadid)
{
threadsum = 0;
threadid = omp_get_thread_num();
#pragma omp for schedule(static, loadsize)
for (i = 0; i < vectorsize; i++){
threadsum += vector1[i] * vector2[i];}
printf("thread %d reached up to index %d with a sum of %d\n", threadid, (i-1), threadsum);
#pragma omp critical
final_sum += threadsum;
}
printf("final sum: %d", final_sum);
감사합니다,
잭
내가 아는 한
고맙습니다. 생성 할 수있는 스레드 수에 대한 기본 제한이있는 것처럼 보입니다. 나는 omp_get_max_threads()를 사용하여 그것들을 검사했고 단지 2 개의 스레드로 제한된다는 것을 알았습니다. – zedjay72