A A A A Автор Тема: Мой LINZIK еще не ZEMAX, но ...  (Прочитано 50089 раз)

0 Пользователей и 1 Гость просматривают эту тему.

datumn

  • Гость
Re: Мой LINZIK еще не ZEMAX, но ...
« Ответ #140 : 30 Апр 2008 [11:58:26] »
Линзик 0.7: http://www.linzik.com/download/linzik_0_7_Rus_Setup.exe

Добавлена поддержка вычислений на многопроцессорных видеоадаптерах, совместимых с технологией NVIDIA CUDA. Новые функции [nv_srms..] и [nv_maxr..] рассчитывают характеристики пятен, трассируя все лучи одновременно через программу параллельных вычислений на процессорах видеоадаптера. Получается ускорение от 2 до 10-ти и более раз по сравнению с функциями [srms..] и [maxr..] вычисляемыми центральным процессором. Выигрыш тем сильнее, чем больше оптических поверхностей в схеме.

Для работы с новыми функциями через CUDA потребуется специальный драйвер. В настоящее время (апрель 2008) такой драйвер есть только для Windows XP. Список устройств, совместимых с CUDA: http://www.nvidia.ru/object/cuda_learn_products_ru.html

Огромная благодарность Дмитрию Маколкину за его совет поработать в направлении GPGPU!

На скриншоте показан тест, в котором NVIDIA GeForce 8800GT трассирует пучок из 339 лучей 6607 раз в секунду через 10 поверхностей. Это в 6.7 раза быстрее, чем получается у центрального процессора Intel Pentium E2180 2 Ггц:

Оффлайн blackhaz

  • Первооткрыватель переменных звезд
  • *****
  • Сообщений: 2 469
  • Благодарностей: 44
  • Максим
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от blackhaz
Re: Мой LINZIK еще не ZEMAX, но ...
« Ответ #141 : 30 Апр 2008 [12:21:07] »
Аркадий, уважуха!! Искренне желаю развития проекта. Когда увидим гордые стикеры "This APO was designed in LINZIK"?  :)

Онлайн Дмитрий Маколкин

  • *****
  • Сообщений: 15 281
  • Благодарностей: 1463
  • всяко разно
    • Skype - dmitrymakolkin
    • DeepSkyHosting: dvmak
  • Награды Призер конкурса астрофото
    • Сообщения от Дмитрий Маколкин
    • Панорамы Луны
Re: Мой LINZIK еще не ZEMAX, но ...
« Ответ #142 : 30 Апр 2008 [12:22:27] »
Прирост скорости в 6 с лишним раз более чем впечатляющ!
Думаю, особенно хорошо это почуствуется в таких методах расчётов, как глобальная оптимизация с использованием методов, связанных с большим количеством расчётов. Кстати, можно попробовать сравнить скорость счёта с земаксом, который поддерживает многоядерность и имеет встроенный показометр, в том числе и трассирует лучи, но там не очень понятно, сколько их там он прогоняет. Попробую в праздники с ним поковыряться, чтобы иметь возможность сравнить скорость...

Жизнь устроена несправедливо, буквально вчера купил новое железо для апгрейда компа, и среди прочего - карточку ATI...
« Последнее редактирование: 30 Апр 2008 [12:26:15] от dvmak »
Панорамы Луны в моей галерее:
http://www.makolkin.ru/Gallery/gallery.html
Мои дипы: https://deepskyhosting.com/dvmak

datumn

  • Гость
Re: Мой LINZIK еще не ZEMAX, но ...
« Ответ #143 : 30 Апр 2008 [14:02:15] »
Аркадий, уважуха!! Искренне желаю развития проекта. Когда увидим гордые стикеры "This APO was designed in LINZIK"?  :)

Спасибо, Максим! Если серьезно, то для расчетов АПО-телескопов такие технологии не очень нужны, там относительно немного поверхностей :)

Прирост скорости в 6 с лишним раз более чем впечатляющ!
Думаю, особенно хорошо это почуствуется в таких методах расчётов, как глобальная оптимизация с использованием методов, связанных с большим количеством расчётов. Кстати, можно попробовать сравнить скорость счёта с земаксом, который поддерживает многоядерность и имеет встроенный показометр, в том числе и трассирует лучи, но там не очень понятно, сколько их там он прогоняет. Попробую в праздники с ним поковыряться, чтобы иметь возможность сравнить скорость...

Конечно, при 112 процессорах на этом GeForce можно было ждать скорости и получше ;)
Здесь имеем 339*6607 = 2 239 773 луч/с.

Если протестировать эту схему в Zemax, то получим 693 000 луч/с на одном процессоре Intel Pentium E2180 2 Ггц (и примерно вдвое больше на двух) против 339*984 = 333 576 луч/с в Линзике на одном процессоре. То есть код Zemax, трассирующий лучи на центральном процессоре, сейчас работает вдвое быстрее такого же кода Линзика и втрое медленнее, чем код Линзика для GeForce.

Но GeForce покажет себя значительно лучше с увеличением кол-ва лучей и введением в язык новых функций, вычисляющих за одно обращение к плате характеристики сразу всех пятен по всему полю - а не только одного пятна как сейчас. Тогда снизится процент времени, расходуемый на подготовку платы к старту и, скажем, целевая функция, состоящая из 3-х [nv_srms..] выполнится почти втрое быстрее.

Оффлайн LifeIsGood

  • *****
  • Сообщений: 5 959
  • Благодарностей: 48
  • Мне нравится этот форум!
    • Skype - dennissakva
    • Сообщения от LifeIsGood
Re: Мой LINZIK еще не ZEMAX, но ...
« Ответ #144 : 30 Апр 2008 [15:06:22] »
Аркадий, Ваш прогресс просто поражает! Дел во много раз больше чем слов. Редко кому такое под силу.

Оффлайн Карбарасик

  • ****
  • Забанен!
  • Сообщений: 311
  • Благодарностей: 0
    • Сообщения от Карбарасик
Re: Мой LINZIK еще не ZEMAX, но ...
« Ответ #145 : 30 Апр 2008 [15:45:02] »
Класс ! Этак и н етолкьо лучи можно трассирвоать, но много ечего другого. Побежал ставить себе драйвера.

Оффлайн VD

  • *****
  • Сообщений: 13 235
  • Благодарностей: 500
    • Сообщения от VD
Re: Мой LINZIK еще не ZEMAX, но ...
« Ответ #146 : 01 Мая 2008 [09:28:40] »

Здесь имеем 339*6607 = 2 239 773 луч/с.



наверное все же  луч-поверхность/сек


Аркадий, и мои поздравления тоже.  У меня, так,  в фоновом режиме (основанном только на виде скриншотов и обсуждения в теме), накопилось изрядное количество замечаний-рекомендаций. Однако они не первостепенного характера и я не стану вас отвлекать ими на данном этапе, пока продукт еще сыроват.  Если вам будет интересно, я потом, когда вы во многом закончите продукт, пришлю вам список замечаний-рекомендаций.  Конечно, если мы опять с вами не рассоримся по пустякам.
« Последнее редактирование: 01 Мая 2008 [09:35:37] от VD »
Жизнь слишком коротка и хорошее небо слишком редко бывает, чтобы тратить его наблюдая с плохим оборудованием. (с) Roland Christen.

Солнечная активность в Н-а - самая динамичная и неотразимая вещь, которую вы можете видеть в телескоп; поэтому тратьте соответственно!(с) Bob Yoesle.

datumn

  • Гость
Re: Мой LINZIK еще не ZEMAX, но ...
« Ответ #147 : 01 Мая 2008 [10:11:21] »
Всем спасибо за хорошие слова :)


Здесь имеем 339*6607 = 2 239 773 луч/с.



наверное все же  луч-поверхность/сек

Нет, именно лучей в секунду. Здесь пятно состоит из 339 лучей (3 цвета по 113 лучей) и оно рассчитывается 6607 раз в секунду. Так и получается 2 239 773 луч/с. Каждый луч проходит через 11 поверхностей. Значит это 2 239 773*11 = 24 637 503 луч-поверхность/сек.

У Zemax в этой схеме на одном процессоре получается 693 000 rays per second и 7 630 000 ray-surfaces per second соотвeтственно.

У меня, так,  в фоновом режиме (основанном только на виде скриншотов и обсуждения в теме), накопилось изрядное количество замечаний-рекомендаций. Однако они не первостепенного характера и я не стану вас отвлекать ими на данном этапе, пока продукт еще сыроват.  Если вам будет интересно, я потом, когда вы во многом закончите продукт, пришлю вам список замечаний-рекомендаций.

