HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > Почему MSVC2010 генерирует такой дерьмовый код?
Самая обычная функция max для float-ов
Страницы (3): « 1 2 [3]   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34528
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


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, то по какому праву твой движок не будет на нём запускаться?

Сообщить модератору | | IP: Записан
Сообщение: 150219

Старое сообщение 14-09-2015 18:09
-
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


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

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

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

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

Сообщить модератору | | IP: Записан
Сообщение: 150224

Старое сообщение 14-09-2015 18:45
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Вот вам еще в копилку новостей: 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'

Сообщить модератору | | IP: Записан
Сообщение: 155844

Старое сообщение 15-06-2016 17:33
-
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4137

Рейтинг



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

Сообщить модератору | | IP: Записан
Сообщение: 155846

Старое сообщение 15-06-2016 18:10
- За что?
thambs
мразь конченная

Дата регистрации: Mar 2006
Проживает: -
Сообщений: 6417

Рейтинг



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

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

Сообщить модератору | | IP: Записан
Сообщение: 155847

Старое сообщение 15-06-2016 20:48
- За что?
Crystallize
Житель форума

Дата регистрации: Jul 2007
Проживает: Новосибирск
Сообщений: 4423
Возраст: 34

Рейтинг



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


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

Сообщить модератору | | IP: Записан
Сообщение: 155848

Старое сообщение 16-06-2016 02:59
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34528
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


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

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

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

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

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

Сообщить модератору | | IP: Записан
Сообщение: 155851

Старое сообщение 16-06-2016 05:17
-
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4137

Рейтинг



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

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

Сообщить модератору | | IP: Записан
Сообщение: 155852

Старое сообщение 16-06-2016 07:17
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34528
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


nemyax

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

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

Сообщить модератору | | IP: Записан
Сообщение: 155853

Старое сообщение 16-06-2016 07:21
-
FreeSlave
Житель форума

Дата регистрации: Nov 2007
Проживает: Тула
Сообщений: 1077

Рейтинг



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

Сообщить модератору | | IP: Записан
Сообщение: 155854

Старое сообщение 16-06-2016 08:23
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
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'

Сообщить модератору | | IP: Записан
Сообщение: 155860

Старое сообщение 16-06-2016 14:06
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34528
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


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

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

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

Сообщить модератору | | IP: Записан
Сообщение: 155862

Старое сообщение 16-06-2016 14:45
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32213
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
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'

Сообщить модератору | | IP: Записан
Сообщение: 155879

Старое сообщение 16-06-2016 17:57
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 00:39. Новая тема    Ответить
Страницы (3): « 1 2 [3]   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > Почему MSVC2010 генерирует такой дерьмовый код?
Самая обычная функция max для float-ов
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

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