The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Анализ использования ассемблерных вставок в коде открытых пр..., opennews (??), 02-Апр-13, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


7. "Анализ использования ассемблерных вставок в коде открытых пр..."  +1 +/
Сообщение от userd (ok), 02-Апр-13, 14:16 
> То есть получается, оптимизированная имеено для твоего компьютера операционная система Linux - всего лишь мечта и не существует ни на одном компьютере мира?

Экак вы загнули.
Использование source-based дистрибутива и правильных флагов gcc восстановит ваш покой.

Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

13. "Анализ использования ассемблерных вставок в коде открытых пр..."  –2 +/
Сообщение от Аноним (-), 02-Апр-13, 14:48 
Дак как бы оптимизация компилятором по сути и делает ненужными эти дурацкие вставки на asm, теперь только  от них надо избавиться. Вообщем всяческих успехов ребятам.
Ответить | Правка | Наверх | Cообщить модератору

21. "Анализ использования ассемблерных вставок в коде открытых пр..."  –1 +/
Сообщение от BSA (?), 02-Апр-13, 15:23 
Оптимизации работают в большинстве случаев, но не всегда. Если у тебя какая-то хитрая обработка данных, то скорее всего, код на ассемблере будет значительно быстрее любой оптимизации компилятора. Просто потому, что разработчики компиляторов не могут зашивать все возможные алгоритмы программ в оптимизатор.
Ответить | Правка | Наверх | Cообщить модератору

40. "Анализ использования ассемблерных вставок в коде открытых пр..."  +/
Сообщение от тоже Анонимemail (ok), 02-Апр-13, 17:17 
> скорее всего, код на ассемблере будет значительно быстрее любой оптимизации компилятора.

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

Ответить | Правка | Наверх | Cообщить модератору

46. "Анализ использования ассемблерных вставок в коде открытых пр..."  +2 +/
Сообщение от ананим (?), 02-Апр-13, 18:49 
Человека, не знающего ассемблер и оправдывающего своё незнание «ненужностью», видно сразу.

зыж
Напиши письмо Торвальсу и скажи что он дурак, раз стал использовать **Fast System Calls** вместо тормозных **software interrupts** с помощью ассемблерных вставок — https://lkml.org/lkml/2002/12/18/218

ззыж
только местные аналитеги могут связать сабжевое исследование с компиляторами С.
Ау! Это исследование ставило целью выявить необходимость переписывания этих вставок на вставки же, но под арм. Дураку понятно, что а) всё переписывать не нужно и б) индусы и в ассемблере встречаются (особенно те, кто скопипастил не зная асм, но зная что вон тот код работает и работает быстро).

Ответить | Правка | Наверх | Cообщить модератору

49. "Анализ использования ассемблерных вставок в коде открытых пр..."  +/
Сообщение от тоже Анонимemail (ok), 02-Апр-13, 19:10 
Извините, но писать Линусу глупости вам придется самостоятельно.
А я слишком хорошо помню, как оптимизировал текстовый интерфейс, записывая символы в видеопамять вместо вызова int 10h. И Питера Абеля я к тому времени читывал... вот только ассемблер мне до сих пор так толком и не понадобился. Признаться, совершенно об этом не жалею.

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

Ответить | Правка | Наверх | Cообщить модератору

59. "Анализ использования ассемблерных вставок в коде открытых пр..."  +/
Сообщение от ананим (?), 02-Апр-13, 23:31 
>вот только ассемблер мне до сих пор так толком и не понадобился. 

А он итак никому толком и не понадобился.
Только там, где необходим (по моим наблюдениям) — ядро, железо, аппаратное ускорение (тут его даже мало)

Ответить | Правка | Наверх | Cообщить модератору

60. "Анализ использования ассемблерных вставок в коде открытых пр..."  +/
Сообщение от ананим (?), 02-Апр-13, 23:35 
Зыж
>В новости недвусмысленно говорится, что большинство вставок были ненужными

Пиндеть, не мешки ворочать.
Пусть сделают коммит на си например в гстример, а вы порадуетесь. (К слову, именно для арма в медиа больше всего вставок).
А так да, фильм на 90 минут смотрится 90 минут и с си, и с асм-вставками.

Ответить | Правка | Наверх | Cообщить модератору

114. "Анализ использования ассемблерных вставок в коде..."  +1 +/
Сообщение от arisu (ok), 05-Апр-13, 20:39 
>>вот только ассемблер мне до сих пор так толком и не понадобился. 
> А он итак никому толком и не понадобился.

