728x90

OpenMP과 메모리 공유

- 스레드 중심이다보니 공유 메모리 병렬 프로그래밍 방식

-> 변수들이 공유됨

 

 

변수 공유 예시

- 아래의 코드 상에서 변수 tid들은 모든 스레드 상에서 공유됨

- 병렬 영역 전에 tid가 선언되고, 병렬 영역 안에서는 공유된 변수 공간에 초기화 수행

* 포트란에서는 모든 스레드가 덮어씌워져서 같은 tid를 가지나 c언어는 컴파일러가 수정해줘서 제대로 결과가 나옴

- 포트란에서는 tid가 공유되어 있어 다 덮어씌워지는 모습을 볼수있음.

 

 

변수 공유 해결

- tid를 private로 컴파일러 지시자를 지정해주면 됨.

 

- 혹은 tid를 지역변수로 만들어주면 됨

 

- 변수 tid에 각각의 스레드 번호가 할당되어 출력된 결과를 볼수 있음. 

 

 

 

300x250

+ Recent posts