четверг, 29 декабря 2011 г.

ПредНовогодняя CAE дискриминация

Добрый день. В предверии новогодних праздников все подводят свои итоги, публикуют достижения блогов за год и прочие приятные для авторской души вещи. Я решил это дело перенести на более позднее время, а перед новым годом сделать небольшой подарок интернет жителям. Правда к сожалению не всем, а лишь тем, кто занимается инженерными расчетами. Но даже и в этом случае, к сожалению я не смогу осчастливить всех. На данный момент мой подарок пригодится лишь тем, кто использует в своей деятельности программный продукт Siemens Femap. Вот такая вот дискриминация. Я бы с радостью стал более "политкорректным", но увы. Тем не менее. Если Вы не пользуетесь FEMAP'ом, но вполне всерьез занимаетесь расчетами, я рекомендую пролистать по диагонали сегодняшнее сообщение. О причинах, как обычно в многословном приложении.
Итак, немного истории: более 5 лет назад приходилось заниматься достаточно большими динамическими задачами. При этом по ходу пьесы была постоянная нехватка ресурсов дискового пространства и машинного времени. Я не буду сейчас рассказывать про все проблемы, но основной проблемой было то, что надо было гонять по сети (причем не всегда локальной) большие массивы данных. Под большими я понимаю сотни гигабайт. Действительно приходилось. Не наша это была прихоть. И при этом сотни гигабайт это в ужатом варианте. 


Тогда то и возникла шальная мысль, о том, что эту проблему надо как-то решать. Была продумана методика, но с реализацией тогда возникли проблемы. О них в новогоднем посте сообщать не буду, но в целом, к данному вопросу возвращались не единожды, однако все это были по большей части досужие разговоры. Первые практические, а не теоретические результаты были получены в апреле сего года, но опять же не все так было хорошо. В надежде на скорое решение я даже начал серию публикаций, под общим названием Дела Архивные. Но отсутствие достойного решения, и интереса с Вашей стороны, уважаемые читатели, привели к тому, что тема отложилась на неопределенный период.

И вот, не смотря на то, что винчестеры стали больше, интернет доступнее, сеть быстрее, компьютеры мощнее, проблема работы и передачи по сети больших расчетных моделей, к сожалению не решилась, ибо вместе с ростом вычислительных возможностей выросли и размеры решаемых задач.

А по сему, в преддверии Нового Года, было решено выложить текущий вариант программы по сжатию инженерных данных (CAERA v0.9 = CAE Result Archiver). Как говорится, в безвозмездное пользование. Данная программа, уже работает и выполняет свои обязанности (как говорится: "на хлеб - намазывается"), но ограничений и оговорок пока хватает. Начну с плюшек и печенек, чтобы объяснить зачем такой "бесценный" подарок нужен, затем перейду к "не багам, но фичам" (с).

Итак. Плюшек много, но все они сводятся по сути к одной фразе, которую, в двух словах, можно описать так: 
данный программный продукт позволяет ужать базу с результатами с гигабайт до десятков мегабайт
Это не шутка, так как, не смотря на погоду, у нас не конец марта :)

Теперь ограничения, особенности прочая:
1. Femap. В данной реализации, как уже упоминалось, программа умеет работать только с Siemens FEMAP. Более того, программа пока, что переборчивая, и ей нужен Femap 10.2 и старше. Т.е. те, которые работают с форматом файлов *.modefem. В принципе не сверх большая проблема и с младшими, но там необходимо, кроме прочего тестировать на совместимость некоторых API функций. Так что пока, что этот пункт отложен. Также пока отложен пункт стыковки программы с другим программным обеспечением CAE. Это не сверх проблема, но на данный момент более насущными является вопрос отработки методик сжатия и распараллеливания процесса сжатия (об этом ниже).
2. Несколько версий Femap на одной машине. Если у Вас на машине установлены несколько различных версий Femap, то по умолчанию программа всегда будет вызывать, ту на которой сейчас висит сервер автоматизации. Обычно это последняя по времени установки ан машину версия ПО.
3. Совместимость версий. Данная особенность тесно связана с предыдущим пунктом. Файл, с которым Вы хотите работать (результаты из которого хотите ужать) должен быть той же версии, что и Femap запускающийся через API по умолчанию. Иначе программа будет вылетать с ошибкой, ибо при открытии неродной версии начинается конвертация, которая пока не предусмотрена алгоритмом работы предлагаемой программы. В принципе, это не проблема, Femap позволяет проводить конвертацию в обе стороны, так что достаточно просто пересохранить и все будет ок.
4. .Net. Для работы необходимо установить FrameWork 3.5 или выше. В принципе, это тоже сейчас не проблема.
5. Однопоточность. В данный момент программа работает в один поток на всех этапах:
  • открытие модели и получение результатов
  • сжатие данных и экспорт сжатых данных
  • экспорт сжатых данных обратно в Femap
