블로그 (Blog)/개발로그 (Devlogs)
MinGW 컴파일러에서 멀티코어 사용하기
티클러
2025. 2. 18. 10:43
출처: http://rajorshi.net/blog/2009/05/programming-for-multicore-introduction-openmp-gcc/
보통의 코드
for(i=0; i<n; ++i) {
for(j=0; j<n; ++j) {
temp = 0;
for(k=0; k<n; ++k) {
temp += arr1[i][k] * arr2[k][j];
}
arr3[i][j] = temp;
}
}
멀티 코어를 적용한 코드
#pragma omp parallel for private(i, j, k, temp)
for(i=0; i<n; ++i) {
for(j=0; j<n; ++j) {
temp = 0;
for(k=0; k<n; ++k) {
temp += arr1[i][k] * arr2[k][j];
}
arr3[i][j] = temp;
}
}
실행
% gcc -fopenmp matmul.c
Enter dimension ('N' for 'NxN' matrix) (100-2000): 1000
Populating array with random values...
Completed array init.
Crunching without OMP... took 23.032000 seconds.
Crunching with OMP... took 13.000000 seconds.
Enter dimension ('N' for 'NxN' matrix) (100-2000): 2000
Populating array with random values...
Completed array init.
Crunching without OMP... took 216.140000 seconds.
Crunching with OMP... took 118.641000 seconds.
대략 두배의 속도차이가 남...