게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
OpenMP 희안하네요 ㅠㅠ
게시물ID : programmer_21961짧은주소 복사하기
작성자 : Prograrnmer
추천 : 0
조회수 : 2439회
댓글수 : 11개
등록시간 : 2018/01/04 14:29:02
옵션
  • 본인삭제금지
연구를 위해서 프로그램 개발 중인데, 멀티 프로세서를 이용해서 여러 실험을 동시에 돌려야 합니다.

처음엔 자바에서 멀티 스레드로 처리 했는데, 좀 더 실험 속도를 올리려고 C++로 다시 만들었어요

C++는 OpenMP를 이용하면 멀티코어를 쓸 수 있다고 해서 OpenMP 루프 병렬화로 개발을 완료 했습니다.

그런데 스레드 수를 늘리면 늘릴수록 각 루프가 배로 느려지네요 ㅠㅠ CPU 사용량 보면 코어 배분도 잘 되는거 같은데

스레드 수 1개
1.png


스레드 수 2개
2.png


스레드 수 4개
4.png


스레드 수 8개
8.png


16개
16.png


각 쓰레드 끼리 읽기 위해 공유되는 리소스는 있지만 공유 자원을 업데이트 하진 않아요. 그래서 세마포어같은것도 사용하지 않았습니다.

병렬 처리 성능을 떨어뜨리는 요인이 공유 자원 말고 또 뭐가 있을까요??

자바로 만들었을 땐 스레드 수에 따라서 느려지는 일은 없었는데  C++ 정말 머리 아프네요
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호