2008년 8월 28일 목요일

멀티코어를 위한 MT 필터

HDTV를 x264로 인코딩하다보면 속도가 느려서 포기하시는 분들 많습니다.
그래서 쿼드코어에 대한 지름신이 강림하기도 하죠.

하지만 쿼드코어를 구입한다고 해서 만사 해결되는 것은 아닙니다.
왜냐하면...
근본적인 이유는 AVS 필터가 싱글코어만 사용하기 때문입니다.

MeGUI로 HDTV 720p 인코딩을 할 때 기본적으로 사용하는 골격은 다음과 같습니다.

DGDecode_mpeg2source("hdtv.d2v",info=3)
ColorMatrix(hints=true,interlaced=true)
Load_Stdcall_Plugin("C:\Program Files\megui\tools\yadif\yadif.dll")
Yadif(order=-1)
crop( a, b, c, d)
LanczosResize(1280,720)

여기서 문제가 뭐냐면...
바로 디인터레이싱 필터인 Yadif와 리사이즈 필터인 Lanczos 입니다.
이 녀석들 속도가 아주 느립니다.
x264는 멀티코어를 지원하기 때문에 열심히 일하려고 하는데
문제는 저 2가지 필터의 처리속도가 늦기 때문에 CPU가 놀게 됩니다.

저기 사용된 스크립트 그대로 MeGUI x264 기본옵션으로 돌려보겠습니다.

사용자 삽입 이미지


보시다시피 CPU가 탱자탱자 놀고 있습니다.
평균적으로 50% 정도의 점유율을 보여주고 있네요.
참고로 저는 Q9550을 4GHz로 오버클럭 해서 사용중입니다.

이제 동일한 상태로 MT 필터를 사용해보겠습니다.

사용자 삽입 이미지

어떤가요? CPU가 열심히 일하고 있죠?
게다가 속도는 무려... 23fps에서 39fps로 껑충 뛰었네요.
물론 속도가 2배로 되지는 않습니다.
점유율 50%에서 100%로 올라갔다고 하더라도 보통 속도는 1.5배 정도의 향상이 있습니다.



이제 본격적으로 MT 필터를 어떻게 사용하는지 알아봐야겠죠?
자세한 사항을 알고싶으면 MT와 관련된 영어 싸이트 읽어보세요 ㅋㅋ

http://forum.doom9.org/showthread.php?p=660247#post660247
http://avisynth.org/mediawiki/MT

저는 여기서 MT가 아닌 modified avisynth MT 2.5.7.5 를 소개해드리겠습니다.
수정된 AviSynth.dll 파일을 사용하기 때문에 필터를 로딩할 필요 없이 그냥 적용 가능합니다.




위 DLL 파일을 XP나 비스타 32비트의 경우 C:\WINDOWS\system32 에다가 넣어주시면 됩니다.
기존 파일을 덮어씌워야겠죠?
그러면 내부필터 사용하듯 바로 사용 가능합니다.

비스타 64비트의 경우 폴더가 아마도 C:\WINDOWS\SYSWOW64 일겁니다.
그리고 AviSynth 설치할 때 기본적으로는
C:\Program Files (x86)\AviSynth 2.5 폴더에 설치될건데
저는 혹시나 문제가 생길까봐 C:\Program Files\AviSynth 2.5 에 설치했었습니다.



여기서 사용되는 MT는 6가지 모드가 있습니다.
자세한건 위키에 나온거 읽어보시고
저나 여러분들은 그냥 기본값만 사용하시면 됩니다.

AVS 스크립트 가장 윗 줄에 setmtmode 라고 적으시면 끝!!

너무 간단한가요?
저렇게 적으시면 기본값인 setmtmode(2,0) 으로 들어가게 됩니다.
즉 모드 2번에 쓰레드 AUTO



MT가 만능은 아닙니다.
필터가 싱글코어만 사용하기 때문에 그 문제를 해결하기 위해서
화면을 분할해서 여러개로 처리하는 방식 같습니다.
그러니까 크로스파이어나 SLI와 비슷한 개념이겠네요.

하지만 모든 필터가 다 MT와 호환되는 것은 아닙니다.
대표적으로 FFT3DGPU 필터는 MT와 같이 사용 불가능합니다.
또한 MT를 사용하면 점유율은 늘어나지만 속도는 똑같거나 오히려 낮아지는 경우도 있습니다.

따라서 쿼드코어 사용한다고 무작정 MT를 사용할 것이 아니라
비교를 해보고 확실히 속도향상에 도움이 되는 경우에만 사용하시면 됩니다.

댓글 18개:

  1. 확실히 빨라지네요...

    좋은 정보 감사합니다...^^

    답글삭제
  2. 오옷. 좋은정보 감사합니다.

    답글삭제
  3. 아 감사합니다

    저같은 경우는 점유율 올라가고요

    덕분에 cpu온도가 100도 까지 ㅠㅠㅠ 쿨링을 바꿔야겠네요

    하여튼 감사합니다

    답글삭제
  4. 비밀 댓글 입니다.

    답글삭제
  5. @Anonymous - 2008/09/07 01:24
    깍뚜기는 원본이 그래서 어쩔 수 없는거구요 FFT3DGPU 사용하면 그나마 좀 덜합니다.

    답글삭제
  6. 비밀 댓글 입니다.

    답글삭제
  7. @Anonymous - 2008/11/28 22:34
    AviSynth 설치할 때 기본 폴더가 C:\Program Files (x86)\AviSynth 2.5 에 설치가 되지 않던가요?

    그래서 저는 일부러 설치 폴더를 C:\Program Files\AviSynth 2.5 로 변경해서 설치했습니다.

    그리고 위 파일은 AviSynth 설치 후에 C:\WINDOWS\SYSWOW64 폴더에 복사하란 말이고

    만약 안되면 C:\WINDOWS\SYSTEM32 폴더에도 복사해보세요.

    댓글 중에 역슬러쉬가 표시되지 않는군요.

    답글삭제
  8. 비밀 댓글 입니다.

    답글삭제
  9. 비밀 댓글 입니다.

    답글삭제
  10. @Anonymous - 2008/11/28 23:33
    직접 눈으로 보지 않는 이상 제가 상황을 이해하기 힘드네요. 오디오 인코딩은 Avisynth랑 전혀 상관없는데 말이죠...

    답글삭제
  11. @Anonymous - 2008/11/28 23:45
    티스토리 서버 문제로 파일을 못보내드리네요. 아무튼 Avisynth 버전 다른걸로 한번...

    답글삭제
  12. 비밀 댓글 입니다.

    답글삭제
  13. @Anonymous - 2008/11/30 01:43
    메구이는 아무거나 깔아서 최신업데이트 다 해놓은 상태입니다.

    Avisynth는 이거 http://downloads.sourceforge.net/avisynth2/AviSynth_220406.exe?modtime=1145731724&big_mirror=0

    답글삭제
  14. 비밀 댓글 입니다.

    답글삭제
  15. @Anonymous - 2008/11/30 22:40
    그렇다면 Aften이 Avisynth를 사용하는데 충돌한다는 가정을 내려볼 수 있습니다.

    따라서 AC3 다운작업은 FFmpeg로 해보세요. 예전부터 MeGUI는 FFmpeg를 사용했는데

    Aften이 기본으로 된건 근래의 일입니다.

    답글삭제
  16. 비밀 댓글 입니다.

    답글삭제
  17. 비밀 댓글 입니다.

    답글삭제
  18. @Anonymous - 2008/11/30 23:50
    제가 링크걸어드린 Avisynth 파일 크기는 3.27MB 입니다. 말씀하시는 상황들이 제 입장에선 이해하기 힘드네요.

    동일한 버전의 Avisynth로 저는 MT 사용이든 Aften 사용이든 아무런 문제가 없거든요.

    답글삭제