русский
Germany.ruForen → Архив Досок→ Programmierung

Про многопоточность

1358  1 2 alle
alex445 коренной житель17.02.22 00:37
NEW 17.02.22 00:37 
in Antwort wasja-de 16.02.22 21:04
Этими "грязными" штучками баловались с незапамятных времён:2 - просто таблица заготовленных констант для корней из 2, 3 и т.д.


но в современных реалиях они могут привести к отрицательному эффекту :)

По ссылке 1, что я привёл, где-то там есть рассуждения, что сейчас такие "хаки" не нужны. Просто в старые времена (конец 80-х - начало 90-х) не было специнструкций для подобных математических вычислений, сопроцессоров, а обращение к специализированной библиотеке занимало слишком много времени. А в тех же игровых движках того времени старались выжимать производительность по-максимуму. Потом появилась куча инструкций-расширений в процессорах, большие кеши, в которые подобные вычисления можно целиком загнать, и надобность в подобных хаках отпала.

#21 
alex445 коренной житель17.02.22 00:41
NEW 17.02.22 00:41 
in Antwort 7495 16.02.22 21:17, Zuletzt geändert 17.02.22 00:44 (alex445)
Начинают менять "от балды" - все начинает "сыпаться"...
Это повод для гордости? Умер от короны сопровождающий программист, смену не вырастил, документации нет, проект можно закрывать, не?

Старьё и надо периодически закрывать, каким бы хорошим оно ни было. Дорогу молодым! Пусть сами чё-нить придумывают. )


К таблице с "секретными" значениями должна быть приложена инструкция-спецификация, где объяснено, что, как, зачем сделано было. Объяснения граничных значений, ссылки на теорию, где почитать.

#22 
Murr патриот17.02.22 03:32
Murr
NEW 17.02.22 03:32 
in Antwort 7495 16.02.22 21:17

Это повод для гордости?

-----

Вполне.


смену не вырастил

------

Эээ????

А с каких пор ЭТО стало заботой программиста?

Рабобратель имеет возможность поискать прогера с необходимой подготовкой - за забором их дохренища...


документации нет

------

Учебники, как правило, общедоступны и не дублируются в документации.

Осталось найти того, кто не поленился изучить необходимое...

#23 
Murr патриот17.02.22 03:35
Murr
NEW 17.02.22 03:35 
in Antwort alex445 17.02.22 00:41

ссылки на теорию, где почитать

-----

Что видят мои глаза? Ярый противник изучения чего-либо говорит об том, что надо что-то изучить? Ну нифига себе... смущ

#24 
alex445 коренной житель17.02.22 08:09
NEW 17.02.22 08:09 
in Antwort Murr 17.02.22 03:35

Не для меня ссылки - просто должны быть в комментах для удобства. )

#25 
wasja-de постоялец17.02.22 10:14
NEW 17.02.22 10:14 
in Antwort alex445 17.02.22 00:37
По ссылке 1, что я привёл, где-то там есть рассуждения, что сейчас такие "хаки" не нужны.

не буду комментировать


Просто в старые времена (конец 80-х - начало 90-х) не было специнструкций для подобных математических вычислений, сопроцессоров, а обращение к специализированной библиотеке занимало слишком много времени.