эх, молодёжь…

Ответить | Правка | К родителю #59 | Наверх | Cообщить модератору

108. "Анализ использования ассемблерных вставок в коде открытых пр..."  +/
Сообщение от Аноним (-), 05-Апр-13, 13:02 
> вот только ассемблер мне до сих пор так толком и не понадобился.

Ну так кто ж вам виноват что вы слили знания в унитаз? Со всеми бывает, не у всех проходит.

Ответить | Правка | К родителю #49 | Наверх | Cообщить модератору

57. "Анализ использования ассемблерных вставок в коде открытых пр..."  +1 +/
Сообщение от Карбофос (ok), 02-Апр-13, 23:07 
не обязательно, можно просто проанализировать профайлерором критичные участки кода и посмотреть, что происходит внутри. чтобы посмотреть, что внутри, можно сохранить временные файлы компайлера. покумекать. иногда полезно изменить структуры, перейти с булевских массивов на битовые и так далее. для этого не обязательно знать лучше пишуших компайллеры.
да и потом можно оптимизировать, в том числе и на ассебмлере. к примеру, поиск в тех же самых битовых полях.
Ответить | Правка | К родителю #40 | Наверх | Cообщить модератору

42. "Анализ использования ассемблерных вставок в коде открытых пр..."  +1 +/
Сообщение от Аноним (-), 02-Апр-13, 17:35 
> Оптимизации работают в большинстве случаев, но не всегда. Если у тебя какая-то
> хитрая обработка данных, то скорее всего, код на ассемблере будет значительно
> быстрее любой оптимизации компилятора. Просто потому, что разработчики компиляторов не
> могут зашивать все возможные алгоритмы программ в оптимизатор.

В целом можно согласиться. Однако есть масса тонкостей, которые низводят пользу от оптимизации ассемблерными вставками до величин, близких к нулю:
1. Нужно реально иметь очень высокое мастерство работы на ассемблере.
2. Код будет скорее всего зависим от hardware.
3. Величина выигрыша будет почти наверняка зависеть от hardware.
4. Для оптимизации хитрой обработки нужно оказаться хитрее компилятора, который разрабатывали не студенты-первокурсники, надо отметить.
5. Трудозатраты на работу на ассемблере весьма велики.
6. Как показывает практика, цитата : "общий эффект подавляется другими узкими местами".

ИМХО, пункт 6 наиболее убийственный из перечисленных.

Ответить | Правка | К родителю #21 | Наверх | Cообщить модератору

51. "Анализ использования ассемблерных вставок в коде открытых пр..."  +2 +/
Сообщение от Аноним (-), 02-Апр-13, 19:22 
Бред.

> 1. Нужно реально иметь очень высокое мастерство работы на ассемблере.

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

> 2. Код будет скорее всего зависим от hardware.

В новости написано что почти везде это альтернативные реализации с переносимым fallback'ом.

> 3. Величина выигрыша будет почти наверняка зависеть от hardware.

Будет, и что?

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

См п.1 - нет, ну нужно.

> 5. Трудозатраты на работу на ассемблере весьма велики.

Это никого не волнует.

> 6. Как показывает практика, цитата : "общий эффект подавляется другими узкими местами".

А вот это самый большой бред, ибо средняя температура по больнице. То, что "подавляется" в 99% случаев в 1% даст прирост производительности в десятки раз.

Итого, посыл новости должен быть в ключе: низкоуровневым оптимизациям быть, если предусмотрен
- переносимый fallback на высокоуровневом языке (заодно описывающий алгоритм)
- система сборки позволяет легко переключаться между оптимизированным и fallback вариантами
- обеспечено должное тестирование

Ответить | Правка | Наверх | Cообщить модератору

81. "Анализ использования ассемблерных вставок в коде открытых пр..."  +2 +/
Сообщение от Orduemail (ok), 03-Апр-13, 09:04 
> Нет. Проверено моим студентом - прочитав по диагонали книгу по асемблеру (и не зная
> низкоуровневой кухни как-то кэши, предсказания ветвлений, конвееры и т.д.) совершенно
> наивный asm код примерно в половине раз получается быстрее последних gcc. Проверено на
> написании библиотеки графических фильтров.

