병렬처리를 활용한 피부 보정 프로그램(Open cv)10. 병렬 프로그래밍이 꼭 필요한 이유분석1
픽셀 단위로 블러링 하게 되면 데이터 처리량이 엄청 크다
영상 1초에 사진 24장
각 사진 1장당 최대 (640*360) 블러링 실시
블러링 각 1번에 수십번의 연산
15. 성능 측정 결과분석2
순차 처리 구간은 병렬 처리 구간에 비해 작업량이 1%가 채 되지 않는다.
핵심만 설명하기 위해 순차처리 구간 제외
17. 성능 측정 결과분석2
싱글 코어에서 실행 했을 경우
4 코어에서 실행 했을 경우 (하이퍼 스레딩)
4초 영상 테스트 결과 64초
4초 영상 테스트 결과 34초
약 2배에 가까운 성능 향상
19. 화면을 분할해서 병렬처리분석1
3번째 작업구간이 전체 작업량의 절반을 가지고 있으므로
성능은 싱글코어가 절반의 작업량을 해치우는 시간과 같다. (2배)
Data Dependency 존재
20. 성능 측정 결과분석2
싱글 코어에서 실행 했을 경우
4 코어에서 실행 했을 경우 (하이퍼 스레딩)
5프레임 풀블러링 테스트 결과 53초
코어개수 4배 + 하이퍼스레딩
약 4배 이상의 성능 향상
22. 영상 처리 기본 병렬 방식전략
1초에 24초의 프레임의 사진이 순식간에 지나간다
사람이 그보다 더 빨리 움직이는 것은 힘들기에
인접한 프레임끼리는 처리해야하는 양이 거의 같다.
1프레임 -> 1코어
2프레임 -> 2코어
3프레임 -> 3코어
4프레임 -> 4코어
5프레임 -> 다시 1코어