GPU 서버에서 이미지 로딩 및 디코딩 최적화 시도 - 100-hours-a-week/5-yeosa-wiki GitHub Wiki
*아래 내용은 gpu에서 추가적인 속도 최적화를 시도했으나, jpeg로 확장자를 고정해야 속되 최적화가 가능하다는 결론 도출. 이에 4가지 확장자 지원하는 현재로써는 최적화 어려움. 다만, 추후 참고용으로 남겨둠.
1. 개요
- gpu 서버에서 이미지 로딩 및 디코딩 작업 시, 디코딩 작업에서 속도 최적화의 여지가 있다고 판단
- 이에 기존 openCV를 재시도하여 openCV가 gpu 환경에서 더 빨라지는지 테스트
- 만약 속도 최적화가 가능하다면 다양한 확장자 지원을 위해 교체할 예정
2. GPU 테스트
a. turboJPEG 테스트
b. OpenCV 테스트
3. 분석
- openCV를 적용했을때, 전체적인 처리 시간이 증가하고 중간중간 크게 시간이 튀는 것을 확인할 수 있음. 이는 cpu 사용량이 한계에 다다랐기 때문으로 보임
- 3개의 리소스 사용 중 2번째가 turboJPEG, 3번째가 openCV로 openCV가 더 cpu 사용률이 높은 작업임을 확인할 수 있음.
a. OpenCV가 gpu에서 속도 향상이 되지 않는 이유는?
- openCV는 CPU에서 수행됨. GPU를 활용하지 않기 때문에 gpu 서버로 마이그레이션해도
속도 최적화가 되지 않음.
- 이는 openCV cpu 사용량이 매우 높은 것에서 확인할 수 있음.
b. 속도 최적화 방법 없을지
- gpu를 활용하여 디코딩하는 NVIDIA DALI 라이브러리가 있지만 속도가 빠른 mixed 또는 gpu 디코더는 jpeg에 대해서만 지원함.
- 이미지 파일 형식이 jpeg로 고정되지 않는다면 추가적인 속도 최적화는 어려울 듯함.