A A A A Автор Тема: РОС - программа расчёта оптики телескопов  (Прочитано 87810 раз)

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

Оффлайн ekviАвтор темы

  • *****
  • Сообщений: 7 049
  • Благодарностей: 406
    • Сообщения от ekvi
подчистить последнюю беседу, которая явно вываливается из контекста темы
Возвращая с рецензии мой черновик "Курса лекций", Владимир Герасимович Кукс (Д.А. Серёгин должен его знать) сказал мне: "У нас принято, чтобы в технических  текстах не было эмоций". Я согласился с ним и "прочесал" весь Курс от экспрессии. И впредь следую его совету.
А в остальном Дискуссия получилась не столько назидательная, сколько во многом обоюдо полезная.
« Последнее редактирование: 21 Июл 2020 [11:45:08] от ekvi »

Оффлайн ekviАвтор темы

  • *****
  • Сообщений: 7 049
  • Благодарностей: 406
    • Сообщения от ekvi
менять раздел
Деймос, я не обижусь, если Вы перебросите тему "Наши программы расчёта оптических телескопов" в раздел "Телескопостроение и оптика", где она и родилась первоначально.

Оффлайн ekviАвтор темы

  • *****
  • Сообщений: 7 049
  • Благодарностей: 406
    • Сообщения от ekvi
Продолжаю "пропалывать" РОС от сорняков: https://yadi.sk/d/vviS6jkzxqKq4
Однако при полном тестировании к концу поля ИГ бледнеет. Придётся разыскивать причину.

Оффлайн xd

  • *****
  • Сообщений: 17 982
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Выглядит как накопление ошибок преимущественно в одну сторону при интегрировании.
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн ekviАвтор темы

  • *****
  • Сообщений: 7 049
  • Благодарностей: 406
    • Сообщения от ekvi
Да, такое бывает, когда зрачковую функцию модернизирует какая-то опция.
Но устранял как раз модификацию PF, которая производилась в прежней редакции РОС.
Придётся снова проводить ревизию кода.

Оффлайн ekviАвтор темы

  • *****
  • Сообщений: 7 049
  • Благодарностей: 406
    • Сообщения от ekvi
накопление ошибок преимущественно в одну сторону при интегрировании.
Причиной была собственная ляпа (как обычно!) и халтура компилятора:
1. "Изобрёл" опцию обнуления квадратных матриц вместо их удаления и повторного создания, да в параметрах указал не общее число элементов, а только сторону матрицы (не q*q, а только q!), но, забыв об этом, обращался как zeroDim(name,q*q).
2. Компилятор благодушно проспал это несоответствие, и бедная программа надсажалась, выручая нас обоих, пока однажды не крякнула, выказав причину ошибки.
Теперь одиночный и полный тесты идентичны: см. илл., где одиночный тест (крупный фрагмент) вписан рядом с общим тестом.

Давно замечал, что компилятор халтурит, демонстрируя свою стремительность, а на деле компилируя только текущие изменения.
Придётся найти "промокашку", на которую записываются текущие изменения, вносимые при редактировании кода и понуждать (хотя бы иногда) Дельфи тщательно компилировать весь проект.
Такого удаётся достичь, удаляя все *.dcu-файлы, но это слишком длинно.

Оффлайн xd

  • *****
  • Сообщений: 17 982
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
2. Компилятор благодушно проспал это несоответствие, и бедная программа надсажалась, выручая нас обоих, пока однажды не крякнула, выказав причину ошибки.
Откуда компилятору знать, что программист имел в виду, если написал он то, что написал? ::)
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

Оффлайн ekviАвтор темы

  • *****
  • Сообщений: 7 049
  • Благодарностей: 406
    • Сообщения от ekvi
Таки задал себе труд: соптимизировал две системы - Райта и АПО, сначала на float = extended (10 байт), затем перевёл программу на float = double и повторил оптимизацию обеих систем. Результаты представляю:
 - на этом заканчивают свою работу оптимизаторы при 10 и 8 байтах (10б = extended и без добавления "2" к названию файла, 8б = double = 'name + 2') при оптимизации АПО.
Райт не так показателен, поэтому приведены результаты только для АПО, причём на 10 байтах оптимизатор был остановлен, т.к. не видно было конца его работы.

Оффлайн ekviАвтор темы

  • *****
  • Сообщений: 7 049
  • Благодарностей: 406
    • Сообщения от ekvi
Здесь - в том же порядке сами системы после оптимизации.
Так что при всём уважении, Дмитрий Александрович, и почтении к коллегам-программистам, никакие Qt нам не нужны!

Оффлайн ekviАвтор темы

  • *****
  • Сообщений: 7 049
  • Благодарностей: 406
    • Сообщения от ekvi
Райт - для полноты картины.

Оффлайн ekviАвтор темы

  • *****
  • Сообщений: 7 049
  • Благодарностей: 406
    • Сообщения от ekvi
... и параметры систем Райта: 10б несопоставимо глубже 8-ми.
С точки зрения изготовителя 10б- и 8б-оптимизаторы предлагают совершенно разные системы.
То, что выходные характеристики (в случае Райта) у систем одинаковые, говорит о широте "долины минимума" у критерия качества этой системы, поэтому 10б-оптимизатор и не смог спустить её минимум ниже.
« Последнее редактирование: 27 Июл 2020 [22:00:55] от ekvi »

Оффлайн ekviАвтор темы

  • *****
  • Сообщений: 7 049
  • Благодарностей: 406
    • Сообщения от ekvi
Подводя итог проведённого сопоставления, должен высказать два наблюдения.

1. Как Windows стала стандартом взаимодействия операционки с пользователем, точно также и Дельфи является эталоном технологии визуальной разработки Windows-приложений. Как Windows - не изобретение Б. Гейца, но именно его команде удалось разработать этот стандарт, так и Дельфи-технология - не изобретение фирмы Борланд, но именно ей принадлежит первенство в этой области. Хотят того разработчики своих IDE (VS, Qt и т. п.), или не хотят, а вынуждены с каждой новой версией дорабатывать свои системы, чтобы они соответствовали этим "стандартам" эргономики.

2. По поводу "глобальной" оптимизации. Повторюсь: рамки ТЗ позволяют говорить лишь о локальной оптимизации. Например, фотокамера CANON требует, чтобы последний отрезок Sp' в вашем "девайсе" был не менее 35 мм; верхним пределом для Sp' будет ЦЭ, вносимое фотоприёмным устройством. Точно такие же "вилки" выставляет ТЗ и по другим параметрам: по фокусу, по габаритам и т.д. Поэтому оптимизатор будет искать не вообще лучшую комбинацию из заданных оптических элементов, а в рамках ТЗ, т.е. локальное решение. При "открытии"  системы Гамильтона я заметил, что при полной свободе ВСЕХ переменных оптимизатор приходит к этой системе только при определённом начальном значении Sp' - это как положение точки бифуркации. Наверняка в каждой ОС есть несколько таких точек, задающих оптимизатору конечный пункт назначения. Со временем будет развит матаппарат для вычисления этих точек, но пока вот так, на уровне интуиции.
« Последнее редактирование: 29 Июл 2020 [17:16:37] от ekvi »

Оффлайн ekviАвтор темы

  • *****
  • Сообщений: 7 049
  • Благодарностей: 406
    • Сообщения от ekvi
Ещё один эксперимент.
Читаю Мануал к Земаксу. Автор говорит (пересказываю своими словами): "Не увлекайтесь большим числом прогоняемых через ОС лучей - того же результата вы можете достичь и при значительно меньших затратах" - ?!  Было это давно, лет 15 назад. Автор, поди, и сам не раз уже покаялся в сказанном. Но слово - не воробей.
Сегодня, отлаживая работу РОС с потоками, установил 2 зоны, 2 угла поля и 3 линии спектра (допустимый минимум). Оптимизатор выдал потрясающий результат, как бы в унисон утверждению автора Земакса, система получилась изумительно похожая на катадиоптрик В. Теребижа (см. илл.).

Оффлайн ekviАвтор темы

  • *****
  • Сообщений: 7 049
  • Благодарностей: 406
    • Сообщения от ekvi
Своё изумление перевожу в число - устанавливаю 17 линий спектра и повторяю тесты - FullTest и просто Тест  - см. илл.
Монохром-тесты и Кш даже не вздрогнули, а вот остальные ... Причина парадокса становится понятной по последнему тесту (pars17Lam).
Вспомнился тест Гартмана: между дырочками в его диафрагме может такое твориться ... - совсем как на тест-линейке только что протестированного АПО.
« Последнее редактирование: 30 Июл 2020 [16:03:27] от ekvi »

Оффлайн ekviАвтор темы

  • *****
  • Сообщений: 7 049
  • Благодарностей: 406
    • Сообщения от ekvi
Эксперименты продолжаются.
Повысил приоритет параллельных потоков - с tpNormal до tpHeighest (это - предпоследний, выше - только реального времени).
- На 2х-ядерном скорость возросла с 1.4 до 2.1х,
- на 4х-ядерном - с 3 до 3.8х.
- 2х-ядерный 4х-поточный тоже откликнулся - 2.1х => 2.8х.
Операционка уже не ищет, кому бы ещё услужить, а работает, как положено, на клавиатуру и мышь откликается.
Новая версия РОС - по старой ссылке: https://yadi.sk/d/vviS6jkzxqKq4.

Оффлайн ekviАвтор темы

  • *****
  • Сообщений: 7 049
  • Благодарностей: 406
    • Сообщения от ekvi
На странице МПО правого блокнота ввёл групЧекБокс, чтобы пользователь мог сам выбрать приоритет для параллельных потоков (1 илл.) - вплоть до реального времени.
Хотя 2х-ядерный 4х-поточный и позиционирует себя как 4х-ядерный (илл. 1), но скорость его счёта (по сравнению с последовательным режимом) сильно отличается от скорости счёта реального 4х-ядерщика (на 2й илл. - Ку для 4х физических ядер, на 3й - результат работы 4х поточного процессора). Однако считает быстрее всех именно 2х-ядерный 4х-поточный - Intel и тактовая частота у него в 2 раза выше, чем у 4Good, и за счёт внутренней организации скорость Интела не в 2, а в 6 раз выше Гудовского.

Примечание.
Не пытайтесь выжать из 2й илл. более того, что от неё осталось: на 4good-ноуте разрешение 1900х1200 - такие полотна Форум не поднимает! Попытка понизить размер илл. приводит к искажениям по всему рисунку. Вот и остался от илл. только этот пшик с Ку ...
« Последнее редактирование: 01 Авг 2020 [12:52:48] от ekvi »

Оффлайн ekviАвтор темы

  • *****
  • Сообщений: 7 049
  • Благодарностей: 406
    • Сообщения от ekvi
Предупреждение о том, что одновременная работа всех ядер, скорее всего, является аварийной, чем штатной, оказалось реальностью. При установке высшего приоритета процессор сразу рванул в карьер, так, что выскочило предупреждение о превышении температуры ЦП 70 градусов по цельсию. Затем стало спокойней, AIDA64 фиксирует вилку: то 62С, то 68С с тенденцией зайти за 70С (см. илл.)
Такова ситуация с ноутбуком, у которого нет вентиляторов. На стационаре всё полегче: выше 60С вентиляторы не позволяют температуре подняться. В моём присутствии. А если я выйду, и в это время вентилятор крякнет? - как сейчас принято отнекиваться: NO VARANTY!
А вы говорите: "не рекламные ..."
« Последнее редактирование: 01 Авг 2020 [12:35:00] от ekvi »

Оффлайн AP

  • ***
  • Сообщений: 144
  • Благодарностей: 10
  • Мне нравится этот форум!
    • Сообщения от AP
Возможно я что-то неправильно делаю. Пробовал ставить 12 и 24 ядра и Zon 9, Stars 11. Загрузка в обоих случаях под 100%, коэффициент порядка 16. Но вычисления останавливал сам.

Оффлайн ekviАвтор темы

  • *****
  • Сообщений: 7 049
  • Благодарностей: 406
    • Сообщения от ekvi
Пробовал ставить 12 и 24 ядра
Число ядер РОС определяет сам - для справки Пользователю.
Загрузка в обоих случаях под 100%
Теперь операционка грузит процессор, как положено.
коэффициент порядка 16.
Вот это - главная информация от Вас! Мой 4х-поточный тоже начал иногда выдавать Ку, близкий к 4м.
Теперь на наивысшем приоритете операционка сосредоточивается только на РОС и выжимает из процессора всё возможное.
Следите за температурой! Я уже на ноуте боюсь считать - только с вентилятором.
Но вычисления останавливал сам
Да - это так. Нужно на стр.МПО правого блокнота задать Fgmn = 1e-7 -  и оптимизатор станет останавливаться сам.
« Последнее редактирование: 01 Авг 2020 [18:40:05] от ekvi »

Оффлайн AP

  • ***
  • Сообщений: 144
  • Благодарностей: 10
  • Мне нравится этот форум!
    • Сообщения от AP
Число ядер РОС определяет сам - для справки Пользователю.
Если это справочный параметр, возможно стоит сделать окно только для вывода.

В РОС полная загрузка получается при увеличениии частоты сетки. В Zemax в режиме Hammer задействуются все ядра вне зависимости от плотности сетки. Возможно какой-то другой механизм для загрузки по потокам.