Есть ли решение для ускорения локального процесса с использованием удаленных процессоров ПК (и / или GPU)?

Мое идеальное решение должно:

  • работать без необходимости переписывать приложение для использования определенной библиотеки ;
  • работа на разнородных ОС и арках (при необходимости, с использованием динамической перекомпиляции);
  • аварийное переключение службы поддержки: если некоторые сетевые узлы выходят из строя, выполнение может продолжаться на оставшихся узлах (или даже локально, если основной узел стал изолированным).

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

1 ответ1

0

is there a solution to accelerate a local process using remote PC CPUs (and/or GPU)?

Да, то, что вы описываете, называется компьютерным кластером. Но я полагаю, вы уже знали это, потому что вы пометили вопрос как таковой. Поэтому я рассмотрю ваши пункты:

work without the need to rewrite the app to use a specific library;

Нет. Таким же образом многопоточное приложение должно быть написано для использования многоядерного ЦП, распределенное приложение должно быть написано для распределения его рабочей нагрузки между узлами в кластере. С точки зрения логистики, это та же проблема, что и с людьми, работающими вместе как часть команды. Вы должны придумать план, разбить его на отдельные задачи, делегировать эти задачи определенным людям, а затем координировать с этими людьми, чтобы выполнить работу. Это должно быть сделано так, потому что другие люди не могут поделиться вашей памятью, услышать ваши мысли или увидеть ваше видение в вашей голове.

work on heterogeneous OSes and archs (using dynamic recompilation if necessary);

Это возможно либо с клиентом, написанным для каждой целевой платформы, либо с общим языком, таким как Java или Python.

support service fail-over: if some network nodes go down execution can still proceed on the remaining nodes (or even just locally if the main node became isolated).

Хорошо написанное распределенное приложение не должно беспокоиться о выходе узла из строя. Вычислительные задачи разбиваются на сегменты "главным узлом" и делегируются процессорам из списка. Если узел обработки выходит из строя, эти задачи никогда не выполняются и остаются в списке для обработки другими узлами.


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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .