본문 바로가기

Study/서울대 천둥을 이용한 병렬처리

Swaption HJM.cpp 150 : sqrt 함수 ( http://blog.daum.net/hongjuny72/4 ) 더보기
필기 work item - PE(processing Element)-> get_global_id(0)-> get_local_id(0) work grup - CU ( compute Unit )- size = local work size(lws) -> 3차원까지-> 몇 개의 워크 아이템을 가지고 있나-> get_local_size(0) -> 3차원까지 가능 - get_group_id(0)- get_num_groups(0) index space =NDRange=> size -> global_work_size(gws)-> (k)get_global_size(0) wrap - GPU가 한 번에 실행하는 work item 개수 더보기
스터디문제 4 2013.10 02 수요일 스터디 출제자 민호1. 컴파일러를 통해 코드내 특정영역을 멀티 쓰레드로 돌아가게 하는 것은 무엇인가? 2.~4 까지의 문제는 openMP 의 기초 API 에 관한 설명이다.2.뒤에 이어오는 중괄호로 묶인 영역을 멀티 쓰레드로 수행하며 기본값으로 OS가 인식하는코어 개수만큼 쓰레드를 생성하는 것은? 3parallel하게 수행되는 영역에서 몇개의 쓰레드를 사용할것인지 설정하는 것은? 4.open MP의 구성은 어떻게 되어있는가? 5.다음 OPENMP 소스 예제에서 빠진 부분은#includeint main{ ( )int tid = omp_get_thread_num()printf("%d : Hello, world!\n" , tid); return 0;} 더보기
스터디문제3 1. worksharing construct의 종류를 나열하시오- #pragma omp ( for )- #pragma omp ( sections )- #pragma omp ( single ) 2.속칭 숨겨진 베리어(barrier)를 없애기 위한 clause는 ( nowait ) 이라 한다. 이는 worksharing construct 의 뒤에 붙는다. 3.다음은 openmp의 동기화 방법들이다. 빈칸을 채우라.- 상호배제 : #pragma omp critical- 배리어 : #pragma omp barrier- ( atomic ) 명령 : #pragma omp barrier- 기타 : #pragma omp ordered 4. 다음과 같을때 #pragma omp parallel forfor(i = 0; i 더보기
스터디문제2 void omp_set_num_threads( int num )- 병렬화 스레드의 개수를 지정- 환경변수 OMP_NUM_THREADS로 쓰레드 수를 지정하는 것보다 API가 우선하여 적용된다. int omp_get_num_threads()- 현재 동작 중인 병렬 영역의 스레드 개수- 병렬 영역이 아닌 지역에서 호출되면 1을 리턴 int omp_get_max_threads()- 병렬 영역 내외에 관계없이 omp_set_num_threads 함수로 설정된 스레드 수를 리턴 int omp_get_thread_num()- 현재 실행중인 스레드 id int omp_get_num_procs()- 현재 OS에서 인식하고 있는 CPU의 개수 int omp_in_parallel()- 현재 위치가 병렬화된 영역인지 알려줌.. 더보기
스터디 문제 다음 코드의 결과를 쓰시오#include#include int main(){#pragma omp parallel num_threads(4) { printf("Hello World!\n"); } return 0;} 다음 코드의 결과를 쓰시오 #include#include int main(){ int x=0; printf("main area x: %d\n",x); omp_set_num_threads(2);#pragma omp parallel private(x) { if(omp_get_thread_num()==0) x=1; else x=2; printf("Num %d thread area x : %d\n",omp_get_thread_num(),x); } printf("main area x: %d\n",x); .. 더보기
13.09.30 스터디 준비 이재민 1. 동종 멀티코어시스템에서 쓰레드가 어느 코어에서 실행되는지에 따라 (캐시 계층 구조)때문에 성능에 영향을 미친다.- 같은 코어에서 실행되는 쓰레드는 그 코어의 private cache(L1) 공유- 같은 칩에서 실행되는 쓰레드는 그 침의 shared cache(L2) 공유 2. 쓰레드간 공유 데이터- 일반적으로 main()함수 밖에 선언 된 (전역변수, 글로벌 변수)는 공유됨- (힙)에 할당 된 객체들도 공유 가능- 하지만 (스택)안의 변수는 공유 불가 (만약 포인트를 이용한 공유를 할 시 문제가 발생) 3. (데이터 레이스)- 둘 또는 그 이상의 쓰레드가 같은 메모리 위치에 접근- 최소한 한 메모리 접근은 쓰기 연산- 그 메모리 접근을 제어하기 위해 쓰레드간 적절한 동기화를 수행하지 않음 4.. 더보기
끄적끄적 LockFreeQueue 더보기
13. 09. 25 스터디 문제 1. 다음과 같은 수들이 정의되어 있을 때 값이 다른 Z는? int a = 1, b = 2, c = 3, d = 4, e = 5, f = 6, g = 7; 1. z = d >> a; 2. z = g % e; 3. z = b & b; 4. z = ( c>b ) ? ++b : b; o 2. 문자형은 1바이트, 포인터형은 2바이트라고 가정한 경우, 정수형 변수 a, b의 값은? struct NODE { struct NODE* next; char name; char age; } node[3]; a = sizeof(struct NODE); b = sizeof(node); 1. a = 3, b = 4 2. a = 3,b = 12 3. a = 4, b = 3 4. a = 4, b = 12 o 3. 다음의 변수 선언 .. 더보기
팀장님 과제 다음 괄호 부분을 채우시오. C 언어에서 헤더파일을 첨가하는 지시자는 ()이다. 함수 scanf()에서 표준입력으로 값을 입력 받아 변수에 저장하려면 일반 변수 앞에는 반드시 주소를 의미하는 문자 ()가 앞에 와야 한다. 문장 ()는 C 언어의 일반 문장으로 이미 사용되는 자료형을 새로운 자료형으로 정의할 수 있는 기능이다. switch 문장에서 ( ) 문장은 바로 switch 문을 종료한다. switch 문의 표현식은 자료형이 ()이어야 한다. switch 문에서 표현식과 일치하는 case가 없는 경우, 키워드 () 뒤의 문장을 실행한다. 반복 구조에서 반복을 종료하는 문장은 () 문이다. 반복문 세 종류 중에서 반복 조건검사를 몸체를 실행한 후 나중에 검사하는 문장은 () 문이다. for 문을 for.. 더보기