'인코딩'에 해당되는 글 2건

  1. 2008.05.29 GPU를 이용한 비디오 인코딩 - NVIDIA Editor's day updated
  2. 2008.04.28 20배 빠른 비디오 인코딩?

GPU를 이용한 비디오 인코딩 - NVIDIA Editor's day updated

IT 2008. 5. 29. 01:26



이전에 언급했었던 (링크 참조) GPU를 이용한 비디오 인코딩에 관한 영상이다. 당시 글을 작성할 때 사용되었던 인코더는 위 영상에서 언급된 rapidHD의 데모 버전이었고, 이는 Kbench의 세미나에서 국내에 시연되어 공개된 적이 있다. 그 때 사용된 GPU는 8800기반. 영상은 이번 NVIDIA Editor's day를 촬영한 장면으로 - 이런거 NDA라고 아무리 난리쳐도 꼭 NDA풀리기 전에 기사가 뜬다 - 개선된 인코더와 새로이 발매될 GTX 시리즈를 이용한 인코딩을 보여주고 있다. 이미 확인한 바와 같이 굉장히 인상적인 성능을 보여주고 있는데, 많은 한계점을 감안하더라도 CUDA를 이용한 어플리케이션들은 몇몇 특수한 용도에서는 유용한 용도를 가질 수 있음을 증명하는 예라고 하겠다. 이와 함께 포토샵 CS4의 시연 기사도 함께 떠돌고 있는데, 대용량 영상작업을 하는 사람들에게는 이제 3D 작업이 아니라도 좋은 GPU가 필요해지는 시기가 서서히 다가오고 있는 듯 하다. 아직까지 일반 작업용 어플리케이션에 적용되기에는 많이 이른 감이 있는 까닭에 오해(요새 이 단어 쓰기가 굉장히 무섭지만)가 많은 분야이긴 하지만, 요 근래 지켜본 심정으로 느낀 것들은 어지간한 일반인은 정확한 사실을 아는 경우가 드물다는 것과 그러한 부정확한 정보의 인지가 실제 제품을 사용하는 사람들에게 영향을 미치는 경우가 많지 않다는 것들이기 때문에 크게 걱정하지는 않는 부분.
:

20배 빠른 비디오 인코딩?

IT 2008. 4. 28. 14:49

GPU를 본래의 특화된 용도 외에도 다양한 연산에 이용해보자는 시도는 제법 오래 전 부터 있었고, NVIDIA는 CUDA를 이용해서 나름 혼잡한 상황을 정리해 보려는 욕심을 가진 듯 싶다. CUDA가 가지는 비교적 명확한 단점들 때문에 제2의 CG취급을 받지 않을까 하는 우려가 있는 것도 사실이지만 그것까지 걱정해줄 필요는 없을 듯 싶고, CUDA를 이용해서 좋은 어플리케이션이 나오고 그 혜택을 입을 수 있는 것만도 충분히 반가운 일일 것이다. [CUDA Everywhere]라는 슬로건마냥 쓰고 있는 어플리케이션들이 모두 GPU 가속 지원이 된다면 참으로 행복하겠지만 제아무리 C로 코딩할 수 있다고 해도 애초 CPU와의 개념적인 차이가 제법 있는데다가 수학적인 이해를 바탕에 깔지 않으면 쉽게 도전하기는 만만찮은 부분이니만큼 현재까지 나온 어플리케이션들은 대부분 산업용 솔루션에 가까운 특화된 어플리케이션이 많아서 일반 사용자로서는 체감하기가 쉽지 않다. 그나마 대중적인 분야로 시도가 이루어지고 있는 부분이 이번에 얘기하고자 하는 인코딩 부분. Lame을 GPU가속이 지원되도록 포팅하려는 시도가 있다고 들었는데 솔직히 CPU가 원체 빠른 요즘 상황에 MP3 인코딩하는게 그렇게 와 닿지는 않고, 비디오 인코딩 쪽에서의 성과라고 주장하는 부분에 대해서는 한 번 살펴볼 필요가 있겠다 싶었다.

