The OpenNET Project / Index page

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



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

"Релиз набора компиляторов LLVM 12.0 "  +/
Сообщение от opennews (??), 16-Апр-21, 12:40 
После шести месяцев разработки представлен релиз проекта LLVM 12.0 - GCC-совместимого инструментария (компиляторы, оптимизаторы и генераторы кода), компилирующего программы в промежуточный биткод RISC-подобных виртуальных инструкций (низкоуровневая виртуальная машина с многоуровневой системой оптимизаций). Сгенерированный псевдокод может быть преобразован при помощи JIT-компилятора в машинные инструкции непосредственно в момент выполнения программы...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=54977

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

Оглавление

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

1. Сообщение от Аноним (1), 16-Апр-21, 12:40   +1 +/
Атрибут optimize ещё не прикрутили?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #5

2. Сообщение от Аноним (2), 16-Апр-21, 12:46   +3 +/
А что там нынче с поддержкой плюсовых модулей?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #21, #70

3. Сообщение от Аноним (3), 16-Апр-21, 12:48   –5 +/
> На системах x86 включена поддержка опции "-mtune=<cpu>"

Дааа..... Когда же они тогда весь GCC перепишут?!

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

5. Сообщение от Аноним (5), 16-Апр-21, 12:49   –1 +/
Да вроде давно
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #58

7. Сообщение от menangenemail (?), 16-Апр-21, 12:55   –1 +/
Что там с модулями? Как их заставить работать с Xcode?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #22

10. Сообщение от Анонас (?), 16-Апр-21, 13:00   +18 +/
> Реализована и включена по умолчанию поддержка предложенных в стандарте C++20 атрибутов "likely" и "unlikely", позволяющих информировать оптимизатор о вероятности срабатывания условной конструкции

А "highly likely" почему не добавили?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #12, #15

12. Сообщение от anonymous (??), 16-Апр-21, 13:15   +5 +/
Ты хочешь сказать, что русские хакеры могут вмешаться в исход условного оператора if???
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #30

15. Сообщение от Аноним (15), 16-Апр-21, 13:34   +/
С гцц оно существует с какого года? С 2000?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #18

16. Сообщение от Аноним (16), 16-Апр-21, 13:36   +2 +/
С++20 все еще не полностью поддерживается
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #19, #62

18. Сообщение от жопка3 (?), 16-Апр-21, 13:43   –2 +/
Вы путаете аттрибуты стандарта C++ и аттрибуты поддерживаемые компилятором.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15 Ответы: #24

19. Сообщение от Аноним (19), 16-Апр-21, 13:48   –2 +/
Да и ладно. А что там gcc выступал? Вот на сабжа и заменим.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16 Ответы: #31, #42

21. Сообщение от Аноним (21), 16-Апр-21, 14:05   +/
Ещё с 9 есть. Только в CMake их поддержки не завезли, придётся самому валандаться с аттрибутами коммандной строки. А мы ведь системы сборки для того и используем, чтобы с ними за нас валандалась система сборки. Поэтому, пока в системы сборок поддержку модулей не завезут, прок от использования модулей будет отрицательным.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #28

22. Сообщение от Аноним (21), 16-Апр-21, 14:05   +/
Никак.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7 Ответы: #52

24. Сообщение от Аноним (3), 16-Апр-21, 14:20   –1 +/
А есть разница на результирующий код? Или ты из секты синтаксической соли?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #26

25. Сообщение от Аноним (25), 16-Апр-21, 14:41   +1 +/
AVX512 то еще говно по слвоам Линуса. AVX2 уже давно есть. -march=native решает трудности выбора нужных инструкций. Но можно выключить ненужное, для чего и есть уровни 3 и 2.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #61

26. Сообщение от Аноним (26), 16-Апр-21, 14:47   –2 +/
Ну с сишного register есть, причём ради интереса замерял простенький цикл со счётчиком и ускорение было в 10000 раз. По факту приложение в итоге начало отрабатывать в 1000 раз быстрее. А видишь из плюсов выкинули.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24 Ответы: #29, #55

27. Сообщение от YetAnotherOnanym (ok), 16-Апр-21, 15:16   +2 +/
> "likely" и "unlikely"

Надо ещё  "highly likely" и "highly unlikely", а лучше - всю шкалу от "nearly impossible" до "almost certain".

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

