Transcript Mid-Term
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. 이미지를 GPU의 메모리에 올린 후 동일한 알고리즘 수 행 (I/O 시간을 제외한 수행 시간, 1000회 반복수행, (1) 140s, (2) 12s ,(3) 90s ) 알고리즘 성능 향상 다음 세 개의 알고리즘의 성 능 향상 (1) mean filter 혹은 median filter 응용 알고리즘 (2) 도형 렌더링 (3) edge 2. 이미지를 GPU에 올리는 detector 시간을 포함하여 동일한 알 고리즘을 반복 수행 (I/O 시 간을 포함한 수행시간, 1000 회 반복수행 (1) 190s, (2) 18s ,(3) 138s) 메모리를 효율적으로 사용하였는가? 기존 알고리즘과 동일한 결과를 만들어 내는가? 알고리즘이 수행 중일 때 최고 및 평균 메모리 사용량 측정 임의의 샘플로 구성한 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 각 10 고준호, 김학봉, 정보영 각 3.3 고준호, 김학봉, 정보영 각 3.3 김학봉 각 10 고준호 평가항목 기존의 함수와 동일한 인터페이스를 구현하였는가? 설계 및 개발방법 평가방법 목표 일치 점수 비중(%) 담당자 100 5 정보영 불일치 0 코딩 컨벤션을 지켰는가? 담당자 평가 0~100 5 정보영 주석을 적절히 처리하고, 문서를 작성하였는가? 담당자 평가 0~100 5 김학봉 1주 미만의 지연 100 1주 이상의 지연 80 5 고준호 전혀 지키지 않음 20 개발 단계에 따른 일정을 명시하고 잘 따랐는가?