2010-08-12 10 views
9

Soy un estudiante de ciencias de la computación actualmente en mi último año. Como proyecto de mi último año, estoy pensando en crear un entorno informático numérico tipo matlab como SAAS que admita manipulaciones de matrices, trazado de funciones y datos, operaciones de procesamiento de imágenes, etc. El proyecto se creará en Java + Scala. Scala se usará para la DSL de la aplicación. El resto de la aplicación se programará en Java.Entorno informático numérico en la nube? [Undergrad Project]

Estaba pensando en implementar este sistema en el motor de la aplicación de Google para poder paralelizar varios algoritmos en varios servidores y así obtener resultados más rápidos. Sin embargo, no tengo ninguna experiencia previa con el desarrollo web (excepto algunos sitios simples en PHP).

así que tenía las siguientes preguntas clave:

  1. En primer lugar, ¿tiene sentido tener una aplicación como Matlab alojado en la nube?
  2. ¿Qué tan fácil o difícil sería escribir una aplicación sobre el motor de la aplicación de Google, teniendo en cuenta mi experiencia limitada con el desarrollo web?
  3. ¿Puede indicarme algunos proyectos ya existentes que paralelizan los algoritmos matemáticos, gráficos y de procesamiento de imágenes.

Sé que la pregunta es muy subjetiva, pero aún así les pido a todos que no la cierren, ya que estoy muy confundido con respecto a mi proyecto y necesito algunos consejos de expertos.

¡Cualquier hepatitis sería muy apreciada!

Gracias!

+0

Eliminé la etiqueta de pregrado de proyectos, ya que parece ajustarse al concepto de "metatag", que se eliminó del desbordamiento de pila y cia. –

Respuesta

2

¿Por qué no probar el sistema de computación distribuida BOINC opensource?

http://boinc.berkeley.edu/

Permite múltiples plataformas, múltiples ambientes y servicios de alojamiento todo tipo de trabajos cálculo numérico dependiendo de entornos paralelos.

Además, no necesita ningún conocimiento de desarrollo web. Solo necesita crear un nuevo proyecto en BOINC e intentar ejecutarlo en el entorno informático voluntario existente.

+1

BOINC, según mi leal saber y entender, está dirigido a grandes trabajos por lotes, pero el OP pregunta por el uso interactivo o casi interactivo. –

2

Es posible que encuentre problemas con este tipo de servicio en GAE, ya que es bastante restrictivo en lo que se le permite hacer en la zona de pruebas. Desde la aplicación de motor de un App GAE Docs

no puede:

  • generar un sub-proceso o hilo. Una solicitud web a una aplicación debe ser manejada en un único proceso dentro de un tiempo de . Los procesos que tardan un tiempo muy largo en responder son terminados para evitar sobrecargar el servidor web .

Esto podría dificultar la oferta de los tipos de servicios que describe.La escalabilidad que ofrece GAE le permite aumentar el número de solicitudes que puede manejar, pero realmente no le ofrece buenas herramientas para escalar los recursos de la CPU para una única solicitud.

Aunque suena como una idea interesante para un proyecto, buena suerte.

4

Hace aproximadamente medio año que pensé en hacer tal cosa.

Pensamientos terminaron con nada más que un poco de código en http://code.google.com/p/metaplasm ...

De hecho, la cosa difícil con GAE es que el cálculo debe ser cortado en rodajas treinta secods sin memoria compartida (sólo Memcache y base de datos). Una vez que hayas logrado eso, todo lo demás funcionará bien :-)

4

App Engine probablemente no sea la plataforma adecuada para esto. App Engine está dirigido a aplicaciones web en las que cada solicitud realiza una cantidad modesta de computación, pero debe brindar un servicio lote, la mayoría de las aplicaciones web tradicionales, como sitios de redes sociales, blogs, juegos basados ​​en la web, etc. etcétera. No está dirigido a los servicios que necesitan realizar cálculos intensivos para una sola solicitud de usuario, y si bien tiene servicios para procesar en segundo plano en paralelo, son asíncronos, lo que probablemente tampoco sea lo que usted desea para su caso de uso.

Lo que recomendaría es buscar en otros entornos de nube, como el EC2 de Amazon, la potencia de procesamiento y el paralelismo que necesita. ¡Sin embargo, App Engine todavía haría un trabajo admirable como interfaz para este tipo de servicio! Por ejemplo, podría usar una aplicación de App Engine para administrar trabajos, enviarlos a servidores y mostrar instancias de VM según lo requiera la carga.

3

Esto tiene sentido, y hay dos proyectos existentes que ejecutan rutinas numéricas en la nube.

Biocep (libre, pistas R & Scilab en EC2 o Eucalyptus) y Monkey Analytics (comercial, se ejecuta R, Octave o Python en EC2).

+0

Star Cluster es otro http://web.mit.edu/stardev/cluster/ (incluye Python + NumPy/SciPy optimizado para herramientas de administración EC2 +) – robince

1

Tengo poco sentido para mí escribir el resto en Java. Es precisamente allí donde creo que Scala marcaría la diferencia.

+0

¿Por qué? ¿Cuáles son los pros y los contras? – Mikhail

0

Estoy alojando mi Java math online demo en Google appengine. Por supuesto, esta demostración no paralelizada cumple con los límites de la cuota de Google Appengine para solicitudes costosas en el tiempo.

Pero con la ayuda de appengine-mapreduce library puede paralelizar sus algoritmos matemáticos y evitar estos límites.

Cuestiones relacionadas