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.me/opennews/art.shtml?num=54977

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

Оглавление

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

imho

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

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

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

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

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

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

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

32. "Релиз набора компиляторов LLVM 12.0 "  –1 +/
Сообщение от Аноним (26), 16-Апр-21, 15:42 
> Ой, всё...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

C++ is dead

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

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

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

27. "Релиз набора компиляторов LLVM 12.0 "  +2 +/
Сообщение от YetAnotherOnanym (ok), 16-Апр-21, 15:16 
> "likely" и "unlikely"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

72. "Релиз набора компиляторов LLVM 12.0"  +/
Сообщение от Алкоголик Анон (?), 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...

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

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

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

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

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

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

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

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

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

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

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

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

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

73. "Релиз набора компиляторов LLVM 12.0 "  +/
Сообщение от 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
Добавить, Поддержать, Вебмастеру