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
개발 단계에 따른 일정을
명시하고 잘 따랐는가?