Конечно интересно. Если можно, то давайте сейчас - тоже обдумаю в фоновом режиме :)

Оффлайн VD

  • *****
  • Сообщений: 13 235
  • Благодарностей: 500
    • Сообщения от VD
Re: Мой LINZIK еще не ZEMAX, но ...
« Ответ #148 : 01 Мая 2008 [10:53:25] »


Конечно интересно. Если можно, то давайте сейчас - тоже обдумаю в фоновом режиме :)

Нет, давайте все-же так:  когда вы сочтете продукт более или менее готовым, я поработаю с ним некоторое время в тогда представлю вам свой список пожеланий, замечаний и советов.  Так будет легче и мне и вам и результат будет тоже лучше.
Жизнь слишком коротка и хорошее небо слишком редко бывает, чтобы тратить его наблюдая с плохим оборудованием. (с) Roland Christen.

Солнечная активность в Н-а - самая динамичная и неотразимая вещь, которую вы можете видеть в телескоп; поэтому тратьте соответственно!(с) Bob Yoesle.

Оффлайн Максим Гераськин

  • *****
  • Сообщений: 3 911
  • Благодарностей: 27
  • Мне нравится этот форум!
    • Сообщения от Максим Гераськин
Re: Мой LINZIK еще не ZEMAX, но ...
« Ответ #149 : 03 Мая 2008 [16:11:34] »
Вот это да ! Новый оптический CAD - сильно, позвольте засвидетельствовать мое глубочайшее почтение.
Сам я, будучи студентом, в начале девяностых участвовал в программировании ОПАЛ - в основном графика и кое-какие системные вещи для ДОС, типа своппинга.
Эх, "оптическое" сильно позабылось, увы.

Спрошу насчет того, что сейчас поближе. Язык Линзик - это интерпретатор или имеет меcто компиляция в p-код и затем уже p-код исполняетя на p-машине ?
Я недавно как раз занимался схожими вещами ( интерпретация языка) , разница по скорости существенна, особенно если оптимизировать триады  push/push/op через "регистры".
« Последнее редактирование: 03 Мая 2008 [17:01:29] от Максим Гераськин »

datumn

  • Гость
Re: Мой LINZIK еще не ZEMAX, но ...
« Ответ #150 : 03 Мая 2008 [19:52:38] »
Вот это да ! Новый оптический CAD - сильно, позвольте засвидетельствовать мое глубочайшее почтение.
Сам я, будучи студентом, в начале девяностых участвовал в программировании ОПАЛ - в основном графика и кое-какие системные вещи для ДОС, типа своппинга.
Эх, "оптическое" сильно позабылось, увы.

Спрошу насчет того, что сейчас поближе. Язык Линзик - это интерпретатор или имеет меcто компиляция в p-код и затем уже p-код исполняетя на p-машине ?
Я недавно как раз занимался схожими вещами ( интерпретация языка) , разница по скорости существенна, особенно если оптимизировать триады  push/push/op через "регистры".

Приятно слышать квалифицированно-прочувствованный отзыв о работе, спасибо.

Линзик - это в самом деле не просто интерпретатор, а компилятор в промежуточный код. Есть виртуальная машина, для которой делаются команды и ну и т д. С учетом того, что вычисление функции типа [srms ..] довольно длительное, промежуточный код не очень продвинутый пока, но и не примитивный.

datumn

  • Гость
Re: Мой LINZIK еще не ZEMAX, но ...
« Ответ #151 : 03 Мая 2008 [19:58:32] »
Уважаемые пользователи-тестеры! В архиве Линзика 0.7 есть недочет, относящийся к NVIDIA CUDA - я не включил в его состав cudart.dll.

Исправлено, ссылка та же: http://www.linzik.com/download/linzik_0_7_Rus_Setup.exe
новый размер 1114415 байт

Большое спасибо уважаемому Asafan'у за найденный недочет в архиве.

datumn

  • Гость
Re: Мой LINZIK еще не ZEMAX, но ...
« Ответ #152 : 07 Мая 2008 [17:42:21] »
Линзик 0.8: http://www.linzik.com/download/linzik_0_8_Rus_Setup.exe

Оптимизировано взаимодействие программы с CUDA: функции [nv_srms..] и [nv_maxr..] работают на ~30% быстрее чем в версии 0.7.