Второй пункт мы точно поборем, ибо без него не смешно. Что же касается первого и последнего пункта то во первых они работают гораздо быстрее, а во вторых их тяжело распараллелить, особенно экспорт результатов. К тому же экспорт работает просто молниеносно, по сравнению со сжатием :)
6. Дружелюбность и юзабилити интерфейса. Пока что интерфейс выполнен в минималистическом стиле. Разобраться с ним не так уж и трудно, но не всегда очевидно. Кроме того он пока не встроен в интерфейс "родительского" ПО, что с одной стороны делает его более универсальным (в каком-то смысле), но с другой, гораздо менее удобным.
7. Объем обрабатываемых данных. С одной стороны получается, что максимальный эфект от сжатия проявляется на больших моделях, но с другой, пока не готовы отвечать за стабильную работу с моделями в которых вектора результатов больше 800 МБ. Это чисто программерский прикол, который связан с фрагментацией памяти, ибо на данный момент, программа для ускорения своей работы, запихивает в память сразу весь вектор, как единый кусок. На данный момент я на тестах еще не столкнулся с такой проблемой, но предыдущий вариант, который запихивал в память не один вектор, а сразу все затыкался на разных машинах на разном объеме.  На моей рабочей пределом были 1.2-1.5 ГБ.
8. Вносимая погрешность. Как я уже писал раньше, сама методика работает по тем же принципам, что и мультимедийное сжатие т.е. это потери при сжатии. На данный момент на тестах на реальных задачах, вносимая погрешность получается не выше 0.2%, что по большому счету можно считать не существенным в очень многих случаях.
9. Степень сжатия. Лучшим вариантом является использование CAERA совместно с любым из стандартных архиваторов (WinRAR, 7Zip), ибо именно в этом случае удается достигать высоких степеней компрессии. Файл обработанный с помощью CAERA имеет степень компрессии около 5, но в то же время имеет такую структуру, которая замечательно пакуется в десятки раз стандартными архиваторами. В дальнейшем, будет убран этап упаковки/распаковки программных файлов вручную, путем автоматизации данного процесса. Также будут подобраны более оптимальные сочетания настроек для сжатия.
10. Время сжатия. Во многом связана с пунктом 5. На небольших моделях время сжатия соизмеримо с временем счета. На больших задачах (линейная статика) время сжатия результатов существенно превышает время счета (десятки минут превращаются в часы). Если сравнивать время счета на равном количестве процессоров, то в целом, на данный момент сжатие в 2-4 раза дольше, чем расчет линейной статической задачи. Если же речь идет о нелинейных задачах, задачах на частоты или устойчивость, то в целом время получается соизмеримым и даже местами начинаем выигрывать. Однако для нормальной, не рекламной статистики нужно более глубокое тестирование.
Время распаковки, как уже упоминалось существенно меньше времени упаковки.
Если сравнивать время упаковки исходного файла результатов  с помощью CAERA и того же WinRAR, то тут тоже получается вполне сравнимое время, при существенно различающейся степени сжатия. Тем не менее, время сжатия более чем прилично, и есть возможность его существенно уменьшить. А раз так, то это будет сделано.
11. Future Releases. Направления дальнейших телодвижений полностью совпадает с описанными выше особенностями. В первую очередь будут развиваться способности по использованию преимуществ мультипоточности. Далее будут совершенствоваться инструментарий сжатия. Третим пунктом стоит юзабилити. И последним расширение списка инженерного ПО, с которым будет возможно использовать CAERA. На самом деле планов по развитию ПО много, но большинство из них упирается в пункт 12.
12. Time & Money. Большим ограничивающим фактором является необходимость уделять большое количество времени воспитанию подрастающего поколения (читай студентов) и зарабатыванию денег в количестве достаточном для поддержания жизненного уровня, как семей (а кому щас легко) так и кафедры, ибо на государство в этом плане положиться тяжело (оно само на кого хочешь положит). Соответственно, если у Вас есть вопросы по формам сотрудничества, инвесторства - пишите обсудим. Естественно, если есть люди перед которыми стоят определенные проблемы, и которые готовы компенсировать затраты связанные с их решением приоритеты развития программы могут быть пересмотренны.
13. Лицензия. В данный момент было принято решение, что в обозримом будущем исходники публиковаться не будут (не смотря на  всю мою любовь к Freeware и OpenSource). В то же время, чтобы быть максимально честным с собственной совестью и принципами, данное ПО будет распространяться бесплатно (н смотря на пункт 12). Ограничений на использование в личных и коммерческих целях данного ПО - не ставится. В то же время программа остается проприетарной, и на декомпиляцию, или включение ее в состав каки-то коммерческих (или не коммерческих) продуктов без согласия "правообладателей" не дается. Об авторах будет позже.