Вы ведь, я надеюсь, про векторизованную обработку данных через SSE? Таки да, я думаю на этом пути возможно и несложно обогнать компилятор. Но с тех пор, как я в последний раз занимался тем, чем занимался ваш студент (то есть сравнивал ручной код на ассемблере с кодом сгенерированным компилятором) прошло лет пять-семь. С тех пор, в новостях проскакивало не раз, что у gcc всё лучше и лучше с векторизацией. Ваш студент не пробовал применять всякие опции типа -ftree-vectorize? Название опции сугубо приблизительно, я не помню точно, но в мануале всё это есть. Собственно я думаю, студент ваш (если не разгильдяй) лучше меня знает названия этих опций, и уж точно может привести список их наизусть.

В общем, если студент ваш с этими опциями поигрался как следует, то подскажите ему идею изложить результаты этих "игр" в виде статейки в интернете. Было бы интересно почитать, чтобы на таком бытовом уровне понять, что же и как gcc умеет векторизовывать. И ещё интересно было бы, если бы он рассказал о том, имеет ли смысл эти опции включать system wide, и компилировать всё без разбору с ними (ну если в этих опциях вообще есть какой-нибудь смысл).

Ответить | Правка | Наверх | Cообщить модератору

85. "Анализ использования ассемблерных вставок в коде открытых пр..."  +1 +/
Сообщение от Аноним (-), 03-Апр-13, 10:12 
> Бред.

Можно на этом и закончить. Дискутировать с троллем - себя не уважать. Удачи.

Ответить | Правка | К родителю #51 | Наверх | Cообщить модератору

52. "Анализ использования ассемблерных вставок в коде открытых пр..."  +/
Сообщение от ананим (?), 02-Апр-13, 20:41 
>1. реально иметь очень высокое мастерство работы на ассемблере.
>2. Код будет скорее всего зависим от hardware.
>3. Величина выигрыша будет почти наверняка зависеть от hardware.
>4. Для оптимизации хитрой обработки нужно оказаться хитрее компилятора, который разрабатывали не студенты-первокурсники, надо отметить.

Да-да. Сидит такой программер и думает, дайка я прогу ассемблером заторможу, а то что-то быстро работает.

Зыж
Асм вставляют (даже те кто его хорошо знает) только в 2-х случаях:
1. Когда хотят увеличить скорость выполнения пишут, потом проверяют, если эффект есть, оставляют.
2. Сперли код из другого проекта вместе с асмом, в коротрый и не смотрели. Но вот с чём штука, его смотрели те, кто из пункта 1.
Про хардваре вообще эпично, а компилятор вообще нифига на целевую платформу не нацелен, не?

Ответить | Правка | К родителю #42 | Наверх | Cообщить модератору

56. "Анализ использования ассемблерных вставок в коде открытых пр..."  +2 +/
Сообщение от Карбофос (ok), 02-Апр-13, 22:48 
>Да-да. Сидит такой программер и думает, дайка я прогу ассемблером заторможу, а то что-то быстро работает.

тише! тише! сейчас изя припрётся и обвинит во всех тормозах ассемблерные вставки :)

Ответить | Правка | Наверх | Cообщить модератору

61. "Анализ использования ассемблерных вставок в коде открытых пр..."  +/
Сообщение от ананим (?), 02-Апр-13, 23:37 
Там вон в новости и в жабе их кучу нашли (то-то начиная с 6 она порезвела)
Ответить | Правка | Наверх | Cообщить модератору

62. "Анализ использования ассемблерных вставок в коде открытых пр..."  +/
Сообщение от Карбофос (ok), 02-Апр-13, 23:41 
>Там вон в новости и в жабе их кучу нашли (то-то начиная с 6 она порезвела)

классика жанра: ОЙ! как неудобно получилось!

Ответить | Правка | Наверх | Cообщить модератору

64. "Анализ использования ассемблерных вставок в коде открытых пр..."  +/
Сообщение от ананим (?), 03-Апр-13, 00:13 
Да-да! Там на 2-м месте (после ведра) сам (о ужОс!!!) компилятор гцц.
Щаз онанчик научит их родину любить.
Ответить | Правка | Наверх | Cообщить модератору

109. "Анализ использования ассемблерных вставок в коде открытых пр..."  +/
Сообщение от Аноним (-), 05-Апр-13, 13:03 
> Да-да! Там на 2-м месте (после ведра) сам (о ужОс!!!) компилятор гцц.

А также всякий там стартап код и прочая, все что вокруг живет.

Ответить | Правка | Наверх | Cообщить модератору