Новые функции для вычислений на CUDA позволяют за одно обращение к ним вычислить характеристики пятен для всего поля - 2-х или 3-х углов соответственно. Например, функция [nv_2_srms..] выполняется почти за такое же время как и [nv_srms..], а эквивалентнa при этом [nv_srms..] + [nv_srms..].

Оптимизирован код трассирования лучей на центральном процессоре. Новые функции [cp_srms..] и [cp_maxr..] вычисляются вдвое быстрее, чем [srms..] и [maxr..] соответственно.

Новые функции [cp_2_srms..] и [cp_2_maxr..] эквивалентны суммам двух [cp_srms..] или [cp_maxr..], но при наличии в системе двух центральных процессоров будут вычислены почти вдвое быстрее.

* * *

Собственно трассирование лучей (без подсчетов RMS и т.д.) с использованием только одного или двух центральных процессоров  уже делается в ~1.5 раза быстрее, чем у Zemax 8)

Оффлайн DK

  • *****
  • Сообщений: 974
  • Благодарностей: 16
    • Сообщения от DK
Re: Мой LINZIK еще не ZEMAX, но ...
« Ответ #153 : 18 Мая 2008 [14:26:49] »
Аркадий,

На ХР-64 0.8 даже не стартует.

Хотелось бы более гладких кривых продольной аберрации, но я подозреваю, что это конфигурируемо.

Дмитрий

datumn

  • Гость
Re: Мой LINZIK еще не ZEMAX, но ...
« Ответ #154 : 18 Мая 2008 [15:06:06] »
Аркадий,

На ХР-64 0.8 даже не стартует.

Дмитрий, спасибо за сообщение. Только что проверил на XP 64: версии до 0.6 включительно благополучно запускаются, а 0.7 и 0.8 нет. Причина примерно понятна, попробую исправить.

Цитата
Хотелось бы более гладких кривых продольной аберрации, но я подозреваю, что это конфигурируемо.

Можно в поле "Rays:" дать бОльшее число. Я нарочно оставил рисование этих кривых "как есть", чтобы лучше чувствовать грубость приближений при малом кол-ве лучей.

datumn

  • Гость
Re: Мой LINZIK еще не ZEMAX, но ...
« Ответ #155 : 19 Мая 2008 [12:25:08] »
Линзик 0.81:

http://www.linzik.com/download/linzik_0_81_Rus_Setup.exe

http://www.linzik.com/download/linzik_0_81_Eng_Setup.exe

Исправлена ошибка, из-за которой версии 0.7 и 0.8 не работали в 64-х разрядных Windows.

Работа функций [nv_...] здесь обеспечивается не CUDA 1.1, а CUDA 2.0 BETA - для совместимости с Vista; если планируется использование этих функций, то загрузите подходящую новую версию драйвера.
« Последнее редактирование: 19 Мая 2008 [12:26:45] от Arkady »

Оффлайн Vova

  • *****
  • Сообщений: 1 358
  • Благодарностей: 25
  • Владимир Гусев
    • Сообщения от Vova

Оффлайн aix357

  • *****
  • Сообщений: 706
  • Благодарностей: 1
    • Сообщения от aix357
Re: Мой LINZIK еще не ZEMAX, но ...
« Ответ #157 : 23 Мая 2008 [12:13:41] »
2 Arkady

извиняюсь, не могли бы вы отослать последнюю версию мне на мэйл?
"Хочешь сделать что-то хорошо - сделай это сам!"

datumn

  • Гость
Re: Мой LINZIK еще не ZEMAX, но ...
« Ответ #158 : 23 Мая 2008 [12:23:30] »
2 Arkady

извиняюсь, не могли бы вы отослать последнюю версию мне на мэйл?

Только что выслал.

Оффлайн aix357

  • *****
  • Сообщений: 706
  • Благодарностей: 1
    • Сообщения от aix357
Re: Мой LINZIK еще не ZEMAX, но ...
« Ответ #159 : 26 Мая 2008 [09:57:49] »
Только что выслал.

спасибо большое! - тогда не мог поблагодарить по причине глюков с интернетом :(

у меня вопрос про новую версию:
  вылетает ошибка при запуске! - драйверов каких-то не хватает?
"Хочешь сделать что-то хорошо - сделай это сам!"