nabbla (nabbla1) wrote,
nabbla
nabbla1

Categories:

QuatCore+GPU: ФИНАЛ!

Наконец-то мы добили этот несчастный кадр, пора посмотреть, что из этого вышло:



Это содержание оперативной памяти по окончании симуляции. В общем-то, всё понятно :)

Но если разукрасить - то будет совсем замечательно:



А уж если свериться с листингом памяти (не весь, только первые 45 слов), то вообще никаких вопросов не останется:
EthDisable[1]:   01    0x0003
EthDisable[2]:   02    0x0022
EthDisable[3]:   03    0x0054
EthDisable[4]:   04    0x0000
EthDisable[5]:   05    0x0001
EthDisable[6]:   06    0x0003
EthDisable[7]:   07    0x0022
EthDisable[8]:   08    0x0066
EthDisable[9]:   09    0x0000
EthDisable[10]:  0A   0x0018
EthDisable[11]:  0B   0x0002
EthDisable[12]:  0C   0x0022
EthDisable[13]:  0D   0x006F
EthDisable[14]:  0E   0x0002
D1:              0F   0x0006
ActivePoints:    10   0x0012
AllPoints:       11   0x8000
APHeadDummyX:    12   0x8000
Heap:            13   0x0015
APTailDummyX:    14   0x7FFF
Elem0Next:       15   0x001A
Elem0X:          16   ????
Elem0Y:          17   ????
Elem0L:          18   ????
Elem0P:          19   ????
Elem1:           1A   0x001F
Elem1[1]:        1B   ????
Elem1[2]:        1C   ????
Elem1[3]:        1D   ????
Elem1[4]:        1E   ????
Elem2:           1F   0x0024
Elem2[1]:        20   ????
Elem2[2]:        21   ????
Elem2[3]:        22   ????
Elem2[4]:        23   ????
Elem3:           24   0x0029
Elem3[1]:        25   ????
Elem3[2]:        26   ????
Elem3[3]:        27   ????
Elem3[4]:        28   ????
Elem4:           29   0x002E
Elem4[1]:        2A   ????
Elem4[2]:        2B   ????
Elem4[3]:        2C   ????
Elem4[4]:        2D   ????
Elem5:           2E   0x0033


Первые почти 2 строки (0x00..0x0E) - это сообщение для Ethernet-контроллера, чтобы он по-максимуму отключился, и начал нам выдавать 25 МГц вместо исходных 4 МГц. Нам это пригодится для работы "на железе", а пока мы соответствующий код закомментировали, а память уж не стали.

Затем, в конце 2-й строки идёт наш "предполагаемый диаметр" D1=6. Да, он так и остался равен шести, что немудрено - мы его не трогали. Хотя в дальнейшем наверное будем, исходя из измеренной дальности.

И наконец, самое весёлое

Адрес 0x10, ActivePoints, значение 0x12. Это первый элемент списка ActivePoints, причём известно, что он выражает "левую фиктивную точку". Значение 0x12 - это ссылка на следующий элемент списка. Данный элемент - "правая фиктивная точка". По самому адресу 0x12 лежит указатель на следующий элемент списка, 0x8000 - это NULL. Т.е список из двух элементов, с такого состояния он начинался, к такому и вернулся, всё правильно.

Далее, 0x11, AllPoints, значение 0x24. Это список AllPoints. По адресу 0x11 лежит указатель на первый информативный элемент этого списка. Сейчас это 0x24. Там мы видим точку с параметрами:
Next = 0x1F,
Size = 6,
X    = 0x14,
Y    = 0x16,
Lum  = 0x6D0


Это последняя из обнаруженных точек (справа снизу). Координаты "бьются", хотя по оси Y мы как в начале ошиблись на единичку - так и не исправили, т.е "в фотошопе" у меня получается (20; 21), а здесь (20; 22). Нормально...

Эта точка ссылается на другую:
Next = 0x1A,
Size = 6,
X    = 5,
Y    = 0x0B,
Lum  = 0x6BD