87. "Анализ использования ассемблерных вставок в коде открытых пр..."  –1 +/
Сообщение от Аноним (-), 03-Апр-13, 10:51 
> Асм вставляют (даже те кто его хорошо знает) только в 2-х случаях:
> 1. Когда хотят увеличить скорость выполнения пишут, потом проверяют, если эффект есть,
> оставляют.
> 2. Сперли код из другого проекта вместе с асмом, в коротрый и
> не смотрели. Но вот с чём штука, его смотрели те, кто
> из пункта 1.

"38.1% пакетов используют ассемблерный код для выполнения различных низкоуровневых операций, таких как прямое взаимодействие с оборудованием и определение типа аппаратного обеспечения."
С этим-то что делать, а? Вот только не надо подгонять результаты фактического исследования под теорию.

Ответить | Правка | К родителю #52 | Наверх | Cообщить модератору

89. "Анализ использования ассемблерных вставок в коде открытых пр..."  +/
Сообщение от ананим (?), 03-Апр-13, 11:16 
так продолжили бы, а не вырывали из контекста:
> при этом данные чаще всего используются лишь для статистики/диагностики и напрямую не связаны с работой приложения.

при этом
>Основные выводы:
>Подавляющее большинство приложений в репозиториях не требуют отдельного портирования. Например, из более 20 тысяч src-пакетов в репозитории Ubuntu 13.04 только около 1200 (6%) содержат ассемблерные вставки.     Большинство пакетов с ассемблерными вставками будут работать на других архитектурах без дополнительного портирования так как ассемблерный код используется только для оптимизации и предусматривает наличие замены на C/C++ или связан с реализацией дополнительных возможностей, что не блокирует сборку приложения на новых архитектурах.

Подавляющее большинство… это сколько? 90%? 99%? если к примеру 80%, то подавляющим как бы не назовёшь, 20% — солидная цифра. таким образом:
1) выводы сделаны? да. на основании этих цифр? да. в цифрах указан объём кода, корректность обработки кода, фалбэк для этого кода? НЕТ. очевидно выводы сделаны на основании безопасности данного кода для портирования.
2) это всего-лишь 457 пакетов. очевидно в этих случаях просто не было (и нет скорее всего) совместно-используемой библиотеки из разряда LSB, где этот ассемблерный код мог бы спрятаться за API.
3) если бы цеплялись к оборудованию хакерскими средствами из С (там вон выше предлагали), то этот код вообще бы не нашли.
при этом он так бы и остался платформ-зависимым.
4) и в чём собственно криминал? можете ответить?

Ответить | Правка | Наверх | Cообщить модератору

91. "Анализ использования ассемблерных вставок в коде открытых пр..."  +/
Сообщение от Аноним (-), 03-Апр-13, 12:16 
Ещё раз.

Я возражаю против вашего посыла, согласно которому ассемблерные вставки пишутся только и исключительно для повышения производительности (либо копируются из работы людей, которые их писали для повышения производительности).
Цитирую его :
> Асм вставляют (даже те кто его хорошо знает) только в 2-х случаях:
> 1. Когда хотят увеличить скорость выполнения пишут, потом проверяют, если эффект есть,
> оставляют.
> 2. Сперли код из другого проекта вместе с асмом, в коротрый и
> не смотрели. Но вот с чём штука, его смотрели те, кто
> из пункта 1.

Мой аргумент :
"38.1% пакетов используют ассемблерный код для выполнения различных низкоуровневых операций, таких как прямое взаимодействие с оборудованием и определение типа аппаратного обеспечения."

Если неудачно сформулировали (слишком категорично) "только в 2-х случаях" - так и напишите, зачем плодить в оправдание наскоро написанной формулировки посты с непонятной логикой?

Ответить | Правка | Наверх | Cообщить модератору

92. "Анализ использования ассемблерных вставок в коде открытых пр..."  +/
Сообщение от ананим (?), 03-Апр-13, 12:43 
>"38.1% пакетов используют ассемблерный код для выполнения различных низкоуровневых операций, таких как прямое взаимодействие с оборудованием и определение типа аппаратного обеспечения."

Ок. Сформулируйте, что такое низкоуровневые операции.

Ответить | Правка | Наверх | Cообщить модератору

97. "Анализ использования ассемблерных вставок в коде открытых пр..."  –1 +/
Сообщение от Аноним (-), 03-Апр-13, 16:06 
> Ок. Сформулируйте, что такое низкоуровневые операции.

