|
|
ÀÛ¼ºÀÚ : Á¶È£¼®
|
³¯Â¥ : 2008-10-20 |
|
ºÐ·ù : °øÅë |
Á¶È¸¼ö : 3702 |
|
|
OpenMP
½ã ÄÁÆÛ·±½º °¬´Ù°¡ °¡Àå ±â¾ï¿¡ ³²´Â°Ô À̰Ŷó ¿Ã·Á³õ½À´Ï´Ù.
http://www.solanara.net ¿¡ HTML ¹öÀüÀÌ ¿Ã¶ó¿Ã°Ì´Ï´Ù.
- CPU´Â ¸ÖƼÄÚ¾î/¸ÖƼ¾²·¹µåÀÇ ÇüÅ·ΠÁøÈÇϰԵÊ
- µû¶ó¼ ¾îÇø®ÄÉÀ̼ǿ¡¼ ¸ÖƼÄÚ¾î/¸ÖƼ¾²·¹µå¸¦ È¿°úÀûÀ¸·Î »ç¿ëÇØ¾ß ÇÔ
- ¾îÇÿ¡¼ ¸ÖƼÄÚ¾î/¸ÖƼ¾²·¹µå¸¦ »ç¿ëÇÏ·Á¸é ¾²·¹µå¸¦ »ç¿ëÇØ¾ß Çϴµ¥, À̶§ °³¹ßÈ¿À²ÀÌ ¶³¾îÁü
- ±×·¡¼ ³ª¿Â °ÍÀÌ OpenMP. ¼Ö¶ó¸®½º 8 ÀÌ»óºÎÅÍ Áö¿øµÈ´Ù. ¾²·¹µå ÇÁ·Î±×·¥À» ÀÌ·¸°Ô ½±°Ô ¸¸µé ¼ö ÀÖ´Ù´Â°Ô ³î¶ø´Ù.
- ÇöÀç C, C++, Fortran ¿¡¼¸¸ Áö¿øµÊ.
- export OMP_NUM_THREADS=4 ÀÇ ¼ýÀÚ¸¦ ¹Ù²ãº¸¸é¼ ½ÇÇàÇØº¸½Ã¸é ¼º´É Â÷À̰¡ º¸Àϰ̴ϴÙ. ÄõµåÄÚ¾î¸é 4·Î ¼¼ÆÃÇÏ½Ã¸é µÇ°í, ½Ì±Û ÄÚ¾î´Â ¼º´ÉÂ÷À̰¡ ¾È ³³´Ï´Ù. ^^ ÇØº¸´Ï±ñ HyperThread ÀÌ¿ëÇØºÁµµ Á¦´ë·Î ¾ÈµÇ´Â°Å °°³×¿ä.
// ½ÇÇàÀü¿¡ [export OMP_NUM_THREADS=4] ¸í·ÉÀ» ¹Ì¸® ÁÙ°Í.
// ÄÄÆÄÀÏ ¸í·É¾î: cc -mt -O3 -o matrix -xopenmp=parallel -lmtmalloc matrix.c
windy@wl ~/source_c/openmp $ cat matrix.c
#include <stdio.h>
#include <omp.h>
#include <mtmalloc.h>
const int nrows = 100;
const int ncols = 100000;
int main(int argc, char *argv[]) {
int* array[nrows];
printf("Initializing...\n");
#pragma omp parallel for
for (int i = 0; i < nrows; i++) {
array[i] = (int*) malloc(sizeof(int) * ncols);
}
printf("Start Calc...\n");
#pragma omp parallel for
for (int i = 0; i < nrows; i++) {
printf("Thread #%d, %d Column\n", omp_get_thread_num(), i);
for (int j = 0; j < ncols; j++) {
for (int k = 0; k < nrows; k++) {
array[i][j] = array[i][k] * array[k][j];
}
}
}
}
windy@wl ~/source_c/openmp $ cc -mt -O3 -o matrix -xopenmp=parallel -lmtmalloc matrix.c
windy@wl ~/source_c/openmp $ export OMP_NUM_THREADS=6
windy@wl ~/source_c/openmp $ time ./matrix
Initializing...
Start Calc...
Thread #1, 17 Column
Thread #3, 51 Column
Thread #0, 0 Column
Thread #4, 68 Column
Thread #5, 84 Column
Thread #2, 34 Column
... Áß·« ...
Thread #1, 33 Column
Thread #0, 16 Column
real 0m4.404s
user 0m24.860s
sys 0m0.490s
windy@wl ~/source_c/openmp $ export OMP_NUM_THREADS=1
windy@wl ~/source_c/openmp $ time ./matrix
Initializing...
Start Calc...
Thread #0, 0 Column
Thread #0, 1 Column
Thread #0, 2 Column
Thread #0, 3 Column
... Áß·« ...
Thread #0, 94 Column
Thread #0, 95 Column
Thread #0, 96 Column
Thread #0, 97 Column
Thread #0, 98 Column
Thread #0, 99 Column
real 0m23.373s
user 0m23.220s
sys 0m0.100s
windy@wl ~/source_c/openmp $
- SunStudio¿¡´Â À̿ܿ¡µµ ThreadAnalyzer, PerformanceAnalyzer¶ó´Â ÅøÀ» Á¦°øÇÕ´Ï´Ù. ·¹À̽º ÄÁµð¼ÇÀ̳ª ÄÁÇø¯Æ®¸¦ Àß Àâ¾ÆÁÖ´õ±º¿ä. ÇØº¼¸¸ÇÑ °¡Ä¡´Â ÀÖÀ»µí ÇÕ´Ï´Ù.
|
|
 |