Числовая вычислительная среда на облаке?[Студенческий проект] - PullRequest
9 голосов
/ 12 августа 2010

Я студентка факультета компьютерных наук, в настоящее время я учусь на последнем курсе. В качестве моего проекта на последний год я думаю о создании математической вычислительной среды, подобной matlab , в качестве SAAS , которая поддерживает матричные манипуляции, построение графиков функций и данных, операции обработки изображений и т. Д. Java + Scala. Scala будет использоваться для DSL приложения. Остальная часть приложения будет запрограммирована на Java.

Я думал о реализации этой системы на движке приложений Google, чтобы мы могли распараллеливать различные алгоритмы на нескольких серверах и, таким образом, получать более быстрые результаты. Однако у меня нет никакого предшествующего опыта в веб-разработке (за исключением некоторых простых сайтов на PHP).

Итак, у меня были следующие ключевые вопросы:

  1. Прежде всего, имеет ли смысл размещать такое приложение, как matlab, в облаке?
  2. Насколько легко или сложно было бы написать такое приложение через google app engine, учитывая мой ограниченный опыт веб-разработки?
  3. Не могли бы вы указать мне на некоторые уже существующие проекты, которые распараллеливают алгоритмы математической, графической и графической обработки.

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

Любой гепатит был бы очень признателен!

Спасибо!

Ответы [ 7 ]

4 голосов
/ 12 августа 2010

App Engine, вероятно, не подходит для этого. App Engine нацелен на веб-приложения, где каждый запрос выполняет скромное количество вычислений, но вам нужно обслуживать их много - большинство традиционных веб-приложений, таких как сайты социальных сетей, блоги, веб-игры, и так далее и тому подобное. Он не нацелен на службы, которым необходимо выполнять интенсивные вычисления для запроса одного пользователя, и, хотя у него есть службы для параллельной фоновой обработки, они асинхронны, что, вероятно, также не то, что вы хотите для вашего варианта использования.

Я бы порекомендовал взглянуть на другие облачные среды, такие как Amazon EC2, на необходимую вам вычислительную мощность и параллелизм. Тем не менее, App Engine по-прежнему мог бы выполнять замечательную работу в качестве интерфейса для такого сервиса! Например, вы можете использовать приложение App Engine для управления заданиями, отправки их в бэкэнды и включения и выключения экземпляров виртуальных машин в соответствии с требованиями нагрузки.

4 голосов
/ 12 августа 2010

Около полугода назад я думал о создании такой вещи.

Мысли закончились ничем, кроме некоторого кода на http://code.google.com/p/metaplasm...

На самом деле, хитрая вещь с GAE этоэто вычисление должно быть разбито на тридцать секций секодов без разделяемой памяти (только memcache и база данных).После того, как вы это сделаете, все остальное пройдет гладко: -)

3 голосов
/ 12 августа 2010

Это абсолютно логично, и есть два существующих проекта, которые выполняют числовые процедуры в облаке.

Biocep (бесплатно, запускает R & Scilab на EC2 или Eucalyptus) и Monkey Analytics (реклама, запускает R, Octave или Python на EC2).

2 голосов
/ 12 августа 2010

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

Приложение App Engine не может:

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

Это может усложнить предложение типов услуг, которые вы описываете. Масштабирование, которое предлагает GAE, позволяет увеличить количество запросов, которые вы можете обрабатывать, но в действительности не предлагает хороших инструментов для масштабирования ресурсов ЦП для одного запроса.

Похоже, интересная идея для проекта, удачи.

2 голосов
/ 12 августа 2010

Почему бы не попробовать систему распределенных вычислений BOINC с открытым исходным кодом?

http://boinc.berkeley.edu/

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

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

1 голос
/ 12 августа 2010

Для меня не имеет смысла писать остальное на Java. Именно здесь, я думаю, Scala будет иметь наибольшее значение.

0 голосов
/ 03 января 2011

Я размещаю свою интерактивную демонстрацию Java math в Google appengine.Эта непараллельная демонстрационная программа, конечно, выходит за пределы квоты Google Appengine для дорогостоящих запросов.

Но с помощью библиотеки appengine-mapreduce вы можете распараллелить свои математические алгоритмы и обойти эти ограничения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...