HLFX.Ru Forum Страницы (3): « 1 2 [3]
Показать все 43 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- Почему MSVC2010 генерирует такой дерьмовый код? (https://hlfx.ru/forum/showthread.php?threadid=4598)


Отправлено XaeroX 14-09-2015 в 18:09:

MegaGovnoCoder
То есть тебя ни разу не смущает тот факт, что в 1998 году компилятор умел оптимизировать под "отходы" (а на тот момент - широко распространённые процессоры), но в 2015 году внезапно "позабыл", как это делать?

Конкретно я предпочитаю FPU по следующим причинам:
1) Использование SSE подразумевает векторизацию, которую компилятор иногда делает неправильно. Я сталкивался с функциями, которые неправильно оптимизируются с включённым SSE - вплоть до того, что функции начинают работать принципиально неверно. Нет никакого желания жонглировать с версиями компиляторов и тулсетов в поисках таких трудноидентифицируемых багов.
2) Регистры FPU 80-битные, по дефолту расчёты идут двойной точности (53 бита) для 32-битных floatов, что минимизирует ошибки округления. В SSE числа с плавающей точкой занимают 32 бита даже во внутреннем представлении, что ведёт к серьёзным ошибкам. В частности, почти неизбежно приходится переписывать алгоритм на использование эпсилонов, в то время как на FPU довольно безопасно сравнивать числа напрямую (за исключением режима одинарной точности, но его нужно выставлять вручную, по дефолту он не включен).
3) Сопроцессор имеет большое число математических команд - например, вычисление тригонометрии - чего нет в наборах инструкций SSE. В последнем случае необходимые подпрограммы пишутся специально, и как правило, имеют невысокую точность. Эти подпрограммы, как и принято в SSE, заточены под векторизацию, т.е. вычисление четырёх синусов/косинусов за раз, что в условиях убогой векторизации в компиляторах совершенно бесполезно.
4) Выигрыш от использования скалярных операций SSE почти нулевой, если FPU код написан также грамотно - зато точность расчётов ниже. Кривой FPU-код, описанный в первом посте темы - либо баг компилятора, либо сознательный маркетинговый ход с целью популяризовать новые тулсеты. Как я писал выше, у GCC таких проблем нет.
5) SSE нет на мобильных процессорах, а FPU есть, поэтому для получения сравнимых и воспроизводимых результатов на всех платформах последний предпочтителен.

Там же, где я чётко вижу векторизацию, я использую SSE самостоятельно, без сомнительных "услуг" компилятора. И это действительно даёт заметный прирост в тест-кейсах.

Ну и, конечно же, вопрос самоконтроля: если движок выдаёт картинку уровня, скажем, дум3, а дум3 запускается на celeron 466, то по какому праву твой движок не будет на нём запускаться?


Отправлено ~ X ~ 14-09-2015 в 18:45:

MegaGovnoCoder >>Проживает: Деревня
Богатая, видать, деревня, что процы на помойку выкидывают

Кстати, SSE не поддерживали и многие Атлоны, у которых зато был 3DNOW!.

XaeroX полностью согласен, что векторизованный расширения типа sse надо использовать вручную.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Дядя Миша 15-06-2016 в 17:33:

Вот вам еще в копилку новостей: http://www.yaplakal.com/forum1/topic1396002.html

Для тех кто удивляется, почему я не спешу уходить с шестой студии и WinXP.

Добавлено 15-06-2016 в 20:30:

Цитата:
~ X ~ писал:
Я, конечно, не стану Дядей Мишей и на ВС6 не пересяду после такого

А после вышеприведённого?

Добавлено 15-06-2016 в 20:33:

ЗЫ. SSE для игровых движков практически бесполезен. Куда лучше перенести расчёты на GPU. Ну может быть в физике есть определенный прирост, если модель симуляции достаточно сложная. Или скажем в кодировании DXT - тут да, спорить трудно.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nemyax 15-06-2016 в 18:10:

На MinGW надо валить.


Отправлено thambs 15-06-2016 в 20:48:

>не спешу уходить с шестой студии и WinXP.
как таймбомба в железках сработает, так и поспешишь.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Crystallize 16-06-2016 в 02:59:

Цитата:
thambs писал:
как таймбомба в железках сработает, так и поспешишь.


Ух ты, а как это? Win.CIH с периодом вызревания в 10 лет?


Отправлено XaeroX 16-06-2016 в 05:17:

Цитата:
Дядя Миша писал:
Вот вам еще в копилку новостей: http://www.yaplakal.com/forum1/topic1396002.html

А не враньё ли? Ни ссылок авторитетных, ни даже версии Студии не указано.
Цитата:
Дядя Миша писал:
А после вышеприведённого?

Никогда. Да я на своей десятке уже выгляжу как любитель мамонтов. Не думаю, что кто-то сидит на такой древней студии. Но пока с обновлением не спешу.
Цитата:
Дядя Миша писал:
Куда лучше перенести расчёты на GPU.

Сильно зависит от расчётов. Простой пример: у SSE есть прямой доступ к памяти, у GPU - нет, и надо копировать данные туда/сюда.
Цитата:
nemyax писал:
На MinGW надо валить.

MinGW надо валить.


Отправлено nemyax 16-06-2016 в 07:17:

Цитата:
XaeroX писал:
А не враньё ли? Ни ссылок авторитетных, ни даже версии Студии не указано.

Студия 2015. https://www.infoq.com/news/2016/06/visual-cpp-telemetry
Слово "вредоносный" в заголовке — обычный кликбейт.
Вот интересно, можно ли описанным способом отключить это говно в community edition.


Отправлено XaeroX 16-06-2016 в 07:21:

nemyax

Цитата:
VS2012 and VS2013 do not include this telemetry behavior.

Ну вот с этого и надо было начинать. А панику развели, словно всем и вправду пора откатываться на шестую студию.


Отправлено FreeSlave 16-06-2016 в 08:23:

Про телеметрию ещё в апреле писали на хабре.
Непонятно, почему об этом снова вспомнили.


Отправлено Дядя Миша 16-06-2016 в 14:06:

Цитата:
thambs писал:
как таймбомба в железках сработает, так и поспешишь.

Железка сдохнет раньше, чем в ей таймбомба сработает.
Цитата:
XaeroX писал:
Да я на своей десятке уже выгляжу как любитель мамонтов

А я на своей шестерке как тогда выгляжу? Как любитель папонтов?
Цитата:
XaeroX писал:
Сильно зависит от расчётов.

Ну я же говорю, единственный пример, что мне приходит на ум - это физика. И то хрен его знает, насколько это будет стабильно с SSE-шной точностью.
Цитата:
XaeroX писал:
словно всем и вправду пора откатываться на шестую студию

Истинно говорю вам: так и есть

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 16-06-2016 в 14:45:

Цитата:
Дядя Миша писал:
А я на своей шестерке как тогда выгляжу? Как любитель папонтов?

Я, пожалуй, промолчу.
Цитата:
Дядя Миша писал:
И то хрен его знает, насколько это будет стабильно с SSE-шной точностью.

Судя по Newton - вполне стабильно.
А вот CUDA-версию тамошнего солвера я так и не заценил. Не скомпилился он у меня, не помню уже почему.


Отправлено Дядя Миша 16-06-2016 в 17:57:

Цитата:
XaeroX писал:
Судя по Newton - вполне стабильно.

Это да, но я не углублялся, что именно там перевели на SSE.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Временная зона GMT. Текущее время 09:05. Страницы (3): « 1 2 [3]
Показать все 43 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024