Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   CMaNGOS Commits (http://mangos.ytdb.ru/forumdisplay.php?f=38)
-   -   [11305] more safe code in vmaps and Field class (http://mangos.ytdb.ru/showthread.php?t=4030)

newsbot 02.04.2011 17:40

[11305] more safe code in vmaps and Field class
 
автор: Ambal


<pre>m src/game/vmap/BIH.cpp
m src/game/vmap/BIH.h
m src/game/vmap/WorldModel.cpp
m src/shared/Database/Field.h
m src/shared/revision_nr.h
</pre>
<pre style='white-space:pre-wrap;width:81ex'>[11305] more safe code in vmaps and Field class

Signed-off-by: Ambal <pogrebniak@gala.net></pre>




Дальше...

Ambal 02.04.2011 18:00

Кто-то может собрать мангос с '-fast-math' и глянуть не стали ли vmaps лучше себя вести?

rsa 03.04.2011 09:54

а конкретнее, какая именно опция нужна? в gcc -ffast-math не работает если используется оптимизация (любой уровень).
-ffast-math
Sets -fno-math-errno, -funsafe-math-optimizations, -ffinite-math-only,
-fno-rounding-math, -fno-signaling-nans and -fcx-limited-range.

Ambal 04.04.2011 21:29

Именно этот флаг и нужен: -ffast-math. Он по-умолчанию не активируется если задействованы флаги оптимизации - включать нужно принудительно.

virusav 04.04.2011 22:43

Вопрос по VMAP: создал перса, примерно на уровне 10 портанулся в Штормград, пошел к тренеру оружейных навыков и по другим столицам и тренерам - все нормально, перс входит.
На 20-22 уровне уже не могу войти в те здания, куда входил на 10-м.

Это интеллектуальный учет роста перса со временем? :)

Ambal 04.04.2011 23:05

virusav, встречный вопрос на засыпку: собирали с -ffast-math? Когда персу подняли лвл до 20-22 логаут делали?

virusav 05.04.2011 10:02

Компилю в VS2008, никаких опцию не задаю, еще не смотрел, где это можно задать.
С 10 по 20-22 уровни была куча логаутов, несколько ребутов сервера.

Ambal 05.04.2011 13:11

Цитата:

Сообщение от virusav (Сообщение 20657)
Компилю в VS2008, никаких опцию не задаю.

Неведомая хня детектед (с) Если вы не трогаете опции компилятора, то сей феномен я лично объяснить на данном этапе немогу...

Vinolentus 05.04.2011 15:59

Цитата:

Вопрос по VMAP: создал перса, примерно на уровне 10 портанулся в Штормград, пошел к тренеру оружейных навыков и по другим столицам и тренерам - все нормально, перс входит.
На 20-22 уровне уже не могу войти в те здания, куда входил на 10-м.

Это интеллектуальный учет роста перса со временем?
http://getmangos.com/community/topic/15883/

virusav 05.04.2011 16:29

Про это думал, но факт остается фактом.

rsa 05.04.2011 20:24

Цитата:

Сообщение от Ambal (Сообщение 20648)
Именно этот флаг и нужен: -ffast-math. Он по-умолчанию не активируется если задействованы флаги оптимизации - включать нужно принудительно.

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

включил, скомпилил (с оптимизацией O2, без нее тормозит), поставил. результата никакого не вижу ни я ни игроки. что хоть должно измениться-то?

Ambal 05.04.2011 22:24

Цитата:

Сообщение от rsa (Сообщение 20667)
результата никакого не вижу ни я ни игроки. что хоть должно измениться-то?

Должна измениться загрузка ЦП в меньшую сторону и вполне вероятно появиться траблы с вмапс, collision detection и всяческими спеллами, меняющими характеристики игрока на опр % =))) Если загрузка по ЦП станет меньше, меня интересует разница. В случае если овчинка будет стоить выделки можно взяться за патч, приводящий в порядок наши вычисления и сравнения чисел с плавающей запятой.

P.S. В мануале по GCC сей функционал по-умолчанию не активируется при выборе любого вида оптимизации аля -Ox по причине несовместимости вычислений над float/double с IEEE754.

rsa 06.04.2011 07:32

А. Тогда я не помощник. Изменение нагрузки замерить не смогу по причине кучи задач и ее сильной неравномерности. К тому же я сомневаюсь чтобы вносимая -ffast-math ошибка могла вообще как-то повлиять что на скорость что на точность (там минимум 6й знак плавает если вообще плавает). На глаз пока баранка. Посмотрим на стабильность, пока претензий нет...

KiriX 06.04.2011 09:26

Цитата:

Сообщение от virusav (Сообщение 20657)
Компилю в VS2008, никаких опцию не задаю, еще не смотрел, где это можно задать.

Хороший вопрос... Может заодно в теме подскажете? =)
Вообще не помню на форуме такого вопроса и ответа на него.

Ambal 06.04.2011 10:12

Цитата:

Сообщение от KiriX (Сообщение 20672)
Хороший вопрос... Может заодно в теме подскажете?

В Visual Studio эта опция активируется в закладке C/C++||Code Generation установкой значения Floating Point Model равного "Fast" или напрямую опцией компилятора "/fp:fast". Также настоятельно рекомендую вместе с этим флагом включить оптимизации для SSE/SSE2.

rsa: информация по стабильности и наличии/отсутствии багов меня тоже устроят :thank_you:

Vladimir 06.04.2011 11:15

Цитата:

Сообщение от rsa (Сообщение 20671)
А. Тогда я не помощник. Изменение нагрузки замерить не смогу по причине кучи задач и ее сильной неравномерности. К тому же я сомневаюсь чтобы вносимая -ffast-math ошибка могла вообще как-то повлиять что на скорость что на точность (там минимум 6й знак плавает если вообще плавает). На глаз пока баранка. Посмотрим на стабильность, пока претензий нет...

fast math пропускает проверки на NaN и INF соответствеено могут не работают некоторые проверки и изминится реультаты сравненеи

rsa 06.04.2011 12:32

Цитата:

Сообщение от Ambal (Сообщение 20674)
rsa: информация по стабильности и наличии/отсутствии багов меня тоже устроят :thank_you:

аптайм сутки, проблем нет пока. через недельку передоложу.
PS для информации, обсужденный краш с NAN значениями в GetHeight() получен _без_ включения fast_math.

Ambal 06.04.2011 12:47

Цитата:

Сообщение от rsa (Сообщение 20679)
обсужденный краш с NAN значениями в GetHeight() получен _без_ включения fast_math.

Я добавил проверку в [11320], которая поможет выследить тех мобов, у которых проблемы с координатами из-за багов в коде/базе.


Текущее время: 03:40. Часовой пояс GMT +3.

ru-mangos.ru - Русское сообщество MaNGOS