и сейчас вычисление синуса "стоит" раз так в 100 больше одного "флоп"а (одной операции с плавающей точкой с процессорного ядра. Так и раньше было, против математики не попрешь.


А в тех же игровых движках того времени старались выжимать производительность по-максимуму.

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

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

я бы сказал, что на процессорах 90-х (кроме тех, чт овыпускал Крей Ресеч) программировать было на порядки проще, чем на современных, если конечно цель программирования - высокопроизводительные алгоритмы, а юзер-морда в дотнете. И даже если сравнить массивно-параллельный блок из векторно-конвейерного Cray-C90 и даже современную графическую карту, то на Крею тоже было проще выжимать пиковую производительность. Я это говорю не с чьих-то слов, а именно как специалист, который этим занимался и занимается.


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

#26 
alex445 коренной житель17.02.22 12:32
NEW 17.02.22 12:32 
in Antwort wasja-de 17.02.22 10:14, Zuletzt geändert 17.02.22 12:35 (alex445)
и сейчас вычисление синуса "стоит" раз так в 100 больше одного "флоп"а (одной операции с плавающей точкой с процессорного ядра. Так и раньше было, против математики не попрешь.

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

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


А в тех же игровых движках того времени старались выжимать производительность по-максимуму.
и сейчас и в играх и в куче других приложений также поступают

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


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

Просто акценты сместились с экономии на железе на экономию на... уже не на софте, а на людях. Раньше компьютеры были дорогие и слабые, а требования к ПО и его архитектурная сложность (не алгоритмическая) - ниже. Зарплаты прогеров по сравнению с этим были относительно невелики. Можно было посадить отдел, который бы только тем и занимался, что такты экономил и байтики руками двигал. Теперь в большинстве случаев проще железа докупить, чем позволить программистам такую вахканалию.

#27 
wasja-de постоялец17.02.22 17:20
NEW 17.02.22 17:20 
in Antwort alex445 17.02.22 12:32, Zuletzt geändert 17.02.22 17:27 (wasja-de)
А все эти штуки не помогают быстрее синус вычислять?


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


Просто акценты сместились с экономии на железе на экономию на... уже не на софте, а на людях. Раньше компьютеры были дорогие и слабые, а требования к ПО и его архитектурная сложность (не алгоритмическая) - ниже. Зарплаты прогеров по сравнению с этим были относительно невелики. Можно было посадить отдел, который бы только тем и занимался, что такты экономил и байтики руками двигал. Теперь в большинстве случаев проще железа докупить, чем позволить программистам такую вахканалию.


Я предполагаю, что не только это, а больше - маркетинг.


Раньше компьютеры были не распространены, так как они только появлялись, хотя в США уже в 80-х когда я посещал обычные простые американские семьи, у каждого был дома компьютер, другое дело, что его только как пишущую машинку и игротеку использовали.


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


Закон Мура (не того, что в форуме, он крякнет, чтоб в его честь что-то бы назвали) ведь так толком и не отменился, и топовый суперкомпьютер мира за каждые два года так и удваивает свою производительность, и, очевидно, на нем не майнятся, а что-то полезное считают.


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


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

Вы сравните их флопы с любой топовой графичесой картой. Вот для сравнения, на М1 от яблока сейчас можно теоретически снять 2.6 терафлопса на 32 битах, а на купленной мной в 2013 АМДшной карте (заметим, это почти 10 лет назад!!!) за пару сотен евро я довольно надежно по 6-7 терафлопс снимал при пиковой около 12 терафлопсов. Яблоко всегда любило маркетинг, а 2 ТФлопса - это же круто, можно втридорого впарить тому, кто на эти яблоки подсел и только сейчас услышал новое модное словечко.


И, кстати, про такие сопроцессоры, или ГПУ. На них действительно очень не тривиально программировать. Особенно если до этого писал на фреймворках и не сильно понимаешь хотя бы как писать программы для обычного процессора с его многоуровневой памятью. Я кстати очень советую все-таки заценить тот пример, что я выше приводил по поводу синуса - как хороший показательный случай, когда криво использованная память убивает производительность. И ведь с этим ничего не поделаешь. На компьютерах, что большинство участников форума сейчас это пишут-читают, время прочтения одного числа со случайным адресом из общей памяти в тысячи раз больше времени на умножение двух чисел внутри процессорной АЛУшки.

#28 
alex445 коренной житель17.02.22 19:07
NEW 17.02.22 19:07 
in Antwort wasja-de 17.02.22 17:20, Zuletzt geändert 17.02.22 19:10 (alex445)
Яблоко всегда любило маркетинг, а 2 ТФлопса - это же круто, можно втридорого впарить тому, кто на эти яблоки подсел и только сейчас услышал новое модное словечко.

В тестах, в которых тестят эти мобильные процы и потом всем хвастаются, есть специализация по разным типам операций. Яблоко просто напихало в свои новые процы сопроцессоров-ускорителей (не отдельно, а прямо в общем кристалле) для этих операций и теперь всех в тестах "рвёт". Такое мнение я слышал.


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

#29 
1 2 alle