Если Вы, в своей практике не используете FEMAP, но хотите оценить работоспособность программы, Вы вполне официально можете скачать полнофункциональную версию с офф. сайта, и опробовать Femap  и CAEra в действии. Тем более что Femap в силу своей универсальности может импортировать сетку и результаты из очень большого списка CAE комплексов.
Если Вы не используете Femap и не собираетесь, но считаете, что было бы неплохо заполучить версию работающую с Вашим ПО - Вам к пнкту 11 или 12. Это зависит от того что Вам проще перенести  - финансовые траты или временные.

Немного статистики для затравки:
Две тестовые задачи.
Задача 1:
Файл в формате 10.2 с результатами:  193 МБ
Файл в формате 10.3 с результатами:  176 МБ
Файл в формате 10.3 без результатов: 74.8 МБ (соотв. результаты:100.8 МБ)

Файл после сжатия CAERA:                28.5 МБ
Файл после сжатия CAERA и 7Zip:    1.69 МБ

Задача 2.
Файл в формате 10.3 с результатами:  643 МБ
Файл в формате 10.3 без результатов: 69.6 МБ (соотв. результаты 573.4)

Экспортированные несжатые результаты: 1.05 ГБ (тут следует отметить что формат modefem судя по всему является сжатым сам по себе)

Файл после сжатия CAERA:                228 МБ
Файл после сжатия CAERA и 7Zip:     21.7



По времени (для задачи 2).
Время открытия, с экспортом результатов из Femap: 2 мин.
Время сжатия всех данных: 2ч 50 мин (на одном ядре)
Время сохранения сжатых данных 15 сек.
Время импорта сжатых данных в фемап 1.5 мин
Время упаковки сжатых данных с помощью 7Zip: 1 мин. 10 с.

Задача 3
Объем результатов  в формате 10.2:     6,46 Гб
Файл после сжатия CAERA:                1,02 Гб
Файл после сжатия CAERA и 7Zip:     205 Мб

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

Что касается авторов. Автором идеи и методики, как бы нескромно это не звучало, являюсь я. Более подробную информацию по моей личности можно узнать либо поискав в интернете, либо отправив запрос мне на почту (через профиль). Я в принципе не прячусь.
Автором одной из первых реализаций (не моих) является Роман Легостаев, студент нашей кафедры (ноне студент 4го курса). Автором текущей реализации (расшаренной для общего доступа) программы является Колос Иван (ноне студент 5го курса нашей кафедры).
Также следует сказать отдельное спасибо Николаю Анатольевичу Ткачуку, нашему Шефу, без которого все это давно бы загнулось.
Дальнейшая информация по проекту, новые версии и пр. будет появляться скорее всего на студенческом блоге кафедры  куда я и приглашаю всех заинтересованных. При распространении данной программы просьба делать ссылку либо сюда, либо на студблог. На последнем, есть небольшая инструкция по работе с программой.

