Перейти к содержанию
    

roman522

Новичок
  • Постов

    4
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Не вижу смысла в такой постановке вопроса. Задача вроде была найти H кода. и такую что бы работал декодер. Да я понимаю что эта H может быть не равна H настоящей. Но если выполняются условия: 1. кривая BER ведёт себя также как у подобных кодов с подобными параметрами. 2. G_new полученная из H_new удовлетворяет условию G_new * [data_old] == G_old * [data_old] то с практической точки зрения разницы нет. Для себя открыл вот такие свойства LDPC, можно сказать теория Декодирование и исправление ошибок возможно при не "полной" H. (можно повторно провести отсев кодовых слов) Если задан код размером N скорости R и максимальным числом проверок Kmax, то при переборе по k=[3...Kmax] будет получено N*R проверок, собственно сколько и нужно. Если выполнить перебор по k=Kmax+1 то будет найдено !=0 число проверок. (возможно может пригодится для оптимизации аппаратного декодера) Главная плюшка метода, он гарантированно работает для псевдо/рандомных LDPC и BER входных кодовых слов 10^-2 (тестировался предварительно на малых кодах с BER=10^-1)
  2. N=720 R=1/2 k=[5,6,7] код оказался QC-LDPC подробности уже стёрты. всё примерно. Главное декодер ошибки исправляет (проверка по CRC).
  3. Приветствую. Решал данную задачу практически совсем недавно. У вас есть ошибки к подходу которые нужно устранить. 1. "подбор фазы" - просто так не возможен нужна образцовая последовательность. ну и конечно нудно демодулировать с корректором. и учесть LLR 2. вам представлен вариант записи с реального оборудования. Из этого можно получить ряд послаблений. 2.1 если это LDPC код - то он систематический. 2.2 если разработчики данной железки "не фанаты", то код регулярный или квази циклический. 2.3 число проверок в строке H мало (<=10). Первым шагом будет подготовка исходных данных. 1. демодулирование и получение soft bit 2. получение hard bit. анализ в битовом редакторе смещения кодовых слов и выделение кодовых слов в виде [data][check] LLR 3. удаление дубликатов кодовых слов. методом слияния. 4. удаление или корректировка кодовых слов с незначительными различиями. (<10 bit) 5. Выборка из полученного набора не менее 2*N кодовых слов с максимальным LLR. Второй шаг - по подготовленной выборке "тупым" перебором и статистикой нахождение строк H ;-) тут нужно задаться числом проверок k (обычно 5-10) длинна кодового слова n и получаем число возможных вариантов I =n!/( (n-k)! * k!) Эти варианты можно ещё сократить если учесть свойства кодов. и самым сложным является нахождение хотя бы одной строки, далее всё просто. В итоге я получил скорость перебора ~3000M итераций на cpu-i7-4770, на GPU перевести не успел задача решилась раньше :-) Решение задачи найдено часов за 5 вместо первоначальных ~30 суток.
  4. Проверял 9600GT на комплексных FIR фильтрах размером 128 (1D). Производительность расчита по приблизительной формуле G = 2*N+2*N (два флоатовских умножения и два сложение на один элемент линии). В первых решениях получилось порядка 2-3 GFlops. После оптимизации загрузки данных и коэфицентов (использование shared памяти и кеша + шаманство с последовательностью инструкций) удалось получить около 39 GFlops. Результат конечно достаточно приличный, но до заявленных 200 далековато(хотя не могу понять как они получили такую цифру). Узким местом остаётся память, из за её латентности, и похоже контролера. Так что при 2D, возможно, производительность будет ещё ниже. p.s. Без лишней шумихи появилась версия 2.1 ссылки для загрузки есть на оф. форуме nvidia.
×
×
  • Создать...