Ядра CUDA. Эффективность в кодировании/декодировании mp3 файлов?
В последнее время начал интересоваться ядрами CUDA и OPENCL в интерпретации python. Моя задача написать lamemp3codec, перенеся алгоритмы кодирования и декодирования на ядра с помощью модуля pyCUDA. Хочу определить время кодирования/декодирования в зависимости от выбора числа ядер, графических чипов. Как вы думаете, это вообще возможная практически задача? Напоминаю, mpeg layer 3 состоит из 192 фреймов. 1 фрейм - 4 буффера по 8 бит. Это таблица из 4 столбцов и 32х строк значений. Таких строк в каждом фрейме 32. Это только первый слой - 192 фрейма или 192 beats per second. Второй слой - это отсекаемая raw-data, которую мы не слышим, про третий слой не особо понял. И также вопрос к основному. Можно ли в параллель пустить создание 4 фреймов на 2 ярдах, у каждого по 2 потока. То есть за такт должно получится 4 фрейма.
Современные процессоры уже кодируют mp3 быстрее чем требуется для онлайн трансляции.
Поэтому острой необходимости нету. По поводу CUDA я не специалист. Но практически все
задачи подобного толка решаются через шаблоны fork-join.
Если ты сможешь взять поток mp3 и порезать его на совокупность кадров. И для каждого
кадра очень эффективно создать этот самый fork-join и успеть очень быстро собрать результаты
всех потоков в новый поток - то твоя задача вполне себе осуществима. Но будет ли от этого
ощутимый эффект - чорт его знает. И не будет ли потерь на координации ядер и потоков.
Задачи майнинга к примеру выигрывают на том что у них редкая координация. Раз в 10 минут
получили задание - загрузили каждый камень и спокойно себе считают. С mp3 будет по другому.