Skip to content

It`s my indidual project! I`m Voronov Nikita, 11th grade student.

License

Notifications You must be signed in to change notification settings

voronov-nikita/DiComp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Индивидуальный проект

Метод распределения вычислений

image

Content

  1. About
  2. Description
  3. Useful Links
  4. More information
  5. Keywords

About

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

Description

Основной код описан в двух файлах в папке scr. Код серверной части описан в файле server.py, а код клиентской части описан в файле dicomp.py.

Для нормальной работы рекомендую прочитать документацию к проекту: Documentation

Лицензия открытого исходного кода представлена в файле LICENSE

Исходный код распространяется под лицензией MIT.

Useful Links

  1. python - python.org

  2. pypi - pypi.org

  3. Курс "Параллельные и распределенные вычисления" - youtube.com

    Материал представлен на русском языке от канала Компьютерные науки. Лекции читает О.В.Сухолов. Курс отпределен как куср-ШАД - Школа Анализа Данных от кампании Яндекс. ВНИМАНИЕ! В курсе представлены решения на Java, рекомендуется знать его.

  4. Что такое распределение вычислений - ru.wikipedia.org

More Information

Реализация метода распределения вычислений обычно выполняется на быстрых и стандартных языках программирования, такие как Java или C/C++. Однако, на данный момент, изучение нового языка программирования немного нецелесообразно, в связи с этим, реализация будет на более понятном и изученном мной языке - Python. Python так же поддерживает многопоточность, что важно для реализации метода.

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

При работе были использованы библиотеки python:

  1. threading -> для многопоточности сервера;
  2. os -> для удаления временных файлов программы;
  3. inspect -> для получения исходного кода декорируемой функции;
  4. socket -> для обьединения серверной и клиентской частей;
  5. subprocess -> для выполнения полученного кода и получения данных из терминала.

23.06.2023 - первый масштабный прогресс!

Теперь вычислени происходят.

Я заметил, что присутсвует какой-то странный вывод от сервера, позже я заметил ту деталь, которую мог незаметить только слепой: моя функция не вызывается!?! поэтому выводилась пустота, теперь осталось самая малость, сделать так, чтобы можно было один раз отправить полный файл, теперь это более понятно как сделать, только объеденить две функции у клиента.


05.08.2023 - исправлены многие ошибки, такие как:

  1. Ошибка с вычислением маленьких чисел
  2. Ошибка с возвращением ошибок
  3. Ошибка с вызовом функции несколько раз;

Код на сервере теперь работает куда быстрее за счет возможности использования Pypy;

Сервер теперь многопоточен, что позволит одновременно вычислять несколько задач;

01.11.2023 -добвлена информация:

  1. добавлена базовая документация по пользованию библиотекой;
  2. добавлена документация, описывающая части кода клиентской части;
  3. добавлена документация, описывающая части кода серверной части;

Keywords

  1. Flow (Поток) - наименьшая единица обработки, исполнение которой может быть назначено ядром операционной системы.
  2. Process (Процесс) - это выполняющаяся программа. Один или несколько потоков выполняются в контексте процесса.
  3. Cluster (Кластер) - группа компьютеров, объединённых высокоскоростными каналами связи, представляющая с точки зрения пользователя единый аппаратный ресурс.
  4. Parallel computing (Параллельные вычисления) - способ организации компьютерных вычислений, при котором программы разрабатываются как набор взаимодействующих вычислительных процессов, работающих параллельно (одновременно).


27.03.2024 - last change.

About

It`s my indidual project! I`m Voronov Nikita, 11th grade student.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published