Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Category:

Рихтовка алгоритма

Вчера провел небольшую "работу над ошибками" и нашел кое-какие мелкие "ашипки и очепятки", которые приводили к получению черт-те чего, но не того, что было нужно.
res
Все картинки "в куче" (точность поверхности — 50нм). Осторожно, аж полмегабайтная gif'ка!
Пока что я и не думал об оптимизации: просто пробежался по полученной маске зеркала и в каждый "пиксель" с ненулевыми значениями маски "швырнул" N фотонов. N изменял от десяти тысяч до десяти миллионов. Так как заполнение матрицы изображения у меня выполняется только при помощи CPU (ну не работает почему-то у меня в куде атомарный инкремент!), сложно сказать, чьего вклада здесь больше. "Прямая" на графике "время/количество фотонов" получилась какой-то кривоватой. Возможно, еще неплохую роль сыграло то, что экспериментировал я с довольно "кривым" зеркалом, из-за чего от опыта к опыту количество ненулевых пикселей на маске менялось (в среднем их значение плавало около 29400).
Вот по этой табличке
N, тысяч штукT, секунд
1050
5073
100102
200160
500303
1000556
20001128
50002541
100004826
получился такой график:
graph
Время работы программы в зависимости от количества фотонов на пиксель маски
Грубая линейная аппроксимация дала: T = 4.7991·10¯⁴N + 76.438. Многовато будет: есть еще куда оптимизировать.
Так как маска у меня была маленькая (256×256 пикселей), максимальная интенсивность на изображении была несколько (примерно на 35%) меньше количества "фотонов" на пиксель маски. Увеличивать маску я не стал ­— уж очень долго бы процесс подсчета проходил.
Кстати, оказалось, что модель моя кривая: независимо от количества фотонов пики пятен представляли собой вот такое уродство:
2013.02.07_09:38:37
Распределение энергии в моделируемом пятне
при том, что ожидалась форма куда как более гладкая! Сдается мне, что тип float был выбран неудачно. Надо попробовать с double (правда, прощай производительность!).
В общем, работать еще и работать! P.S. код я выложил на сосфорж.
Tags: cuda, гартманнограмма, математическое моделирование
Subscribe

  • А как народ книжки покупает?

    Вот хочу почитать относительно свеженького Гонсалеса-Вудса. Читалки формата А4 у меня, к сожалению, нет. Смотрю на бумажную версию: 113 баксов(!!!)…

  • M$ teams…

    Начал с сегодняшнего дня студентам ЮФУ удаленно лекции читать. У них все завязано на различные корпорации зла. И базовая работа - через teams. ОК,…

  • Почему systemd — дерьмо

    Уже давно на эту статейку натыкался, но все забывал в "закладки" добавить. Вот, добавляю: "systemd — отстой". Советую эту статейку почитать…

promo eddy_em september 3, 12:13 8
Buy for 10 tokens
Уже больше полугода занимаюсь разработкой, вот, наконец-то в мастерских взялись за меня и начали выдавать первые детали. Сегодня сделал тестовую сборку (как обычно, местами пришлось "доработать напильником"): Пока прибор без названия (да и как-то не лезет в голову ничего, у меня нет…
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 5 comments