OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 22:45

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 52 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 17:38 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Rifat писал(а):
В книге Вирта "Построение компилятора" есть целая глава посвященная оптимизации. Там говорится о том, что надо соизмерять усложнение компилятора от реализации поддержки оптимизаций и выгоду от оптимизации кода. Но не говорится о том, что все оптимизации плохи.
Я вёл речь о мало-мальски сложных оптимизациях. А так-то и в Blackbox оптимизирующий компилятор. Разве такие оптимизации Вы имели ввиду? Да и речь шла не про хорошесть-плохость, а о "Oberon way". В применении генераторов парсеров и AST тоже ничего плохого нет.

Comdiv писал(а):
Для начала можно сделать что-то похожее на Перенацеливаемый оптимизирующий Модула-2/Оберон-2 компилятор. Насколько я знаю исходники закрыты, но могут быть открыты за 50 кило евро :) (где-то на форуме была такая инфа).
Вот у Недори можно поинтересоваться, насколько они простые. Он, кстати, сам LLVM предпочитает использовать, и всячески его нахваливал с позиции разработчика компилятора с ноля.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 17:42 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Борис Рюмшин писал(а):
еправильно выразился, Intermediate Representation.
Ну вот и IR - это не код RISC машины.

Борис Рюмшин писал(а):
Но при чём тут тогда:
Comdiv писал(а):
...вряд ли llvm сильно поможет, так как заточен под языки уровня С++
если речь идёт о RISC-образном Intermediate Representation?
А чем Вы хотите транслировать IR в машинный код. Или мы ведём речь о разных IR?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 17:45 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Борис Рюмшин писал(а):
За 50K вам его модернизировать могут до нужной архитектуры, а не исходники отдать.
То есть, с практической точки зрения, вероятность воплощения транслятора с простыми, но мощными оптимизациями можно оценить близким к 0


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 17:51 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Comdiv писал(а):
Борис Рюмшин писал(а):
За 50K вам его модернизировать могут до нужной архитектуры, а не исходники отдать.
То есть, с практической точки зрения, вероятность воплощения транслятора с простыми, но мощными оптимизациями можно оценить близким к 0

На любые работы нужен определённый бюджет. Либо финансовый, либо временной. Florian Klämpfl со товарищи уже вон 25-лет FreePascal пилит и вполне успешно. Кстати, без всяких LLVM и GCC обходятся.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 18:00 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Comdiv писал(а):
А чем Вы хотите транслировать IR в машинный код. Или мы ведём речь о разных IR?

При помощи LLVM. К хаосу детали, я не углублялся в структуру этой хрени. Но, на сколько я понимаю,
The LLVM code representation is designed to be used in three different forms: as an in-memory compiler IR, as an on-disk bitcode representation (suitable for fast loading by a Just-In-Time compiler), and as a human readable assembly language representation.
значит именно его можно генерировать, а дальше уже работа LLVM с оптимизацией и генерацией целевого кода.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 18:04 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Цитата:
На любые работы нужен определённый бюджет. Либо финансовый, либо временной
Разумеется, нужен бюджет, но некоторые верят в воплотимость малыми силами.
Цитата:
Florian Klämpfl со товарищи уже вон 25-лет FreePascal пилит и вполне успешно. Кстати, без всяких LLVM и GCC обходятся.
Звучит, как демотиватор, учитывая сравнение характеристик. Я, кстати, слышал, что они хотели прикрутить LLVM, да пока не выходит.
Цитата:
значит именно его можно генерировать
Конечно, я и писал, что RISC VM не нужен для этой задачи. Наоборот, IR лучше подходит для промежуточной кодогенерации.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 18:07 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Comdiv писал(а):
Цитата:
Florian Klämpfl со товарищи уже вон 25-лет FreePascal пилит и вполне успешно. Кстати, без всяких LLVM и GCC обходятся.
Звучит, как демотиватор, учитывая сравнение характеристик. Я, кстати, слышал, что они хотели прикрутить LLVM, да пока не выходит.

Вся индустрия может звучать, как демотиватор.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 18:15 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Comdiv писал(а):
Цитата:
значит именно его можно генерировать
Конечно, я и писал, что RISC VM не нужен для этой задачи. Наоборот, IR лучше подходит для промежуточной кодогенерации.

А я о чём? Стоило столько сообщений согласовывать очевидное?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 18:39 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Про LLVM и его минусы я уже писал. Если кто хочет можете создать отдельную тему про LLVM.

Про мощные и простые методы оптимизации. Так сразу я не скажу, какие методы позволят этого добиться. Это надо исследовать, возможно, экспериментировать. И затем только выяснится какие оптимизации дают самые существенные улучшения. А какие оптимизации дают только незначительные улучшения. Как раз такие темы и надо обсуждать, если будут желающие.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 18:41 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Борис Рюмшин писал(а):
А я о чём? Стоило столько сообщений согласовывать очевидное?

Смотря на то, о чём Вы. Как ещё понять друг друга, кроме как согласовывая? Начали мы, вроде бы, с C VS IR, а закончили RISC VS IR.

1. LLVM IR удобней для промежуточный генерации чем гипотетический LLVM IR RISC
2. Генерация в IR, заточенный под С и С++, не даст значимых преимуществ по скорости по сравнению с генерацией в С
3. Генераторы в С уже есть, генераторы в IR только будут.
4. С обладает более высокой переносимостью, чем LLVM IR

