단순하게 for문 나눠서 돌릴때
쓰레드 순서대로 실행해야 할 경우의 보조 지시어(그런데 이렇게 하면 병렬처리를 안하고 single로 순서대로 하는거 아닌가?)
보조지시어 schedule을 이용한 for문의 분배방식
atomic은 단순하게 변수에 값 할당 하는 정도의 단순한 lock 방법을 위한 아토믹 연산을 지원하며
critical은 critical section(OS 용어)을 지원하기 위해 함수나 비교, 할당등을 할 수 있는 확장된 지시어.
runtime 함수로 현재 실행중인 쓰레드의 번호(만약 쓰레드가 4개라면 0~3번 사이의)를 알려준다.
---
2013.09.20
#pragma omp parallel
#pragma omp for
#pragma omp parallel for 혹은 |
쓰레드 순서대로 실행해야 할 경우의 보조 지시어(그런데 이렇게 하면 병렬처리를 안하고 single로 순서대로 하는거 아닌가?)
#pragma omp parallel for ordered #pragma omp ordered |
보조지시어 schedule을 이용한 for문의 분배방식
#pragma omp parallel for schedule(static)
#pragma omp parallel for schedule(dynamic)
#pragma omp parallel for schedule(guided)
#pragma omp parallel for schedule(runtime)
|
parallel 구문에서 마스터 쓰레드만 돌릴경우 single을 사용함(물론 실행도 1번만)
#pragma omp parallel #pragma omp single |
멀티 쓰레드로 여러개의 작업(함수단위) 돌릴경우 sections 안에 함수별로 section을 사용함
#pragma omp parallel #pragma omp sections
#pragma omp section
|
쓰레드 외부의 변수들을 복제해서 사용하도록 하는 private 보조 지시어(쓰레드 별로 복제되어 사용됨)
#pragma omp parallel private(variable) |
atomic은 단순하게 변수에 값 할당 하는 정도의 단순한 lock 방법을 위한 아토믹 연산을 지원하며
critical은 critical section(OS 용어)을 지원하기 위해 함수나 비교, 할당등을 할 수 있는 확장된 지시어.
#pragma omp atomic
#pragma omp critical
|
runtime 함수로 현재 실행중인 쓰레드의 번호(만약 쓰레드가 4개라면 0~3번 사이의)를 알려준다.
omp_get_thread_num() |
---
2013.09.20
#pragma omp parallel
#pragma omp for
#pragma omp sections
#pragma omp single
#pragma omp task
#pragma omp atomic
#pragma omp critical
#pragma omp master
#pragma omp barrier
#pragma omp taskwait
#pragma omp flush
#pragma omp ordered
#pragma omp threadprivate
#pragma omp parallel
if
num_threads
default(shared|none)
private
firstprivate
lastprivate
shared
copyin
reduction
#pragma omp for
private
firstprivate
lastprivate
reduction
schedule
collapse
ordered
nowait
#pragma omp sections
private
firstprivate
lastprivate
reduction
schedule
collapse
ordered
nowait
#pragma omp single
private
firstprivate
copyprivate
nowait
#pragma omp task // omp 3.0 above
if
united
default(shared|none)
private
firstprivate
shared
'Programming > openMP' 카테고리의 다른 글
openmp 제한자(?) (0) | 2013.09.20 |
---|---|
openMP runtime 함수 및 환경변수 (0) | 2013.03.16 |
visual studio express 2008에서는 openMP 공식 지원안해! (0) | 2013.03.16 |
TBB - Threading Building Blocks by intel (0) | 2013.01.08 |
openMP 문서들 (0) | 2012.06.18 |