인코딩 부분에서의 연산이 부동소수점 연산 성능에 엄청나게 기대고 있고, GPU가 가진 가장 큰 장점이 짧은 파이프라인을 가진 강력한 부동소수점연산 유니트를 병렬로 연산하는데 있다..는 점까지만 놓고 보면 GPU야말로 이러한 연산에 최적해라고 쉽게 생각할 수 있겠지만 불행히도 몇몇가지의 제약 조건때문에 마냥 구현이 쉽지많은 않다. 크게 두 가지 부분이 문제가 되는데, 한 가지는 Host(CPU)-Device(GPU)간 데이터 전송시에 생기는 병목 현상때문에 영상처리와 같은 고용량 데이터를 처리할 때 병목현상을 방지하기 위해 갖은 수를 써야 한다는 점이고, 두 번째는 조금 더 본질적인 문제로 요즈음 HD영상을 위해 널리 사용되는 H.264포맷의 경우 현재 프레임이 독립적이지 않고 다른 여러 프레임과 연관성을 가지고 있기 때문에 병렬처리를 위해서는 복잡한 고려가 필요해지기 때문이다. 국내 업체에서도 이에 관해 여러가지 시도를 하고 있는 것으로 알고 있으며 좋은 결과가 있기를 기대하는 중.

각설하고, NVIDIA는 어쨌든 CUDA를 이용하여 개발사와의 협력 끝에 무려 CPU보다 20배나 빠른 인코딩 속도를 보여준다는 인코더를 공개했다. 물론 홀더가 얘기하는 보도자료에는 언제나 적절하게 뻥이 섞여 있기 때문에 액면 그대로를 믿을 수는 없다고 하더라도 20%가 아닌 20배의 수치는 주목할 수 밖에 없는 수치. 인코더를 개발한 목적이야 물론 영상편집 및 다양하게 고용량의 영상을 이용해야 하는 상업적인 이용자들을 대상으로 했겠지만, 휴대용 기기라고 이름 달고 나오는 기기라면 그야말로 눈이 빠질 것 같이 작은 1.x' 크기의 기기에서도 동영상을 지원한다고 써놓은 기기가 흘러넘치는 데다 그런 기기들이 PMP마냥 모든 코덱을 지원하지는 않는 국내 사정을 생각해보면 비단 영상을 업으로 먹고 살지 않더라도 충분히 관심이 갈 만 하다. 저성능의 PDA시절부터 인코딩에 들여왔던 그 인고의 시간을 생각해본다면 - 영화 한편 보는 시간보다 인코딩하는 시간이 긴 - 그야말로 복음의 빛이 아닌가.

이 자신만만한 그래프의 위용


해서 저 뻥섞인 보도자료가 진짜인지 한번 확인을 해 보았다. 불행히도 인코더는 아직 정식버전이 아닌지라 속도제한과 더불어 총 변환가능한 프레임수까지 제한이 걸려 있어서 통크게 2시간짜리 영화를 걸고 시간을 비교해 볼 수는 없었고, 적절한 길이의 샘플 클립을 이용했다. Transformer의 Mpeg2 TS 1080p 클립 - 520MB, 길이 2분 25초 - 를 선택했고, 경쟁 상대로는 좋은 사용 편의성을 보여주고 있어서 폭넓게 쓰이는 곰인코더를 선택. 출력포맷은 720p의 h.264 AVC로 지정하였고, Bitrate는 10Mb로 선택하였다. 가장 중요한 시스템 사양은 CPU로는 AMD FX-62(가진 것 중에 그나마 이게 제일 비쌌다;) 와 Geforce 8800GT.

꽤 빠르다.


그래프만으로 명확하게 확인할 수 있지만 시간 차이는 압도적으로, 나름대로 고성능 CPU인 AMD FX-62가 보여주는 결과는 Geforce 8800GT의 1/11. 출력 설정, CPU구성등의 변화를 생각해보면 NVIDIA의 자료가 그냥 뻥이라고 보기에는 좀 힘들 것 같다. 물론 언제나 기술적인 우위가 성공을 보장하는것은 아니고, 이포맷 저포맷이 복잡하게 섞여 돌아다니는 국내 동영상 포맷 사정에다가 곰인코더가 요구하는 월 1000원의 비용도 고깝게 여기는 네티즌들의 성향, 마지막으로 유료로 판매될 이 GPU기반의 인코더가 갖출 사용자 편의성이 얼마나 사용자들에게 먹힐 수 있겠느냐 하는 것들까지 고려해야 할 문제는 산더미고 보면 마냥 좋아할 것만은 아니지만..

어쨌든 빠르지 않은가 말이다. 앞으로 더 나은 물건이 나올 가능성도 있으니 희망은 가져볼만 하지 않을까.

: