Marat ([info]maratyszcza) wrote,
@ 2008-12-13 21:41:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
О работе
ruКогда я был маленьким, компьютеры большими, а "народной" операционкой был MS-DOS, который грузился с отдельного 5.25" флопика (ибо винчестера в компьютере не было), я твёрдо помнил, что нажав в Нортон Коммандере F3, можно было просмотреть любой файл. Любых файлов тогда было уже две разновидности — файлы с текстом и файлы с программой. И вот, выделив файл с программой, я нажимал F3, и видел, как Нортон пытается вывести эту программу в виде текста. Текст получался не особо читабельный — на экран выводилось много несвязных символов, половина из которых была псевдографикой (да, вот вы знаете, что такое псевдографика?) Современный юзер, увидев то, что тогда видел я, непременно решил бы, что нужно поменять кодировку, я же думал, что именно в такими крякозябликами и написана программа. Потом я узнал, что программы пишутся на специальных языках, и один за другим освоил несколько из них, так что когда на съёмках школьного фильма в четвёртом классе у меня спросили, кем я стану, я ничтоже сумняшеся ответил "Программистом". Кажется, из всего класса, я единственный определил свою будущую професию верно. Уже затем, где-то в начале третьего тысячелетия, я понял, что програмисты бывают ну совсем разные, и понял, что хочу заниматься либо оптимизацией программ, либо их проектированием. И вот, на дворе конец 2008 года, и я занимаюсь оптимизацией видеокодека H.264 в компании Intel. Работа в такой большой компании сама по себе имеет много плюсов, так, я уже стал фаном местной кофе-машины, умеющей готовить шесть разных видов кофе. А ещё там кучу разных видов чая, из которых только зелёного семь видов, причём все их можно пить с сахаром (это я, пользуясь случаем, передаю привет [info]lmy824).
И ещё теперь, когда кто-нибудь спрашивает у меня "Расскажи что-нибудь" я начинаю рассказывать, как работает видеокодек H.264. Вообще об этом видеокодеке можно запросто написать толстенную книжку (стандарт занимает 500 страниц, но многое в нём не объяснено), сотню-другую постов в ЖЖ и всё равно ещё останется, что рассказать при личной встрече. Уже по стандарту видно, что H.264 разрабатывали чистые практики: если логика работы MPEG-4 логична и ясна, то в H.264 принцип примерно таков: мы вычисляем переменную по этой формуле, ищем вон в той таблице подходящее значение, и его записываем. И так много раз. На вопрос, откуда взялась эта формула и та таблица, разработчики стандарта бы ответили примерно следующее "Мы собрали стастику, округлили и получили то, что в таблице. А формула такая потому, что так она быстрее будет в железе вычисляться". Зато этим кодеком любое видео можно сжать в 200 раз и вы этого даже не заметите! Оптимизация же этого видеокодека — это вообще отдельная песня. Если сделаешь где-нибудь ошибку, то в лучшем случае узнаешь о ней потому, что на сжатом видео будет падать декодер. При виде упавшего декодера понимаешь, что тебе сейчас предстоит сравнивать в шестнадцаричном редакторе два файлика в надежде понять, где же, чёрт возьми, я написал код, из-за которого в байте по смещению 0x39201 вместо 0x8E оказывается 0x7F!? После нескольких таких отладок получаешь новый скилл писать код без ошибок. Даже если этого кода тяща строк! Даже если это тыща строк на асемблере! Ибо применять скилл отладка-ассемблерного-кода-в-уме-пока-едешь-в-метро-домой ужасть как не хочется.



(9 comments) - (Post a new comment)


[info]zelanton
2008-12-13 08:09 pm UTC (link)
Ребе, скажите, а какой плеер самый быстрый в работе с H.264? А то, знаете, иногда испытаваю проблемы по этой части (видео камера в него пишет, а комп справляется далеко не всегда)...

(Reply to this) (Thread)


[info]maratyszcza
2008-12-13 08:24 pm UTC (link)
Если видеокарта поддерживает аппаратное ускорение, нужно искать плеер, который позволяет его использовать. Если же плеер не использует аппаратное ускорение видеокартой, он обычно использует кодеки, установленные в системе

(Reply to this) (Parent)


[info]sim0nsays
2008-12-13 10:05 pm UTC (link)
А вот сколько кеш-миссов на кадр, в среднем, 0? Можно разные значения для разных типов кадров.

(Reply to this) (Thread)


[info]maratyszcza
2008-12-13 10:19 pm UTC (link)
Померяю - напишу. Но это будет очень сильно зависеть от профиля и размера кадра

(Reply to this) (Parent)(Thread)


[info]sim0nsays
2008-12-13 10:20 pm UTC (link)
Интересны какие-то конкретные цифры для конкретного видео, ага.
То есть, пугали, что в MPEG4 не было ни одного мисса.

(Reply to this) (Parent)(Thread)

Вот я и добрался до VTune'а
[info]maratyszcza
2009-01-29 11:10 pm UTC (link)
Цифры такие:
L2_ST.SELF.I_STATE = 5 300 000 (общее количество L2 промахов при записи на активном ядре)
L2_LD.SELF.ANY.I_STATE = 59 400 000 (общее количество L2 промахов при чтении на активном ядре)
L2_LD.SELF.DEMAND.I_STATE = 29 800 000 (количество L2 промахов при чтении на активном ядре, не считая промахи hardware prefetcher'а)
L1D_PEND_MISS = 15 369 000 000 (общее количество L1D промахов)
L1D_CACHE_ST.I_STATE = 210 000 000 (L1D промахов при чтении)
L1D_CACHE_LS.I_STATE = 596 000 000 (L1D промахов при записи)

L1I_MISSES = 257 500 000 (общее количество промахов Intruction Fetch Unit, фактически промахи L1I)

ITLB.MISSES = 3 870 000 (общее количество промахов ITLB)
DTLB_MISSES.ANY = 45 830 000 (общее количество промахов DTLB)

Всё это на Core2Duo/Merom при среднем качестве кодировании, потоке 1Мбит/с на YUV(4:2:0) сэмпле 720x416 из 292 кадров. Размер сэмпла - 125 Мбайт.

А отсутствие миссов в MPEG4 очень сомнительно. При таких размерах данных их просто не может не быть. Даже один кадр в 1920p не для каждого процессора сможет уместиться в L2-кэш

(Reply to this) (Parent)(Thread)

Re: Вот я и добрался до VTune'а
[info]maratyszcza
2009-01-31 09:12 pm UTC (link)
Упс. Это всё на весь поток, а не на один кадр

(Reply to this) (Parent)


[info]toshirskij
2008-12-13 10:08 pm UTC (link)
Ребе, а у нас в институте несколько автоматов, каждый из них готовит минимум 10 сортов кофе :)

А вообще завидую по-доброму, это да =)

(Reply to this) (Thread)


[info]maratyszcza
2008-12-13 10:14 pm UTC (link)
Дык, эта кофе-машина на халяву. К тому же она варит кофе, и умеет готовить кофе с молоком (для этого рядом с ней всё время стоит пакет с молоком, и она по трубочке его оттуда высасывает). А ещё можно сходить на другой этаж, и там попробовать другие виды кофе

(Reply to this) (Parent)


(9 comments) - (Post a new comment)

Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…