Предпоследняя из обнаруженных точек, слева "посерединке". С координатами всё то же самое: смещение по оси Y, будто по ней нумерация строк идёт с единицы, а в остальном восторг.

По адресу 0x1A лежит следующая точка:
Next = 0x15,
Size = 6,
X    = 0x15,
Y    = 7,
Lum  = 0x6BD


Это точка справа сверху, вторая из обнаруженных. И наконец, по адресу 0x15 лежит следующая точка:

Next = 0x8000 (NULL)
Size = 6,
X    = 0x0E,
Y    = 7,
Lum  = 0x39A


На этом список заканчивается (ссылка ведёт в NULL). Данный список и является результатом работы: мы обнаружили 4 точки, и их параметры сохранены в памяти.

Ещё посмотрим на адрес 0x13, это указатель Heap, его значение 0x29. Если посмотреть на рисунок, он указывает на незанятый элемент, а с него идёт ссылка на ещё один незанятый элемент, и так далее. Если посмотреть на верхний скриншот, где приведён ПОЛНЫЙ дамп памяти (все 256 слов, невообразимые 512 байт!), увидим, что такая "чехарда" продолжается до адреса 0xB0. Там имеем последний свободный элемент, от которого ведёт ссылка в NULL, а после него идёт стек.

Как видно, за всё время работы мы воспользовались всего 4 его элементами. В нулевом лежит адрес возврата, 0xC00C. Реально это 0x0C, метка @@ActPointsStart, но при упрощении QuatCoreImmTable вышло вот так. Далее, лежит X-координата яркой точки с последнего запрошенного отрезка, и это оказался ноль (немудрено). За ней номер строки, 0x28 = 40. И наконец, максимальная яркость на последнем запрошенном отрезке, 0xFFF, что соответствует нулевой яркости.

А дальше как были нули - так и остались.


За это надо бы выпить! А потом наконец-то опробовать "на железе". Правда, одну-единственную строку программы я так и не увидел "в действии", это метка @@DoMerge. Но увы, на этом тестовом изображении действительно она не должна была сработать. Для отработки этой "ветви" мне нужно добавить на тестовое изображение паразитную засветку Солнцем, огромное пятно, эдак 20х20 пикселей, серединка в насыщении, некоторый спад к краям. По-хорошему, оно должно дать нам ВСЕГО ОДНУ НОВУЮ ЗАПИСЬ (я их упорно точками зову, хотя правильнее: ПЯТНА), но с огромным Size.

Poll #2104754 Отладка QuatCore GPU

Чем дальше заняться?

Отработать на симуляции "слияние точек" (нахождение гигантских пятен)
1(20.0%)
Запустить "в железе" как есть
4(80.0%)
Tags: ПЛИС, программки, работа, странные девайсы
Subscribe

  • Великая Октябрьская резня бензопилой

    Сегодня прокатился прочистить Абрамцевскую просеку. Как обычно, с приключениями. Выезжал на велосипеде, а вернулся на самокате. Первый раз по этим…

  • Очередная несуразность в единицах измерения

    Когда-то я написал программу PhysUnitCalc - калькулятор, умеющий работать с размерностями. Мне казалось, что я наступил уже на все грабли, которые…

  • Big Data, чтоб их... (3)

    "В предыдущих сериях": мой прибор выдаёт 6 значений: 3 координаты и 3 угла, т.е все 6 степеней свободы твёрдого тела. Причём ошибки измерения этих 6…

  • Покрышки с взрывным характером

    Продолжаю кататься на велосипеде на работу и назад, а также время от времени в РКК Энергию. С 17 мая (когда решил записывать, сколько проехал,…

  • Big Data, чтоб их... (2)

    Вчера получил упоротое уравнение, чтобы найти, с какими весами нужно брать результаты измерений, чтобы получить наименее шумную и при этом…

  • Big Data, чтоб их...

    Решил всё-таки вывести оптимальную обработку N измерений x k, каждое по M компонент (т.е вектор M×1), и на каждое дана своя ковариационная…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 3 comments