Так?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 18:44 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Rifat писал(а):
Про мощные и простые методы оптимизации. Так сразу я не скажу, какие методы позволят этого добиться. Это надо исследовать, возможно, экспериментировать.
Может, уже наисследовано и наэкспериментировано? Ведь, если нет, то это тоже гора работы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 18:45 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Rifat писал(а):
Для начала можно сделать что-то похожее на Перенацеливаемый оптимизирующий Модула-2/Оберон-2 компилятор.

Можно взять OOC и прикрутить к нему кодогенератор в ассемблер. Насколько я понял, так вначале и планировалось.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Среда, 09 Январь, 2019 20:43 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
LLVM я предложил как один из вариантов применения готовой оптимизации, а не как панацею. Обсуждать тут детали IR ли, не IR ли, тот ли IR или не тот, и прочая вообще незачем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Четверг, 10 Январь, 2019 06:22 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 717
Откуда: Барнаул
Борис Рюмшин писал(а):
Кстати, без всяких LLVM и GCC обходятся.
А оно там, как ни странно, уже есть, хотя и не допиленное ещё. Но тоже ныли, llvm убьёт паскаль, нет стимула что-то делать, раз есть llvm.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Четверг, 10 Январь, 2019 06:26 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 717
Откуда: Барнаул
Борис Рюмшин писал(а):
значит именно его можно генерировать, а дальше уже работа LLVM с оптимизацией и генерацией целевого кода.
Такой компилятор есть, вернее был, так как после изменений в llvm он не работает. Там пошли по самому простому пути - генерация асссемблерных файлов ir, это обычный текст, для старта вполне достаточно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Четверг, 10 Январь, 2019 06:35 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 717
Откуда: Барнаул
Comdiv писал(а):
2. Генерация в IR, заточенный под С и С++, не даст значимых преимуществ по скорости по сравнению с генерацией в С

Оно не заточено по С и С++, можешь хоть на ассемблере писать, хоть на обероне, оно достаточно эффективно сгенерирует код, к тому же, есть фаза оптимизации ir, есть машинная фаза оптимизации под конкретную архитектуру, какое отношение архитектура x86 имеет к С и С++?
Comdiv писал(а):
3. Генераторы в С уже есть, генераторы в IR только будут.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Четверг, 10 Январь, 2019 12:22 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Kemet писал(а):
Борис Рюмшин писал(а):
Кстати, без всяких LLVM и GCC обходятся.
А оно там, как ни странно, уже есть, хотя и не допиленное ещё. Но тоже ныли, llvm убьёт паскаль, нет стимула что-то делать, раз есть llvm.

Опять таки, я ФриПаскаль привёл, как пример проекта компилятора отличного от GCC и LLVM, над которым уже 25 лет работают, а не как образцовый пример компилятора. :roll:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Четверг, 10 Январь, 2019 13:25 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Kemet писал(а):
Оно не заточено по С и С++, можешь хоть на ассемблере писать, хоть на обероне
Можно писать на чём угодно, это обеспечивает алгоритмическая полнота, но заточенность обеспечивает большую эффективность той системе, которая к ней ближе. Именно об этом речь. У системы, заточенной под ограничения Оберона больший потенциал оптимизации, чем через LLVM, поэтому, к примеру, наиболее эффективные реализации Java работают не через LLVM, несмотря на наличие последнего. Другое дело, что раскрыть этот потенциал очень трудоёмко
Kemet писал(а):
оно достаточно эффективно сгенерирует код
это нигде и не оспаривалось
Kemet писал(а):
к тому же, есть фаза оптимизации ir, есть машинная фаза оптимизации под конкретную архитектуру, какое отношение архитектура x86 имеет к С и С++?
Приблизительно такое же, как архитектура Reduceron имеет отношение к Haskell, но какое это имеет отношение к теме? Может быть, компиляторы Си не на LLVM не делают машинозависмых оптимизаций?

Kemet писал(а):
С генераторами в С нет никакой возможности управлять этим увлекательным процессом, нет возможности сгенерировать необходимое представление внутренних структур в памяти, а с llvm ir ты укладываешь кирпичики из битиков, байтиков, слов... , как тебе угодно, полное управление.
Я в будущем хотел бы задействовать LLVM, но на значимое ускорение не рассчитываю. Если Вы знаете, как нужно укладывать байтики в LLVM для Оберона, чтобы это дало существенный прирост по сравнению с Си, пожалуйста, расскажите об этом. Кисельные берега мне малоинтересны.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Четверг, 10 Январь, 2019 15:16 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Comdiv писал(а):
У системы, заточенной под ограничения Оберона больший потенциал оптимизации, чем через LLVM

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптимизирующий компилятор
СообщениеДобавлено: Четверг, 10 Январь, 2019 16:19 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Я имел ввиду, что гипотетическая специализированная под Оберон система даёт гипотетическую же возможность оптимизировать программы на Обероне сильней, чем система, созданная для С. Это не означает, что это даёт преимущество в скорости языку. Тут играет близость языка задаче, привычкам программиста и целевой машине. Если Вы знаете о вещах в Обероне, которые положительно влияют на оптимизацию по сравнению с Си, то озвучьте их.

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 52 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB