Image Processing with CUDA
Download
Report
Transcript Image Processing with CUDA
J조 고준호
김학봉
정보영
자세한 스펙 소개
현재 진행중인 작업(진행한 작업)
개발 환경 구축
CUDA study
앞으로 진행 예정 작업
일정 및 평가 기준
이미지 프로세싱 성능 개선
공통으로 쓰이는 부분에 대하여 개선
cf) 다양한 모듈(함수 단위)의 전체 개선 아님
어느 정도 선까지 가능한지 체크
최종 목표는 모듈화 하여 회사에 제공
추가) 자주 쓰이는 모듈 몇 가지 에 대해서 개
선 하여 제공
1.음영 제거
2. 도형 그리기
3. Edge Detection Algorithm
• 중간 과정의 미분 값을 구하는 것이 목표
• 위 과정이 완료 되면 직접 구현 시도
• (추가사항) Canny Edge Detector
• (추가사항) Sobel Edge Detector
10월 19일에 스펙 결정(시간 부족)
개발 환경 구축
주어진 HALCON 라이브러리를 이용
쿠다 설치 및 테스트 완료
SVN 설치 및 팀원간 의사소통 환경 설정
CUDA code와 application 코드의 분리
Visual Studio Complier
• MFC code section
• HALCON library section
CUDA Compiler (nvcc)
DLL
CALL
☞ host code
Module화 가능성 제고
• image processing
• dynamic linked library
☞ device code
3가지 문제에 대하여 적용 방안 연구중
Step1 : 병렬 문제로 전환 후 해결 시도
Step2 : 더 나은 알고리즘 공부, 검색
Step3 : Optimization 기법 연구 후 적용
간단한 실험 결과
: CPU가 더 빠른
현상 발견
(다음 페이지)
이미지 역상 처리 테스트 (x축:횟수, y축:시간)
3.5
3
2.5
2
CPU
CPU-DLL
1.5
GPU-CUDA
1
0.5
0
0
2
4
6
CUDA basic study
Hierarchy에 대한 이해
device와 host간의 교환
emulation 모드 디버깅
nvcc 컴파일러 사용법
기본 reference
예제를 통한 이해!!
프로젝트 진행방식 : 2 way
CUDA study & exercise
Design algorithm
• problem solving with ex.
• environment setting
• convert to parallel way
• find more efficient thing
Merge and Execute
• Optimization considering coalescing, bank conflict, etc..
• Make DLL and show UI with MFC dialog or something
• Provide our result with company and get feedback
CUDA의 다양한 이슈들에 대해 공부
Host-Device data transfer
Shared memory bank conflict
Coalescing
Partition camping
각 문제에 적용하도록 시도
여러 개의 이미지에 대하여 동시 진행할 경우
이미지의 특정 부분별로 처리를 해야 할 경우
sequential한 부분을 parallel하게 하는 경우
주의 : 병렬화한다고 끝나는 것이 아님
항상 및 작업 단위의 최적화 생각
물리적 메모리 구조
논리적 메모리 구조
항상 CPU와 고려/비교
context switching 속도
cpu cache의 위력 (locality)
DLL call over-head
병렬화한 알고리즘을 CUDA에 적용
최적화 후 회사로 보내서 피드백 받음
추가 수정 후 프로젝트 완료
할일
소요
기간
기초 개발환경 구축
1주
DLL 분리 환경 구축
1주
CUDA 공부 및 실제적용
5주
주어진 문제 솔루션 찾기
3주
각자 작업한 내용을 결합
1주
최적화 작업 및 피드백
1주
10월
11월
12월
평가항목
평가방법
1. I/O 시간을 제외하여
이미지 프로세싱에
사용된 CPU Time만을
측정한다.
최소 세개 이상의
이미치 처리 함수의
알고리즘을 개선하고
수행속도를 향상시킨다.
2. I/O 시간을 포함한
전체 작업 수행 시간을
측정한다.
알고리즘
성능 향상
메모리를
효율적으로
사용하였는가?
기존 알고리즘과
동일한 결과를
만들어 내는가?
알고리즘이
수행 중일 때
최고 및 평균
메모리 사용량 측정
임의의 샘플로 구성한
test set을
두 알고리즘을 이용하여
수행하고 결과를 비교한다.
목표
점수 비중(%) 담당자
수행시간 95% 이상 단축
100
수행시간 90% 이상 단축
90
수행시간 75% 이상 단축
80
수행시간 50% 이상 단축
70
수행시간 20% 이상 단축
60
수행시간 0% 이상 단축
50
수행시간 50% 이상 단축
100
수행시간 40% 이상 단축
90
수행시간 30% 이상 단축
80
수행시간 20% 이상 단축
70
수행시간 10% 이상 단축
60
수행시간 0% 이상 단축
50
메모리 사용량의 감소
100
2배 이하의 증가
90
2배 이상의 증가
80
100% 일치
100
99%이상 일치
90
98%이상 일치
50
95%이상 일치
20
그외
0
30
고준호,
김학봉,
정보영
10
고준호,
김학봉,
정보영
10
김학봉
30
고준호
평가항목
알고리즘
성능 향상
최소 세개 이상의
이미치 처리 함수의
알고리즘을 개선하고
수행속도를 향상시킨다.
기존의 함수와
동일한 인터페이스를
구현하였는가?
설계 및
개발방법
평가방법
목표
점수 비중(%) 담당자
1. I/O 시간을 제외하여
이미지 프로세싱에
사용된 CPU Time만을
측정한다.
수행시간 95% 이상 단축
100
일치
100
30
고준호,
김학봉,
정보영
5
정보영
불일치
0
코딩 컨벤션을 지켰는가?
담당자 평가
0~100
5
정보영
주석을 적절히 처리하고,
문서를 작성하였는가?
담당자 평가
0~100
5
김학봉
1주 미만의 지연
100
1주 이상의 지연
80
5
고준호
전혀 지키지 않음
20
개발 단계에 따른 일정을
명시하고 잘 따랐는가?