Удачного Нового Года. А главное - Здоровья.

P.S.  Описанная версия уже "устарела" Новая версия доступна тут . Если Вам нужна версия 0.9 - напишите.

Английский вариант этого сообщения можно найти тут. Если конечно это можно назвать английским
English variant of this post can be read here. Sorry for my lossy english

11 комментариев:

  1. Задача 3 Is going. Посмотрим как ужмется 5Гб вполне реального проекта который приходилось многократно перегонять по сети импортному заказчику. Время на компрессию с точностью до минуты оценить не удастся (несколько раз "усыплял" ноут), но понятно что это часы. Кстати в плюс программы можно занести нормальную работоспособность после выхода из спящего режима - так что тут ни каких проблем нет.

    ОтветитьУдалить
  2. Время на компрессию можно будет оценить по вреемни создания файлов. Вектора одинакового размера должны ужиматься за +- одно время. Так что если заменить время сжатия векторов на которых машина усыплялась на соседние, должно получиться +- тоже самое.

    ОтветитьУдалить
  3. Upd 1. На студблоге выложена небольшая инструкция:
    http://studblog.tmm-sapr.org/2011/12/getting-started-with-caera.html
    по работе с программой. Ссылка добавлена в текст
    Upd 2. Знающие люди подсказали, что уже давно существует аналог: http://www.scai.fraunhofer.de/nc/en/business-research-areas/numerical-software/products/femzip.html
    Надеюсь что попозже получится сделать сравнительный тест.

    ОтветитьУдалить
  4. "Надеюсь что попозже получится сделать сравнительный тест." Мы принимаем бой =)

    ОтветитьУдалить
  5. Судя по релизам конкурента, там до конечного продукта как до неба. И неясно есть ли поддежка win7 64x. Короче будем посмотреть.

    ОтветитьУдалить
  6. "Мы принимаем бой, кричали они.. и проклятый лягушонок кричал громче всех" :)
    То что я как Маугли могу достать всех я и сам знаю :)

    Что касается конкурента. Нам до конечного продукта пока дальше, ибо они поддерживают несколько типов ПО и уже продают программу. А из чего такое мнение на счет 64х? Там вроде говорилось о результатахв формате win32. а это вроде не одно и то же.
    Для корректного сравнения придется модифицировать свой вариант, чтобы он работал с тем же типом ПО, иначе сравнения будут некорректнымми.

    ОтветитьУдалить
  7. Итого задача №3: 6,46 Гб -> 1,02 Гб -> 205 Мб

    ОтветитьУдалить
  8. К результатам сжатия неплохо было бы еще добавить статистику по вносимой погрешности. Интресно было бы посмотреть.

    ОтветитьУдалить
  9. цитата: "На данный момент на тестах на реальных задачах, вносимая погрешность получается не выше 0.2%"
    На разных векторах по разному но в целом 0.17-0.195%. Считается по методике ("исходное значение" - "разархивированное значение")/"амплитуду результатов"
    "амплитуда результатов" = "Макс значение"- "Мин значение".
    Сделано так, потому что интересует картина целом. Если делить на исходное значение то в районе 0 будем получать бесконечность.
    Могу привести график погрешности, но это просто хаотичная кривая с амплитудой 0.2%. А для модели с большим количеством узлов и элементов еще и очень плотный.
    В дальнейшем при модификации алгоритмов думаем вывести "спектральную плотность". Какой процент модели с какой ошибкой.

    ОтветитьУдалить
  10. В ближайшее время будет закончена новая версия.
    Базовые отличия:
    1. интеграция с Femap (встраивание меню непосредственно в меню Femap)
    2. более юзабельный фейс
    3. повышение скорости работы (программы CAERA).

    Вопрос. Кому-то нужно?

    ОтветитьУдалить

Related Posts Plugin for WordPress, Blogger...
Rambler's Top100