OberonCore
https://forum.oberoncore.ru/

День Оберона в Москве (2015)
https://forum.oberoncore.ru/viewtopic.php?f=155&t=5438
Страница 4 из 6

Автор:  prospero78 [ Четверг, 24 Сентябрь, 2015 17:51 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

Соглашусь с тем, что личная встреча важна.
Но. Нам шашечки или ехать?)

Автор:  Info21 [ Четверг, 24 Сентябрь, 2015 19:05 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

prospero78 писал(а):
Нам шашечки или ехать?)
Bandwidth -- это как раз не про шашечки, а про ехать.

Но одно другому ведь не мешает, а, скорее, дополняет.

Автор:  Валерий Лаптев [ Воскресенье, 27 Сентябрь, 2015 07:31 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

СУПЕР!!!
Рифат сабирзянов отметил важные направления развития.
1. Насчет отладчика я с ним не согласен.
Мы в acodemice-semantike сделали не отладчик, а визуализатор.
Именно для показа выполнения алгоритма.
Только демонстрация - для лучшего понимания.
2. Параллельность - важная вещь.
Я последние 2 года интересовался этими вопросами в связи с программированием задач перколяции.
Есть много решений.
OpenMP включать практически обязательно.
Очень хорошо сделано сейчас в стандартной библиотеке С++11.
Там много средств РАЗНОГО уровня. Например треды - это средства НИЗКОГО уровня.
Рекомендую обратить внимание.

Есть МГУшная серия книжке о программировании на суперкомпьютерах.
Там много книжек про параллельность.


Кроме того, надо ж сам компилятор параллелить.
Как сделано в Студии - параллельная компиляция.
Естественно и в БлэкБоксе это сделать, ибо многоядерность уже есть везде.

3. Дракон надо добавлять в БлэкБокс.

ИМХО, надо с параллельности начинать - практически важная весчь.

Автор:  Владимир Паронджанов [ Воскресенье, 27 Сентябрь, 2015 09:10 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

Валерий Лаптев писал(а):
СУПЕР!!!
Рифат сабирзянов отметил важные направления развития.
...............
Мы в acаdemice-semantike сделали не отладчик, а визуализатор.
Именно для показа выполнения алгоритма.
Только демонстрация - для лучшего понимания.
Поддерживаю. Визуализатор для показа выполнения алгоритма — это волшебные очки. Невидимое становится видимым.

Сегодня алгоритмы ходят в шапке-невидимке.
Пора снять шапку-невидимку.
Валерий Лаптев писал(а):
3. Дракон надо добавлять в БлэкБокс.
Поддерживаю

Автор:  Илья Ермаков [ Воскресенье, 27 Сентябрь, 2015 11:34 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

Валерий Лаптев писал(а):
2. Параллельность - важная вещь.
OpenMP включать практически обязательно.
Есть МГУшная серия книжке о программировании на суперкомпьютерах.
Там много книжек про параллельность.


Ну так в прошлом году Иван Денисов делал доклад про использование ББ на кластере, на основе MPI.

Цитата:
Кроме того, надо ж сам компилятор параллелить.

А какая практическая цель, если компиляция быстра и так? Тем более при переходе к семантическому редактору.
Бессмысленное усложнение будет. Ведь в A2 был параллельный компилятор, потом нарвались на глюки, оказался слишком сложен для исправления - переписали последовательно.

Автор:  Илья Ермаков [ Воскресенье, 27 Сентябрь, 2015 11:37 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

Валерий Лаптев писал(а):
1. Насчет отладчика я с ним не согласен.
Мы в acodemice-semantike сделали не отладчик, а визуализатор.
Именно для показа выполнения алгоритма.
Только демонстрация - для лучшего понимания.


Какой-то спец. визуализатор учебный проще сделать для самого начального этапа как отдельный какой-то тренажер (аля Роботландия какая-нибудь). Да и вообще, функции такого визуализатора успешно выполняет кумировский робот, например.
Нет, ну это в ББ может быть, понятное дело, я имею в виду, что визуализировать не всякий алгоритм, а именно работающий с учебным исполнителем.

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

Автор:  Иван Денисов [ Воскресенье, 27 Сентябрь, 2015 12:17 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

Илья Ермаков писал(а):
Валерий Лаптев писал(а):
2. Параллельность - важная вещь.
OpenMP включать практически обязательно.
Есть МГУшная серия книжке о программировании на суперкомпьютерах.
Там много книжек про параллельность.

Ну так в прошлом году Иван Денисов делал доклад про использование ББ на кластере, на основе MPI.

Да, если кому-то эта тема интересна с MPI, то я могу выложить проект. Я хотел перед выкладыванием его как следует протестировать, но в этом году были другие задачи. Тем не менее привязка к самой популярной реализации MPI, которая называется MPICH, у меня сделана и работает. Было бы замечательно скрестить мою реализацию с Files в оперативной памяти, про которую Илья рассказывал. Илья, а можете подсистемой Files в RAM поделиться?

Автор:  Илья Ермаков [ Воскресенье, 27 Сентябрь, 2015 13:30 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

Могу. Записал в планировщик :)
Там просто один модуль.

Автор:  Валерий Лаптев [ Воскресенье, 27 Сентябрь, 2015 15:27 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

Илья Ермаков писал(а):
Ну так в прошлом году Иван Денисов делал доклад про использование ББ на кластере, на основе MPI.

Посмотрю, спасибо.
Но я имел ввиду в библиотеку ББ включить модули, позволяющие писать параллельные проги.
Цитата:
А какая практическая цель, если компиляция быстра и так? Тем более при переходе к семантическому редактору.
Бессмысленное усложнение будет. Ведь в A2 был параллельный компилятор, потом нарвались на глюки, оказался слишком сложен для исправления - переписали последовательно.

Ну, наверное да. Я просто от студии экстаполирую.
Даже относительно небольшие наши проекты Семантик и Акодемика без параллельной компиляции собирались бы гораздо дольше.

Автор:  Александр Ильин [ Воскресенье, 27 Сентябрь, 2015 20:47 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

Валерий Лаптев писал(а):
Кроме того, надо ж сам компилятор параллелить.
Как сделано в Студии - параллельная компиляция.
Поделюсь опытом.
У меня на работе восьмиядерный комп и Студия. Солюшен из 100 проектов, суммарно под 850 тыс. строк. Экспериментировал: делал ребилд солюшена с разным уровнем параллелизма компиляции (опция maximum number of parallel project builds) и замерял время.
С существенным отрывом победило значение "1". То есть, последовательная компиляция без всякого параллелизма.

Потому, что bottleneck в жёстком диске.

Автор:  Kemet [ Воскресенье, 27 Сентябрь, 2015 23:18 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

Илья Ермаков писал(а):
Бессмысленное усложнение будет. Ведь в A2 был параллельный компилятор, потом нарвались на глюки, оказался слишком сложен для исправления - переписали последовательно.

Мы используем старый добрый PACO и никаких проблем не испытываем.
Как я понимаю, Разработчики же поменяли его на инфраструктуру FOX совсем не потому что он сильно сложный, а потому, что разбираться, править баги некому и некогда, - правя баги очередную диссертацию об не напишешь, нужность свою не покажешь. PACO, как и компилятор КП из ББ основан на OP2, который написан через одно место и чтобы в нем разобраться нужно потратить время, и постоянно всё это держать либо в уме, либо печатать много листов всяких разных таблиц, и плотно в этом сидеть, а чтобы что-то поменять, нужно опять приложить некие силы, а лучше вообще переписать. Чтобы не выполнять эту бессмысленную, неблагодарную работу, накатали новую инфраструктуру, получили преференции, профит и кучу ништяков.
Да, в нативном варианте А2 на древних машинах при компиляции часто возникали проблемы, трапы всякие, потому как поток, за отведенное ему время не успевал выполнить задачу, и ждущий результатов другой поток трапался ну и т.п. (тут таки да, зачем многопоточный компилятор на одноядерном проце??? так какое поле для диссертаций и преференций!)И как бэ на таких же древних машинах, но под WinAos таких проблем практически не было. И где искать проблему? А вдруг найдешь? Что потом делать-то ))
В частности и тормозная родная файловая система тут тоже потопталась и баги в ядре. Баги компилятора, конечно вносили свои пять копеек. Но, как я уже говорил, у нас-то проблем с многопоточной компиляцией нет, но у нас и железо и ядро, по-сути, уже другое.

Автор:  Rifat [ Понедельник, 28 Сентябрь, 2015 17:01 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

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

Опишу схематично, как как сейчас происходит процесс компиляции:
синтаксический анализатор начинает компилировать, ожидает появляения ключевого слова MODULE, и вызывает лексический анализатор, чтобы получить первую лексемму -> лексический анализатора обращается к буферу данных -> буфер данных может пока не содержать символы, чтобы считать какой-то блок данных он обращается к операционной системе, чтобы та считала один блок данных из определенного файла. Затем информация возвращается в обратном порядке.

Можно было бы сделать так, чтобы синтаксический анализатор и лексический анализатор работали параллельно и общались посредством какого-нибудь буфера. Пока синтаксический анализатор анализирует какую-то конструкцию, лексический анализатор может добавлять лексеммы в буфер. Думаю, что такая параллельная работа, ускорит компиляцию.

Автор:  Info21 [ Понедельник, 28 Сентябрь, 2015 17:39 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

Коллеги, пож., напомните, какую конкретную проблему должен решать "параллельный" компилятор.

Кстати, подветочку на эту тему хорошо бы выделить (или уже есть такая? тогда туда).

Автор:  Rifat [ Понедельник, 28 Сентябрь, 2015 18:18 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

Распараллеливание компилятора должно представить пример того, как распараллеливать последовательные процессы и за счет этого ускорять процесс.
Конечно, Вы правы, время компиляции не является узким местом у Оберонов и уменьшение времени компиляции, например, с двух секунд до одной секунды не каждый заметит, но бывают и более длительные процессы, которые можно значительно ускорить за счет использования нескольких ядер компьютера.
Если допустим, была какая то программа, которая расчитывала 3D модель сферического коня в вакууме за 24 часа, а после распараллеливания на 4 ядра компьютера, удалось сократить это время до 6 часов, то это было бы значительным достижением.

Автор:  Роман М. [ Понедельник, 28 Сентябрь, 2015 22:07 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

Rifat писал(а):
Конечно, Вы правы, время компиляции не является узким местом у Оберонов и уменьшение времени компиляции, например, с двух секунд до одной секунды не каждый заметит, но бывают и более длительные процессы, которые можно значительно ускорить за счет использования нескольких ядер компьютера.
Если допустим, была какая то программа, которая расчитывала 3D модель сферического коня в вакууме за 24 часа, а после распараллеливания на 4 ядра компьютера, удалось сократить это время до 6 часов, то это было бы значительным достижением.

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

Автор:  Александр Ильин [ Понедельник, 28 Сентябрь, 2015 23:23 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

Rifat писал(а):
По поводу распараллеливания компилятора есть разные подходы, кто-то под этим термином может подразумевать параллельную компиляцию нескольких модулей, а можно подразумевать параллельную работу модулей компилятора.
Компилятор - это же не сложная фабрика с производственными мощностями. Буферизация чтения файла делается на уровне операционной системы, а дальше там и параллелить нечего. Разве что вероятностную оптимизацию какую-нибудь замутить.

Коллеги, или я не прав?

Автор:  kemiisto [ Вторник, 29 Сентябрь, 2015 00:15 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

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

Ну, это ведь от объёма кода зависит. Понятно, что если есть десяток модулей, то параллелить действительно особо нечего, но на больших объёмах кода будет существенный выигрыш от параллельной компиляции нескольких (независимых) модулей. Возьмите для примера что-то величиной хотя бы с Qt и соберите с make и make -jX (где X обычно выбирают примерно равным числу ядер) и увидите, что смысл есть. Только тут ведь совсем не компилятор параллельный, а система сборки.

По сути предложения присоединяюсь к вопросу Info21: не очень понятно, какую конкретную задачу решит параллельный компилятор даже в вышеописанном варианте с суть последовательным компилятором, но параллельной системой сборки. У кого-то есть такие объёмы кода на КП, что можно ожидать сколь-нибудь существенного выигрыша или просто что-бы было? Если второе, то... Ну не знаю, с моей колокольни, мягко скажем, не самая нужная вещь. Есть и поважнее...

И по поводу предложения Валерия Лаптева добавить возможность писать "параллельные проги", я поднимаю тот же самый вопрос, что Info21 задал по поводу параллельного компилятора: зачем? Те, кому нужен параллелизм ("числодробильщики" всякие, по большей части) пишут на Fortran/С++. Так вот, подвинуть эту парочку - это из области фантастики. Как там было у Чарльз "нашего" Хоара/Хоора?
Цитата:
I don't know what the language of the year 2000 will look like, but I know it will be called Fortran.

Не проще изучить Fortran, чем мечтать о параллельности в Oberon? Там не так уж всё плохо. Есть, конечно, вещи от которых прям смердит, но обратная совместимости, чтоб её... :(

Автор:  Иван Денисов [ Вторник, 29 Сентябрь, 2015 06:26 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

Если кому-то нужен реально такой компилятор, то его не проблема сейчас сделать доступными средствами, даже есть выбор: либо напрямую через сообщения по TCP между параллельно запущенными ББ, либо через библиотеку MPICH, которая сама параллельно запустит несколько ББ. Однако наличие технической возможности, не отменяет более сложную алгоритмическую задачу определять какие модули надо куда на компиляцию передать, чтобы были все зависимости разрешены в каждом из процессов :)

Автор:  Валерий Лаптев [ Вторник, 29 Сентябрь, 2015 10:13 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

Роман М. писал(а):
Таким образом нужно работать не над улучшением скорости работы компилятора, а над предоставлением возможностей программисту для параллельных вычислений. Вопрос тогда состоит в том, можно ли обойтись при этом библиотечными средствами или же надо изменять язык?
Если библиотечными средствами, то хотя бы чтобы не надо было самим писать обёртки над сишными библиотеками.

1. Можно распаралелить в компиляторе трансляцию модулей по ядрам - пожалуй и хватит.
2. Менять язык не нужно. Даже в С++ этого делать не стали. Надо просто средства параллельного программирования реализовать в библиотеке.
а) OpenMP - она практически везде работает.
б) явные средства.
Мне очень нравится, что сделано в стандартной библиотеке С++ сейчас - немного познакомился.
Треды - это НИЗКОУРОВНЕВЫЕ средства, хотя я ими сейчас пользуюсь в реализации моделирования перколяции.
Есть книжка Уильямса: http://www.ozon.ru/context/detail/id/26893657/
В ней все просто классно расписано.
Ну, и книжка Джосатиса: http://www.ozon.ru/context/detail/id/27978215/

Мне видится, что надо реализовать две вещи:
а) стандарт POSIX
b) высокоуровневую надстройку

Автор:  Пётр Кушнир [ Вторник, 29 Сентябрь, 2015 10:46 ]
Заголовок сообщения:  Re: День Оберона в Москве (2015)

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

Страница 4 из 6 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/