Ой ладно отбрехиваться :) Вот у меня других дел нет - разводить бестолковую дискуссию :)
Короче. Ассемблерные вставки почти в 40% случаев пишутся потому, что через них авторам почему-то лучше работается в аппаратурой.
Я, в отличие от вас, стараюсь не допускать тупых категоричных формулировок. Поэтому сразу скажу, что вполне возможно, что НЕКОТОРАЯ ЧАСТЬ этих вставок обеспечивает рост производительности. Это предположение отнюдь не приведёт к выводу о том, что все ассемблерные вставки пишутся для оптимизации производительности, что вы изволили утверждать.

Ответить | Правка | Наверх | Cообщить модератору

110. "Анализ использования ассемблерных вставок в коде открытых пр..."  –1 +/
Сообщение от Аноним (-), 05-Апр-13, 13:04 
> что все ассемблерные вставки пишутся для оптимизации производительности,

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

Ответить | Правка | Наверх | Cообщить модератору

27. "Анализ использования ассемблерных вставок в коде открытых пр..."  +/
Сообщение от цирроз (ok), 02-Апр-13, 16:26 
нет, это далеко не так.
Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

22. "Анализ использования ассемблерных вставок в коде открытых пр..."  –2 +/
Сообщение от Аноним (-), 02-Апр-13, 15:35 
Толку-то? Кажется что сейчас соберёшь систему и будет летать на 486-м, а оно по скорости проигрывает даже бинарным Red Hat-ам и Mandrake-ам начала 00-х! Казалось бы - свежий код, оптимизация под SSE3 - но не задействуется даже MMX. И наконец казалось бы, ассемблерные вставки делают запускаемые на моём процессоре программы реактивными - но и это оказывается неправдой, если авторы исследования правы! Судя по процитированным мной отрывкам перевода.

Так что же - пользоваться бинарной CentOS 5 вместо того чтобы компилировать Gentoo или LFS с оптимизациями? Всё равно код 50% программ не оптимизирован под процессорные инструкции моего процессора? И даже если есть ассемблерные вставки - 99% из них скопировано из учебников и ничего не ускоряет?

Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

41. "Анализ использования ассемблерных вставок в коде открытых пр..."  +/
Сообщение от тоже Анонимemail (ok), 02-Апр-13, 17:26 
Меню приложений XFCE перед первым открытием читает с диска кэш иконок, которые встречаются в этом меню.
Меню можно переписать на ассемблере, на джаваскрипте или на Lua, но пока с диска не будет прочитан кэш иконок, оно не откроется.
По-моему, достаточно наглядный пример случая, где оптимизация кода бессильна... А вот предусмотреть чтение кэша при загрузке системы решило бы проблему. Независимо от использованного для этого языка. И открывалось бы это меню так же моментально, как у "старых добрых" систем.
Ответить | Правка | Наверх | Cообщить модератору

54. "Анализ использования ассемблерных вставок в коде открытых пр..."  +/
Сообщение от Аноним (-), 02-Апр-13, 21:17 
> Меню приложений XFCE перед первым открытием читает с диска кэш иконок, которые
> встречаются в этом меню.
> Меню можно переписать на ассемблере, на джаваскрипте или на Lua, но пока
> с диска не будет прочитан кэш иконок, оно не откроется.
> По-моему, достаточно наглядный пример случая, где оптимизация кода бессильна... А вот предусмотреть
> чтение кэша при загрузке системы решило бы проблему. Независимо от использованного
> для этого языка. И открывалось бы это меню так же моментально,
> как у "старых добрых" систем.

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

Ответить | Правка | Наверх | Cообщить модератору

63. "Анализ использования ассемблерных вставок в коде открытых пр..."  –1 +/
Сообщение от ананим (?), 02-Апр-13, 23:45 
>Меню приложений XFCE перед первым открытием читает с диска кэш иконок, которые встречаются в этом меню.

Именно поэтому бинарные конфиги зло (если они все не собраны в один сжатый архив. Аля одт)

Зыж
Сам сижу на xfce. Грузится дольше всех (кроме г3). Но дальше работает как из пушки.

Ответить | Правка | К родителю #41 | Наверх | Cообщить модератору

73. "Анализ использования ассемблерных вставок в коде открытых пр..."  +1 +/
Сообщение от Аноним (-), 03-Апр-13, 04:49 
> Использование source-based дистрибутива и правильных флагов gcc восстановит ваш покой.

И вставки на асме сама под ARM64 перепишет :)


Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

24. "Анализ использования ассемблерных вставок в коде открытых пр..."  +/
Сообщение от ананим (?), 02-Апр-13, 16:09 
>99% ассемблерных вставок ограничены всякими define. 

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

Вариант "не собирается" не так интересен, т.к. диагностируется легко банальной сборкой и разбором полётов.

Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру