728x90
OpenMP과 메모리 공유
- 스레드 중심이다보니 공유 메모리 병렬 프로그래밍 방식
-> 변수들이 공유됨
변수 공유 예시
- 아래의 코드 상에서 변수 tid들은 모든 스레드 상에서 공유됨
- 병렬 영역 전에 tid가 선언되고, 병렬 영역 안에서는 공유된 변수 공간에 초기화 수행
* 포트란에서는 모든 스레드가 덮어씌워져서 같은 tid를 가지나 c언어는 컴파일러가 수정해줘서 제대로 결과가 나옴
- 포트란에서는 tid가 공유되어 있어 다 덮어씌워지는 모습을 볼수있음.
변수 공유 해결
- tid를 private로 컴파일러 지시자를 지정해주면 됨.
- 혹은 tid를 지역변수로 만들어주면 됨
- 변수 tid에 각각의 스레드 번호가 할당되어 출력된 결과를 볼수 있음.
300x250
'컴퓨터과학 > 기타' 카테고리의 다른 글
openmp - 10. 스레드와 프로세스, 메모리 공간 (0) | 2020.07.29 |
---|---|
openmp - 9. firstprivate, shared, private (0) | 2020.07.29 |
openmp - 7. 스레드 관련 (0) | 2020.07.29 |
openmp - 6. openmp 예제 (0) | 2020.07.29 |
openmp - 5. OpenMP 시작하기 (0) | 2020.07.29 |