OberonCore https://forum.oberoncore.ru/ |
|
Оптимизирующий компилятор https://forum.oberoncore.ru/viewtopic.php?f=61&t=6340 |
Страница 2 из 3 |
Автор: | Comdiv [ Среда, 09 Январь, 2019 17:38 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
Rifat писал(а): В книге Вирта "Построение компилятора" есть целая глава посвященная оптимизации. Там говорится о том, что надо соизмерять усложнение компилятора от реализации поддержки оптимизаций и выгоду от оптимизации кода. Но не говорится о том, что все оптимизации плохи. Я вёл речь о мало-мальски сложных оптимизациях. А так-то и в Blackbox оптимизирующий компилятор. Разве такие оптимизации Вы имели ввиду? Да и речь шла не про хорошесть-плохость, а о "Oberon way". В применении генераторов парсеров и AST тоже ничего плохого нет.Comdiv писал(а): Для начала можно сделать что-то похожее на Перенацеливаемый оптимизирующий Модула-2/Оберон-2 компилятор. Насколько я знаю исходники закрыты, но могут быть открыты за 50 кило евро (где-то на форуме была такая инфа). Вот у Недори можно поинтересоваться, насколько они простые. Он, кстати, сам LLVM предпочитает использовать, и всячески его нахваливал с позиции разработчика компилятора с ноля.
|
Автор: | Comdiv [ Среда, 09 Январь, 2019 17:42 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
Борис Рюмшин писал(а): еправильно выразился, Intermediate Representation. Ну вот и IR - это не код RISC машины.Борис Рюмшин писал(а): Но при чём тут тогда: А чем Вы хотите транслировать IR в машинный код. Или мы ведём речь о разных IR?
Comdiv писал(а): ...вряд ли llvm сильно поможет, так как заточен под языки уровня С++ если речь идёт о RISC-образном Intermediate Representation? |
Автор: | Comdiv [ Среда, 09 Январь, 2019 17:45 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
Борис Рюмшин писал(а): За 50K вам его модернизировать могут до нужной архитектуры, а не исходники отдать. То есть, с практической точки зрения, вероятность воплощения транслятора с простыми, но мощными оптимизациями можно оценить близким к 0
|
Автор: | Борис Рюмшин [ Среда, 09 Январь, 2019 17:51 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
Comdiv писал(а): Борис Рюмшин писал(а): За 50K вам его модернизировать могут до нужной архитектуры, а не исходники отдать. То есть, с практической точки зрения, вероятность воплощения транслятора с простыми, но мощными оптимизациями можно оценить близким к 0На любые работы нужен определённый бюджет. Либо финансовый, либо временной. Florian Klämpfl со товарищи уже вон 25-лет FreePascal пилит и вполне успешно. Кстати, без всяких LLVM и GCC обходятся. |
Автор: | Борис Рюмшин [ Среда, 09 Январь, 2019 18:00 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
Comdiv писал(а): А чем Вы хотите транслировать IR в машинный код. Или мы ведём речь о разных IR? При помощи LLVM. К хаосу детали, я не углублялся в структуру этой хрени. Но, на сколько я понимаю, https://llvm.org/docs/LangRef.html писал(а): 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 с оптимизацией и генерацией целевого кода.
|
Автор: | Comdiv [ Среда, 09 Январь, 2019 18:04 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
Цитата: На любые работы нужен определённый бюджет. Либо финансовый, либо временной Разумеется, нужен бюджет, но некоторые верят в воплотимость малыми силами. Цитата: Florian Klämpfl со товарищи уже вон 25-лет FreePascal пилит и вполне успешно. Кстати, без всяких LLVM и GCC обходятся. Звучит, как демотиватор, учитывая сравнение характеристик. Я, кстати, слышал, что они хотели прикрутить LLVM, да пока не выходит.Цитата: значит именно его можно генерировать Конечно, я и писал, что RISC VM не нужен для этой задачи. Наоборот, IR лучше подходит для промежуточной кодогенерации.
|
Автор: | Борис Рюмшин [ Среда, 09 Январь, 2019 18:07 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
Comdiv писал(а): Цитата: Florian Klämpfl со товарищи уже вон 25-лет FreePascal пилит и вполне успешно. Кстати, без всяких LLVM и GCC обходятся. Звучит, как демотиватор, учитывая сравнение характеристик. Я, кстати, слышал, что они хотели прикрутить LLVM, да пока не выходит.Вся индустрия может звучать, как демотиватор. |
Автор: | Борис Рюмшин [ Среда, 09 Январь, 2019 18:15 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
Comdiv писал(а): Цитата: значит именно его можно генерировать Конечно, я и писал, что RISC VM не нужен для этой задачи. Наоборот, IR лучше подходит для промежуточной кодогенерации.А я о чём? Стоило столько сообщений согласовывать очевидное? |
Автор: | Rifat [ Среда, 09 Январь, 2019 18:39 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
Про LLVM и его минусы я уже писал. Если кто хочет можете создать отдельную тему про LLVM. Про мощные и простые методы оптимизации. Так сразу я не скажу, какие методы позволят этого добиться. Это надо исследовать, возможно, экспериментировать. И затем только выяснится какие оптимизации дают самые существенные улучшения. А какие оптимизации дают только незначительные улучшения. Как раз такие темы и надо обсуждать, если будут желающие. |
Автор: | Comdiv [ Среда, 09 Январь, 2019 18:41 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
Борис Рюмшин писал(а): А я о чём? Стоило столько сообщений согласовывать очевидное? Смотря на то, о чём Вы. Как ещё понять друг друга, кроме как согласовывая? Начали мы, вроде бы, с C VS IR, а закончили RISC VS IR. 1. LLVM IR удобней для промежуточный генерации чем гипотетический LLVM IR RISC 2. Генерация в IR, заточенный под С и С++, не даст значимых преимуществ по скорости по сравнению с генерацией в С 3. Генераторы в С уже есть, генераторы в IR только будут. 4. С обладает более высокой переносимостью, чем LLVM IR Так? |
Автор: | Comdiv [ Среда, 09 Январь, 2019 18:44 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
Rifat писал(а): Про мощные и простые методы оптимизации. Так сразу я не скажу, какие методы позволят этого добиться. Это надо исследовать, возможно, экспериментировать. Может, уже наисследовано и наэкспериментировано? Ведь, если нет, то это тоже гора работы.
|
Автор: | Trurl [ Среда, 09 Январь, 2019 18:45 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
Rifat писал(а): Для начала можно сделать что-то похожее на Перенацеливаемый оптимизирующий Модула-2/Оберон-2 компилятор. Можно взять OOC и прикрутить к нему кодогенератор в ассемблер. Насколько я понял, так вначале и планировалось. |
Автор: | Борис Рюмшин [ Среда, 09 Январь, 2019 20:43 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
LLVM я предложил как один из вариантов применения готовой оптимизации, а не как панацею. Обсуждать тут детали IR ли, не IR ли, тот ли IR или не тот, и прочая вообще незачем. |
Автор: | Kemet [ Четверг, 10 Январь, 2019 06:22 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
Борис Рюмшин писал(а): Кстати, без всяких LLVM и GCC обходятся. А оно там, как ни странно, уже есть, хотя и не допиленное ещё. Но тоже ныли, llvm убьёт паскаль, нет стимула что-то делать, раз есть llvm.
|
Автор: | Kemet [ Четверг, 10 Январь, 2019 06:26 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
Борис Рюмшин писал(а): значит именно его можно генерировать, а дальше уже работа LLVM с оптимизацией и генерацией целевого кода. Такой компилятор есть, вернее был, так как после изменений в llvm он не работает. Там пошли по самому простому пути - генерация асссемблерных файлов ir, это обычный текст, для старта вполне достаточно.
|
Автор: | Kemet [ Четверг, 10 Январь, 2019 06:35 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
Comdiv писал(а): 2. Генерация в IR, заточенный под С и С++, не даст значимых преимуществ по скорости по сравнению с генерацией в С Оно не заточено по С и С++, можешь хоть на ассемблере писать, хоть на обероне, оно достаточно эффективно сгенерирует код, к тому же, есть фаза оптимизации ir, есть машинная фаза оптимизации под конкретную архитектуру, какое отношение архитектура x86 имеет к С и С++? Comdiv писал(а): 3. Генераторы в С уже есть, генераторы в IR только будут. С генераторами в С нет никакой возможности управлять этим увлекательным процессом, нет возможности сгенерировать необходимое представление внутренних структур в памяти, а с llvm ir ты укладываешь кирпичики из битиков, байтиков, слов... , как тебе угодно, полное управление. |
Автор: | Борис Рюмшин [ Четверг, 10 Январь, 2019 12:22 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
Kemet писал(а): Борис Рюмшин писал(а): Кстати, без всяких LLVM и GCC обходятся. А оно там, как ни странно, уже есть, хотя и не допиленное ещё. Но тоже ныли, llvm убьёт паскаль, нет стимула что-то делать, раз есть llvm.Опять таки, я ФриПаскаль привёл, как пример проекта компилятора отличного от GCC и LLVM, над которым уже 25 лет работают, а не как образцовый пример компилятора. |
Автор: | Comdiv [ Четверг, 10 Январь, 2019 13:25 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
Kemet писал(а): Оно не заточено по С и С++, можешь хоть на ассемблере писать, хоть на обероне Можно писать на чём угодно, это обеспечивает алгоритмическая полнота, но заточенность обеспечивает большую эффективность той системе, которая к ней ближе. Именно об этом речь. У системы, заточенной под ограничения Оберона больший потенциал оптимизации, чем через LLVM, поэтому, к примеру, наиболее эффективные реализации Java работают не через LLVM, несмотря на наличие последнего. Другое дело, что раскрыть этот потенциал очень трудоёмкоKemet писал(а): оно достаточно эффективно сгенерирует код это нигде и не оспаривалосьKemet писал(а): к тому же, есть фаза оптимизации ir, есть машинная фаза оптимизации под конкретную архитектуру, какое отношение архитектура x86 имеет к С и С++? Приблизительно такое же, как архитектура Reduceron имеет отношение к Haskell, но какое это имеет отношение к теме? Может быть, компиляторы Си не на LLVM не делают машинозависмых оптимизаций?Kemet писал(а): С генераторами в С нет никакой возможности управлять этим увлекательным процессом, нет возможности сгенерировать необходимое представление внутренних структур в памяти, а с llvm ir ты укладываешь кирпичики из битиков, байтиков, слов... , как тебе угодно, полное управление. Я в будущем хотел бы задействовать LLVM, но на значимое ускорение не рассчитываю. Если Вы знаете, как нужно укладывать байтики в LLVM для Оберона, чтобы это дало существенный прирост по сравнению с Си, пожалуйста, расскажите об этом. Кисельные берега мне малоинтересны.
|
Автор: | Rifat [ Четверг, 10 Январь, 2019 15:16 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
Comdiv писал(а): У системы, заточенной под ограничения Оберона больший потенциал оптимизации, чем через LLVM Это должно быть так, то есть теоретически можно обогнать Си по производительности и получить звание самого быстрого языка программирования. |
Автор: | Comdiv [ Четверг, 10 Январь, 2019 16:19 ] |
Заголовок сообщения: | Re: Оптимизирующий компилятор |
Я имел ввиду, что гипотетическая специализированная под Оберон система даёт гипотетическую же возможность оптимизировать программы на Обероне сильней, чем система, созданная для С. Это не означает, что это даёт преимущество в скорости языку. Тут играет близость языка задаче, привычкам программиста и целевой машине. Если Вы знаете о вещах в Обероне, которые положительно влияют на оптимизацию по сравнению с Си, то озвучьте их. Могу начать с того, что структурный поток управления лучше подходит для статического анализа, который, возможно, позволит провести более глубокую оптимизацию, но это ещё надо доказать. |
Страница 2 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |