ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
18 мая
266116
Evgeny_CD, Архитектор (08.08.2011 11:43, просмотров: 654)
Разложение алгоритмов. Интересно, какая есть теория под это? Вот есть сложный алгоритм. MPEG-4 AVC. Который суть куча алгоритмов, но не суть. Можно все это закодить на С. Ибо на нам все можно закодить. Потом оптимизнуть под конкретную архитектуру вычислителя, где максимум что есть: * Аппаратное ускорение MAC * Концепция 3- памятей – операнд, операнд, приемник * SIMD для небольшого кусочка данных Но из чего следует, что этот набор примитивов оптимален для решаемой задачи? Я бы сделал так. Попробовал бы разложить исходный алгоритм на блоки. Так, чтобы каждый из них можно было разложить на следующее * Операционный блок, которые реализует небольшое количество специфических операций * Управляющий блок, который может принять небольшую программу и управлять операционным блоком. Написал бы модельки этих блоков на том же С, написал бы модельки управляющих программ для управляющих блоков (тут С, по сути, был бы ассемблером для виртуального блока, но не суть), ну и написал бы верхний уровень – который синхронизирует всю эту тусовку, подсовывает ей блоки информации и забирает данные. К каждому виртуальному блоку прикрутил бы счетчик циклов и учет циклов блокировки (когда один блок ждет данных от другого), и сделал бы виртуальный подсчет производительности в таких циклах. Затем оценочно сделал бы HDL модельки блоков, чтобы оценить, сколько в реальности займет тот или иной «цикл» и понял бы, сколько все займет в реальности. Успели - не успели, влезли в ресурсы – не влезли, и прочая оптимизация. С++, конечно же, еще лучше подойдет для этой задачи. С# ваще сказочно, ибо этот код нигде, кроме писюка, исполнять не будет. Вопрос только в инструментарии для работы с алгоритмами… Они вообще есть???