28. Сообщение от Аноним (28), 16-Апр-21, 15:18   +/
В build2 (https://build2.org/) давно завезли (не путать с бустовым b2).
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21 Ответы: #54, #69

29. Сообщение от Аноним (28), 16-Апр-21, 15:20   +2 +/
Ой, всё...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26 Ответы: #32

30. Сообщение от ng (?), 16-Апр-21, 15:21   +4 +/
С точки зрения ламера есть несколько вариантов (в нотации ASM х86):
- поменять условный переход на безусловный по тому же адресу: JZ => JMP;
- поменять логику перехода сохранив адрес перехода: JZ => JNZ;
- исключить проверку и переход вообще: J(x) => NOP;
- наверняка, существуют и другие способы "вмешательства в исход условного оператора", известные хакерам безотносительно их национальной принадлежности.

imho

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #38

31. Сообщение от Аноним (31), 16-Апр-21, 15:31   +2 +/
Сабж не выступал против Столмана потому, что он и так под пятой у проприерастов, а не под руководством FSF.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19

32. Сообщение от Аноним (26), 16-Апр-21, 15:42   –1 +/
> Ой, всё...

Хорошая новость: пго этот цикл тоже соптимизировал, даже ещё лучше. Плохая: без пго единственная надежда на такие подсказки от кодера.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29 Ответы: #57

33. Сообщение от acroobat (ok), 16-Апр-21, 16:00   –1 +/
Есть поддержка D?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #34

34. Сообщение от Аноним (31), 16-Апр-21, 16:04   +1 +/
D там отдельно, LDC называется.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33 Ответы: #36

35. Сообщение от adolfus (ok), 16-Апр-21, 16:05   –4 +/
likely, unlikely ...
Глупости все это -- управление предвыборкой. Не все платформы умеют это делать. ia32 и amd64 в подявляющем большинстве случаев не могут эти хинты эффективно обработать.
Самый действенный метод повысить призводительность вычислений -- писать всю математику на фортране или прямо на ассемблере платформы.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #37, #41, #43, #72

36. Сообщение от acroobat (ok), 16-Апр-21, 16:15   –2 +/
Тогда нужно
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #34

37. Сообщение от Твой батя (?), 16-Апр-21, 16:45   +1 +/
А если это не математика, а какой-нибудь обработчик событий в GUI? Тоже на фортране или ассемблере писать?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #35 Ответы: #44

38. Сообщение от Rndanon (?), 16-Апр-21, 16:50   +2 +/
Лови русского(советского?) хакера!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30

40. Сообщение от Какаянахренразница (ok), 16-Апр-21, 17:19   +2 +/
От "да ни в жисть" до "мамой клянусь".
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27 Ответы: #56

41. Сообщение от Аноним (41), 16-Апр-21, 18:00   +/
Причём тут, блин, математика?

Вот есть у меня код разбора протокола http. Если первый символ G, то очень даже likely, что второй E, а третий T.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #35 Ответы: #45

42. Сообщение от макпыф (ok), 16-Апр-21, 18:05   +2 +/
gcc не выступал и не может так его пилит проект GNU которым столман управляет.
а вот llvm выступить может.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #19 Ответы: #47, #51

43. Сообщение от Чтото странное ты пишешь (?), 16-Апр-21, 18:06   –2 +/
Не умеют и не умеют, в чём проблема-то?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #35

44. Сообщение от Аноним (3), 16-Апр-21, 18:10   +1 +/
> обработчик событий в GUI

Вот уж кому не впёрлись все эти лайки.

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

45. Сообщение от Аноним (3), 16-Апр-21, 18:12   +2 +/
И причём тут лайки, если ты уже сам составил дерево разбора так, как надо?!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #41 Ответы: #63

46. Сообщение от Иван (??), 16-Апр-21, 18:18   +2 +/
> На платформе Linux для архитектур AArch64 и PowerPC включён режим
> "-fasynchronous-unwind-tables" для генерации "раскрученных"
> (unwind) таблиц вызовов, как в GCC.

Поправьте пожалуйста перевод.

"unwind tables" это таблицы для раскрутки стека, а не "раскрученные" таблицы. Асинхронные таблицы раскрутки стека позволяют раскручивать стек в любой точке (на любой инструкции), а не только в точках вызова функций.

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

47. Сообщение от Аноним (-), 16-Апр-21, 19:18   +/
Нет. GCC не выступил потому, что они преданные соратники Столлмана.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42 Ответы: #48

48. Сообщение от Аноним (-), 16-Апр-21, 19:24   –8 +/
> Нет. GCC не выступил потому, что они преданные соратники Столлмана.

Кем именно преданные? Столлманом?


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

49. Сообщение от Аноним (-), 16-Апр-21, 19:39   +/
>Релиз набора компиляторов LLVM 12.0

Он даже название GCC копируют. Типа: "набора компиляторов".

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

51. Сообщение от макпыф (ok), 16-Апр-21, 22:10   +/
> gcc не выступал и не может так его пилит проект GNU которым
> столман управляет.
> а вот llvm выступить может.

если кто то сомневаеться: https://ru.wikipedia.org/wiki/GNU_Compiler_Collection
> Разработчик     Проект GNU

а лидер проекта gnu - столман
поэтому столман не может выступить сам против себя (раздвоения личности у него вроде нету)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42 Ответы: #59

52. Сообщение от Аноним (52), 17-Апр-21, 04:42   +/
А жаль.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22

53. Сообщение от Аноним (53), 17-Апр-21, 09:52   +1 +/
> поддержкой OpenCL, OpenMP и CUDA. Добавлены опции "-cl-std=CL3.0" и "-cl-std=CL1.0"

OpenCL у писателей дров к видяхам на самом последнем месте: https://mesamatrix.net

Хотя бы для видях AMD сделали полную поддержку "-cl-std=CL1.2"

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

54. Сообщение от Аноним (-), 17-Апр-21, 10:44   –2 +/
Это что-то совсем уж маздайное, начиная с способов даунлоада и "секурити" в виде SHA256 (Подписи GPG?! Не, не слышали!) и поддерживает аж полторы конфигурации. Из которых примерно 3/4 - маздайка. Которая мне например как таргет не интересна вообще. Так что убийцы cmake из этой штуки явно не вырисовывается. Маздайный апстрим == trouble on the way.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28 Ответы: #68

55. Сообщение от Аноним (-), 17-Апр-21, 10:49   +/
По состоянию на *сейчас* register как правило не дает совсем никакого эффекта. Компилер и так допрет загнать "горячие" вещи в регистры, покуда их хватает. Собственно поэтому его и убрали...

Ну или давайте конкретный пример
- Конфигурации. Компилер, ось, проц, опции.
- Кода где от register есть какой-то толк. Я проверю.

Интерес потому что я пробовал так и сяк и вообще разницу в кодогенерации (как минимум на ARM) так сразу получить не смог.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26 Ответы: #64

56. Сообщение от Аноним (-), 17-Апр-21, 10:52   +1 +/
Ну это вам язык РАПИРА надо. Еще можно б#% буду! добавить. Хотя в принципе одно время такой синтаксис катитл и в MSовском сишном компилере, загуглить про "какой-то козел стал гoвнистость". Но это нестандарт, другие компилеры не жрут.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #40

57. Сообщение от Аноним (-), 17-Апр-21, 10:59   +/
Что вы там вообще делали? Простой цикл со счетчиком gcc например обычно випилывает до условного return 42, заметив что эффекта от цикла ровно ноль и на этой почве вообще грохнув весь этот код. Так что скорость получается в дофига раз больше - кода вообще нет.

Более того - он умеет в сильно более продвинутый анализ. Если есть 10 веток функции для разных значений параметров, сцук замечает что 80% этого unused (если оно так) - и выпиливает к чертям код реализации.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32 Ответы: #65

58. Сообщение от Аноним (58), 17-Апр-21, 16:22   +/
В упор не наблюдаю https://clang.llvm.org/docs/AttributeReference.html Где?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5

59. Сообщение от Аноним (58), 17-Апр-21, 16:24   +/
Ты GNU c FSF не попутал?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #51 Ответы: #60

60. Сообщение от макпыф (ok), 17-Апр-21, 16:26   +/
> Ты GNU c FSF не попутал?

нет.
fsf тут причем? да, сора из за него, но проектом GNU тоже руководит столман

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

61. Сообщение от Аноним (58), 17-Апр-21, 16:28   +/
На локалхосте у себя под одеялом собирать не вопрос конечно. Но распространять такие бинари бессмысленно.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25

62. Сообщение от acroobat (ok), 17-Апр-21, 17:22   –3 +/
> С++20 все еще не полностью поддерживается

C++ is dead

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

63. Сообщение от Tim (??), 17-Апр-21, 19:01   –1 +/
В условии if-else две ветки выполнения. Для компилятора они равновероятны.
Если не повезёт, в коротком цикле окажется сброс конвейера.

На пример с GET, возможен сброс после каждого символа.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45 Ответы: #66

64. Сообщение от Аноним (26), 17-Апр-21, 19:26   +/
Это был gcc7 linux amd64 проц какой-то тех лет от интела, O2 и native. Разница в кодогенерации была, и была разница в производительности. Кода у меня нет, там было что-то банальное типа for(int i;i<100500;++i) компилятор не стал это оптимизировать и счётчик в регистры не назначался.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #55

65. Сообщение от Аноним (26), 17-Апр-21, 19:28   +/
Цикл не был пустым естественно, он был динамическим и зависел от внешних данных (с диска). Просто переменная счётчика не попадала в регистры процессора из-за чего ощутимо падала производительность.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57

66. Сообщение от Аноним (3), 17-Апр-21, 20:00   +/
Тебе не повезло с процом, если он у тебя конвейер сбрасывает. Процы уже давно спекулятивно исполняют обе ветки после ветвления, отбрасывая потом ненужную уже фоном. Это появилось вскоре, как сделали переименовку регистров.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #63 Ответы: #71

67. Сообщение от Аноним (26), 17-Апр-21, 20:45   +/
Это такой намёк "берите nvidia и блоб", сама nvidia использует наработки llvm в той же cuda.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #53

68. Сообщение от Аноним (68), 17-Апр-21, 23:29   +/
Разработчики пользуются то ли маком, то ли линуксом (возможно, и тем и другим). Бинарные пакеты build2 есть под большинство дистрибутивов Linux - Ubuntu/Debian, Fedora, RedHat/CentOS, вроде есть под Arch и Gentoo (под винду и мак, кстати, вроде нет). Правда, все они неофициальные, потому что официальный способ - собирать из исходников, но бинарные пакеты стабильно поддерживаются и ссылки есть на официальном сайте. Build2 поддерживает сборку приложений под Linux, Win, Mac, FreeBSD, причем даже в своем CI.

Ты, похоже, про какой-то не тот build2 пишешь.

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

69. Сообщение от Аноним (69), 18-Апр-21, 02:40   +/
build2 для программ без сторонних библиотек (хеллоу ворлдов), потому как все сторонние библиотеки ориентированы на CMake
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28

70. Сообщение от Аноним (69), 18-Апр-21, 02:44   +/
> А что там нынче с поддержкой плюсовых модулей?

Плохо, пока нет ни одного компилятора, который их поддерживает в полной мере.

https://en.cppreference.com/w/cpp/compiler_support/20

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

71. Сообщение от Tim (??), 18-Апр-21, 07:47   +/
Такой ерундой страдал 4-ый пень, и грелся аж песец.
Новые процы спекулятивно выполняют только одну ветку.
Или ведут статистику переходов, ака динамическое предсказание, или эвристика... типа к младшим адресам значит цикл, к старшим значит переход маловероятен.
В общем пользуй PGO либо ставь атрибуты.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #66

72. Сообщение от Алкоголик Анон (?), 18-Апр-21, 18:02   +/
> likely, unlikely ...
> Глупости все это -- управление предвыборкой. Не все платформы умеют это делать.
> ia32 и amd64 в подявляющем большинстве случаев не могут эти хинты
> эффективно обработать.
> Самый действенный метод повысить призводительность вычислений -- писать всю математику
> на фортране или прямо на ассемблере платформы.

При чём тут предвыборка вообще?

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

// ...
if(content_coded) [[unlikely]] {
   int buffer[16*1024*1024];
   /* decode content */
}
return content[0];
// :-)

Ну вот. Без unlikely оптимизирующий компилятор может резервировать память под buffer каждый раз при вызове функции (ещё до проверки чего-либо). Также может влиять на inlining...

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

73. Сообщение от iZENemail (ok), 20-Апр-21, 18:43   +/
На FreeBSD сейчас обязательно присутствует ТРИ версии LLVM: системный, LLVM 10.0 для mesa-dri, LLVM 11.0 для Firefox и Thunderbird. И ещё LLVM 9.0 и GCC 10 для сборки чего-то там используется, но это не считается - их можно удалить по окончании сборки.

Вот такой вот "зоопарк" версий, как у MS .Net в своё время.

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


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

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




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

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