 Buenas tardes, yo soy Rubén Jiménez Marruzo, soy arquitecto de software en Iscinetic y él es mi compañero Héctor Miras, que es Radio Físico del Hospital Vincen Macarena de Sevilla. Hoy vamos a hablar un poco de CloudMC, que es una plataforma para paralizar simulaciones de Monte Carlo aplicadas a radioterapia, problemas de transporte de radiación. Este proyecto es un poco curioso, nació ahora aproximadamente un año, en el que estábamos mi compañero y yo en un bar de allí de nuestro pueblo de Brenes, tomando unas cervezas y él nos comentaba que para su doctorado estaba haciendo unas simulaciones con algoritmos de Monte Carlo y tenían los dos portátiles de su casa, más el sobremesa encendido durante tres o cuatro días al 100% de CPU, a aquellos simulando historias, lanzando fotones y simulando. Y bueno, las cosas de Sevilla estarán viendo el ordenador, le decíamos. Y bueno, a partir de ahí empezamos a pensar en que se podría hacer de alguna manera alternativa, empezamos a plantearnos por qué no llevarnos esas simulaciones a algún entorno de Cloud Computing, por qué no usar alguna estrategia de paralización, como más Reduce. Y bueno, todo ese trabajo de este año ha desembocado en lo que tenemos ahora de CloudMC. La estructura que le vamos a dar hoy a la charla es un poco la línea temporal. ¿Cómo surgió ese problema? ¿Cómo esto nos planteará la introducción? ¿A qué se dedica él? ¿Cuáles son los problemas que él tiene? ¿Por qué usa el algoritmo de Monte Carlo para simular problemas de transporte de radiación? ¿Cuáles son los problemas con los que se encuentra? ¿Qué beneficios puedes traer de utilizar Cloud Computing y de la paralización que podemos lograr con algoritmos de MapReduce? Y a partir de ahí os introduciría un poco el resultado, la solución que intentamos darle a ese problema que es CloudMC. Intentaremos arrancar una pequeña demo, lanzaremos una simulación que en condiciones normales tardaría unas ocho horas de computación, vamos a lanzar las 50 máquinas para intentar tenerla en 20 minutos aproximadamente si nos da tiempo vemos el resultado. Y mientras que ejecutamos la simulación, vamos viendo un poco las tripas del proyecto, la arquitectura, ¿qué estrategias hemos seguido para hacer MapReduce para paralización? ¿Cómo hemos logrado la elasticidad de la aplicación? ¿Cómo hemos aumentado la productividad en este proyecto utilizando un generado de código que es Radark? Y después, ¿cómo hemos aplicado esta solución CloudMC a problemas reales para obtener resultados en el área de radioterapia? Y al final veremos qué alternativa, si estamos un poco reinventando la rueda qué otras alternativas hay a lo que hemos hecho nosotros, hacerlo desde cero y si nos da tiempo, bueno, veremos el roadmap y si nos da tiempo veremos los resultados de esa simulación y un poco preguntas. Antes que nada también, antes que dejaros con esto que os explique un poco una introducción a la radioterapia os comento que el proyecto, aunque estamos aquí solo dos también el EceptorMira, ya lo he presentado, trabaja en el Departamento de Física Médica del Hospitaliz de Macarena también ha colaborado con nosotros Carlos Miras del Río que es el trabajador en el área de IMSD de la empresa Widuit allí también en Sevilla y también Carlos Goma que es especialista en Física Médica también que en este caso trabaja en el Centro de Protonterapia Paul Scherer Institute en Billigame, en Suiza también ha colaborado con nosotros en este proyecto y también comentaros un poco lo que me gustaría que os quedarais con eso como un proyecto que surge de una conversación informal que lo llevamos a cabo simultáneo con nuestros trabajos con otros proyectos echándoles fines de semana, echándoles horas por las noches cuando podemos, pues hemos conseguido publicarlo hace poco en el tercer workshop de planificación de tratamiento de Monte Carlo a nivel europeo con bastante buena aceptación y también hemos conseguido que nos lo publiquen en el siguiente número de una de las revistas más prestigiosas internacionalmente en el campo de la Física Médica que es Física y Medicina en Biología pues sin más le doy la palabra a mi compañero Héctor que os introduzca un poco los problemas que desembocaron en clave M.C. Bueno, pues nada, ya me ha presentado Rubén simplemente deciros que soy especialista en Física Médica, trabajo en un hospital para que sepáis un poco a lo que me dedico un Físico Médico aquí en España solamente es una especialista en radiaciones mi trabajo en un hospital consiste bueno, nosotros tratamos todos los temas relacionados con las radiaciones que hay en un hospital por tanto, una de las áreas más importantes evidentemente va a ser la área de radioterapia la radioterapia para que no sepa pues consiste en realizar tratamientos de enfermedades generalmente cancerígenas a partir de radiaciones ionizantes por tanto, la complejidad de la radioterapia es que necesita realizar una serie de diseño personalizado del tratamiento para cada caso y ello conlleva una serie de cálculos bastante complejos, porque la Física de Interacción de Radiación y Materia es una Física bastante compleja y bueno, pero por otro lado, hay que tratar los pacientes se tiene que tratar de una forma rápida y hay que hacer algo por otro lado está el tema de simulación en Monte Carlo simulación en Monte Carlo son el método más exacto más preciso para los cálculos de problemas de interacción de radiación y materia entonces lo lógico sería pensar que la radioterapia utiliza los métodos Monte Carlo para hacer estos cálculos bueno, pues esto no es así porque lamentablemente los métodos de simulación en Monte Carlo consumen muchos recursos computacionales tanto de memoria como especialmente de tiempo entonces, ¿qué es lo que se está haciendo y por la intraterapia? pues utilizar una serie de algunos programas que tienen unos algoritmos aproximados que permiten hacer los cálculos más rápido aunque ya os digo que lo ideal sería poder utilizar estos métodos Monte Carlo bueno, y aquí es donde entraría en acción el cálculputing, ¿no? esto es la solución que se nos ocurrió para poder acercar estos métodos Monte Carlo al ámbito de la radioterapia bueno, simplemente comentaros lo que ya os he dicho un poco de qué consiste la radioterapia es un tratamiento de enfermedades cancerígenas con radiaciones para ello necesitamos una fuente de radiación la fuente de radiación hay de muchos tipos pueden ser pequeñas cápsulas de radioterapia al radioactivo que se introducen o dentro del tumor o alrededor o como lo que veis en la figura allá a la derecha eso es un acelerador lineal de electrones un acelerador de partículas pequeñito que lo que hace es acelerar electrones a altas energías para producir después rayos X de alta intensidad y el tratamiento de radioterapia consiste en concentrar altas dosis de radiación en la zona de tratamiento evitando la medida posible irradiar tejidos sano o órganos de riesgo aquí abajo veríamos un ejemplo de un tratamiento de radioterapia lo que consistiría en irradiar al paciente con distintas angulaciones de forma que los haces confluyan en este caso la próstata que es donde está el tumor para realizar estos cálculos como comentan los radio físicos nos dedicamos a diseñar este tratamiento nos llega el caso estudiamos cuál es el mejor diseño para el tratamiento y hacemos los cálculos correspondientes para esto utilizamos unos programas que me voy a referir a ellos como planificadores realmente se llaman sistemas de planificación de tratamientos de radioterapia los planificadores estos y ha dicho que utilizan algoritmos aproximados para poder hacer estos cálculos de una forma rápida cuál sería la importancia de poder incorporar estos metros Monte Carlo a los sistemas de planificación pues como ya he dicho se conseguiría una mayor precisión en los resultados y ello es todo que conllevaría pues a poder hacer tratamientos más complejos más complejos y más exigentes es decir, cuanto más dosis seamos capaces de dar en la zona de interés mayor seguridad tenemos de que estamos destruyendo las células cancerígenas pero a la vez queremos dar el mínimo de dosis a los órganos de riesgo esto en algunas situaciones resulta un tratamiento una cosa compleja pues si disponemos este algoritmo de estos métodos Monte Carlo que nos aseguran que la precisión va a ser muy alta pues podemos hacer los tratamientos tan complejos como queramos lo que se traduce al final una mejora a la calidad de los tratamientos es decir, en que se curarían más pacientes con la red terapia una pequeña introducción a los métodos Monte Carlo el método Monte Carlo así en general consiste en utilizar números aleatorios para resolver problemas matemáticos eso es cualquier programa que te dice números aleatorios para cualquier resolución de algún problema eso es un método Monte Carlo por otro lado, la física de radiaciones es una física intrínsecamente probabilística que quiere decir que la información que nos da la fisica de la interacción radiomateria es de naturaleza probabilística quiere decir que si tenemos aquí no se ve prácticamente nada bueno aquí lo que se ve es una simulación de una partícula que entra en un medio lo que me refiero es que dado una partícula de radiación que penetra en un material no podemos la física no es capaz de predecir la trayectoria exacta de esa partícula de material no porque nos falta información porque todavía no sepa bien cómo funciona porque la naturaleza es así lo que conocemos con precisión es las probabilidades de cada uno de las interacciones y de las cosas que se basa en una partícula durante su recorrido es decir, dada una partícula en material la probabilidad de que la siguiente interacción sea de un tipo o de otro, o sea, efecto Compton o de la hétilita que se desvíe en una determinada dirección o en otras, todas esas probabilidades las conocemos a la perfección entonces si unimos los métodos Monte Carlo con la física de radiaciones tendríamos ya la simulaciones Monte Carlo aplicadas a los problemas de transporte de radiación que ya veis un poco en qué consiste consiste en reproducir de la manera más fiel posible la realidad sabemos cuál es la física que gobierna estos procesos tenemos unos métodos Monte Carlo que simplemente son los generadores de números aleatorios lo que estamos haciendo es lanzar un experimento y simular lo que pasaría en la realidad aquí no se ve muy bien pero les digo que estas tres primeras imágenes lo que se observa es un electrón entrando en un medio tiene una trayectoria rática, va interaccionando esto sería una simulación Monte Carlo para un electrón todo el recorrido del electrón en el material esto se conoce como el nombre de historia todo lo que le pasa a una partícula es que sale la fuente radio hasta que acaba absorbida por el medio se llama historia una simulación Monte Carlo al final es la suma de muchas historias que es lo que tendríamos aquí aquí tenemos unas de electrones porque esto es importante porque estas historias son independientes una no afecta a las demás esto nos va a permitir paralelizar el problema dividir una simulación de la cantidad de historias que queramos dividirla en el número de máquinas que queramos y ganaremos conseguiremos reducir el tiempo deciros también que la precisión de los métodos Monte Carlo depende pues como son unos métodos estadísticos dependen de el número de historias que se simulen cuanto más historias simulemos más parecido la realidad será el resultado que tengamos esto es un ejemplo de la representación gráfica de la simulación de el cabezal del acelerador que hemos visto empieza con unas electrones que incide sobre un material que genera radiación de rayos de alta energía que pasa por unos sistemas de colimación que le dan formalaz esto sería un ejemplo de cómo se ha caracterizado la geometría del problema y una simulación de esa parte del acelerador bueno pues esto es una situación que me encontraba yo hace un año como comentaba Rubén cuando estaba haciendo las simulaciones para la tesis que pues lo que estaba haciendo era caracterizar una semilla radiactiva de yodo y bueno tenía que hacer una serie de simulaciones que necesitaban mucho tiempo de cálculo bueno en resumen tenemos que la simulación de Monte Carlo son los mejores algoritmos para el cálculo de problemas de interacción radiomateria pero que son muy costosos computacionalmente hay diversas formas de ahorrar tiempo de conseguir reducir los tiempos de cálculo pero la más la mejor es la paralización del problema ¿por qué? porque es la que es más eficiente en la reducción de tiempo además de que la paralización de la simulación no repercute sobre la precisión de los resultados vamos a paralizar lo otro que quedamos que el resultado final pues va a ser el mismo que si lo hiciésemos en una sola máquina no estamos haciendo ninguna aproximación y nada bueno aquí tenéis un ejemplo de qué consistiría la paralización de una simulación simplemente esa misma simulación que se haría en una máquina la haríamos en el número de máquinas que fuese la inicial de partículas que queríamos simular en vez de lo dividimos por el número de máquinas le cambiamos unas semillas iniciales que necesita el generador de números aleatorios porque si nos cambiamos estaríamos simulando en todas las máquinas la misma simulación por lo cual no estaríamos haciendo nada entonces habría que reiniciar estas semillas iniciales y bueno finalmente mezclaríamos los resultados bueno esto de paralizar las simulaciones Monte Carlo realmente no es nuevo esto se lleva haciendo mucho tiempo lo que pasa que antes esto era una cosa que solo era asesible pues según qué departamentos de universidades que disponían de clases que se construían ellos o realmente por ejemplo los hospitales pues no disponemos de esta infraestructura entonces qué problemas tiene un servicio de la terapia por ejemplo no puede pretender hacer simulaciones Monte Carlo para los tratamientos en un cluster porque eso requiere pues una inversión inicial más o menos grande hay que comprar cluster una inversión después económica y personal y tal para mantener esa infraestructura pues todos estos problemas solucionaría el uso de la computación en la nube y en este aspecto o sea sí que somos un poco más novedosos sólo hay una publicación anterior a la que vamos a presentar ahora relacionada con el uso de computación en la nube y simulaciones Monte Carlo es una cosa que todavía no parece ser que se está desarrollando finalmente incidiendo la importancia del uso de los métodos Monte Carlo para los tratamientos para el cálculo de tratamientos de la terapia ya hemos dicho que es lo que necesita la herramienta que tengamos que es lo que debe aportar para poder usar estos métodos Monte Carlo los tratamientos de la terapia pues que reduzca esos tiempos de cálculo a tiempos clínicamente razonables y que sea económicamente viable bueno pues supongamos que con la herramienta que nosotros hemos desarrollado realmente ya se podría hacer alguna cosa de este tipo supongamos que la coplásemos a un sistema de planificación de tratamientos lo que haría es que una vez terminar el diseño de tratamiento lanzaría el cálculo la nube pues el número de instancias que quisiéramos por ejemplo en este caso este ejemplo que ponemos aquí imaginaos que el tiempo necesito para un cálculo de un tratamiento son unas 100 horas de computación y que podemos ejecutarlo en paralelo en 100 máquinas bueno pues esto en la herramienta que hemos desarrollado hemos hecho algunas pruebas de tal podemos estar hablando de reducir el tiempo a entre una dos horas esto es un tiempo ya razonable que lo usa en la práctica clínica y vamos a hablar un poco de económicamente esto que supone bueno pues al precio que está una máquina extra pequeña de windows azure por ejemplo que es un precio bastante barato esto supondría un coste de unos dos euros por por plan o sea por tratamiento es muy barato si esto lo llevásemos a un hospital en los que hacen mil pacientes por año pues acabaríamos hablando de un coste de 2.000 euros por año o sea realizar cálculos como antical o mil pacientes por año es un poco una exageración no es necesario a lo mejor tratar calcular todos esos tratamientos con la herramienta más precisa pero bueno para que se hagáis una idea y en comparación lo que puede costar un cluster de unos de 100 núcleos ya se comercializan unos clusters así pequeños que ya están integrados todos los procesadores pues puede costar alrededor de unos 20.000 euros a lo que habría que añadirle pues todo el coste de mantenimiento esta cifra pues equivale a 160 años de tiempo de computación la nube en una máquina de este tamaño para que se hagáis una idea de que es una solución que económicamente es muy viable bueno si lo dejo otra vez con Rubén explicará un poco los detalles de la aplicación una vez visto ha comentado Héctor la problemática y como la paralización de las simulaciones de Monte Carlo podría ayudar a la radioterapia diseñamos clado mc como hemos comentado ya es una plataforma para paralizar simulaciones de Monte Carlo enfocadas a los problemas de transporte de radiación en este caso se ha implementado sobre Winton Azures que era la plataforma con la que nos sentíamos más cómodos teníamos más know-how en esta tecnología y la paralización se lleva acabado utilizando una estrategia de MapReduce que comentaremos más adelante hay que recarcar las tres premisas sobre las que hicimos el diseño de este proyecto de clado mc el primero era que no tenía que ser no intrusivo es decir, no nos valía con que coger aplicaciones de Monte Carlo y modificar el código para paralizarlo eso no podíamos hacerlo porque no abarcamos todas las herramientas que podíamos utilizar hay bastantes en el mercado y además el nivel técnico que tenéis que tener para modificar esto es bastante alto debía ser no intrusivo debía ser aplicación debíamos poder subir a la plataforma de paralización cualquier tipo de las aplicaciones de simulación con Monte Carlo que hay en el mercado actualmente como Penelope Gen4 y por último debía ser muy elástico no nos valía con volver a tener el mismo problema del cluster no nos valía tener recursos reservados en la nube durante cierto tiempo porque si no gente como Héctor o cualquier investigador no podría mantener esa infraestructura a nivel económico debía ser algo que ante un pico, ante una simulación reservamos recursos utilizamos esos recursos para esa simulación y después los destruyeramos no tuvieramos que seguir pagando por esos recursos una hora de simulación nos costara una hora vamos a ver un poco antes que contaron más de las tripas y demás del proyecto podemos ver una demo del proyecto en marcha clavo mc como veis en la url clavo Monte Carlo clavo apb.net tenemos ya una pequeña beta en la que podemos entrar con nuestro usuario y podemos ir a la parte de simulaciones donde tenemos una lista de simulaciones que cualquier investigador puede tener precargadas con diferentes tipos de algoritmos tenemos alguna bueno, podemos editarlas para ver el contenido de esas simulaciones como veis lo que tenemos dentro de esas simulaciones es el paquete, sea los ejecutables de ese código Monte Carlo que queremos lanzar en paralelo además tenemos las instancias sobre las que queremos ejecutar la aplicación el tipo de Monte Carlo directamente vamos a ejecutar esta que tengo precargada estas big data las instancias así que la pongo, la lanzo vamos a dejarla ejecutando mientras que seguimos viendo un poco las tripas constantemente se va actualizando las rejillas de simulaciones ya ha comenzado la simulación, ahora voy a contar todo ese proceso que hay por dentro para que esto esté funcionando en que consiste dejamos aquí las 50 máquinas una aplicación que como he dicho tardaría en condiciones normales 8 horas ya están empezando la primera simulación, veis? y ahora a lo largo de la sesión irán simulando el resto si no está tiempo, podemos ver los resultados seguimos un poco os comento la arquitectura como hemos diseñado la arquitectura de CloudMC, nos hemos basado como he dicho en Windows Azure utilizamos Hosted Services en este caso un web role que es lo que veis aquí a la izquierda en Azure en el que hemos diseñado una capa de interfaz de usuario arriba que es la responsable de la interacción la que habéis visto está hecha con una SPN MBC3 en este caso una capa de servicios que básicamente se encargan de la lógica de negocios de todo que sería el cruz de simulaciones, de usuarios además de ejecutar el MapReduce y de iniciar y parar las simulaciones una capa de entidades bueno, tenemos toda esa gestión de metadatos, de simulaciones, de usuarios una capa bastante importante que es la factoría de MapReduce que es la que nos da los objetos Mapper y Reducer para llevar a cabo la paralización de la simulación una capa de provisioning que es la que se encarga de llevar a cabo la elasticidad es decir, cuando lanzamos una simulación los recursos que tenemos consumidos en Azure son los mínimos que nos deja la plataforma de cada cosa y en el momento que llega una simulación como la que hemos lanzado que le hemos dicho que queremos 50 máquinas pues, automáticamente esa capa de provisioning nos monta los 50 WorkRolls, las 50 máquinas que empezarán a ejecutar el trabajo pues todo eso lo lleva a cabo la capa de provisioning que veis de ahí con el comunicándose con el Service Management ahora lo veremos y por último, una capa de repositorios que es la que se encarga de hacer la persistencia de los metadatos utilizamos tanto un SQL Azure para lo que son los metadatos de usuarios, simulaciones como utilizamos Blobs también del storage de Windows Azure para todo lo que son los ficheros de la simulación y después todo esto se coordina con una comunicación asíncrona utilizando colas de mensaje también de Windows Azure os cuento la secuencia esto que está pasando ahora mismo por debajo en qué consiste cuando lanzamos una nueva simulación como la que hemos lanzado bueno, el primer paso sería crearla, subirle el paquete de ficheros esos ficheros que vamos a querer lanzar bueno, eso lo teníamos ya precargado para que no hiciera falta el uploading de contenido que es bastante lento una vez que ya la tenemos arriba cuando la lanzamos, como es lo que hemos hecho lo primero que hacemos es guardamos ese estado de ejecutándose en el SQL Azure en los metadatos y los archivos de la simulación son subidos al storage de Azure, si no estaban ya como en este caso una vez que se lanza el mensaje se generan N mensajes de inicio de simulación que van a llevar a cabo la ejecución con el provisioning y mandan los mensajes de inicio de simulación la ejecución en paralelo ya están las 50 máquinas como en este ejemplo que vamos a ver en este caso que vamos a ver en este caso y en este caso que vamos a ver en este caso en las 50 máquinas como en este ejemplo levantadas y lo que van haciendo es cuando cada vez que se levanta una máquina lee un mensaje de inicio de simulación cada vez que una máquina lee un mensaje de inicio de excesión ejecuta una simulación fragmentada y lanza los resultados otra vez sobre el storage de Azure y cuando termina, manda un mensaje he terminado mi simulación el nodo maestro el web role está a las cuchas de esos mensajes y cuando ve que ya han terminado todas las máquinas de simular ejecuta la tarea de resolve crea un resolver que es lo que se va a encargar es hacer el merge el combinado de todos los resultados y una vez que ya tiene los resultados combinados todas las máquinas que han llevado a cabo la simulación para que no nos cueste más de la cuenta y por último el fin de la simulación marca como el guarda en el SQL Azure los metálogos correspondentes a la simulación terminada y envía un email al usuario diciendo ya tu simulación ya está finalizada puedes descargar los datos los resultados nos centramos en esa parte de MapReduce como hacemos la paralización de las simulaciones en este caso este dominio la simulación en Monte Carlo lo hemos tenido bastante fácil porque como bien ha dicho Héctor es paralizable en sí por naturaleza como se paralizan como se fragmenta una simulación en n partes pues dividiendo el número de historias de esa simulación por n si teníamos si simulamos 10 historias si tenemos 10 máquinas cada máquina va a simular solo una historia muy sencillo como veis la mayoría de códigos de Monte Carlo directamente coge esa configuración de número de historias parámetros, geometría y todo por archivos de configuración entonces nosotros hemos seguido la misma dinámica como debe ser no intrusivo no debemos dejar que ese código Monte Carlo lo opere tal como lo haría en una máquina normal lo que hacemos es que nuestro mapper modifique esos archivos de configuración para dividir el número de historias entre n máquinas pero claro tiene que ser multi aplicación como hacemos que ese mapper funcione para Gen4 y para Penelope Monte Carlo de ejemplo pues lo que hacemos es lo parametrizamos con unos parámetros de MapReduce que básicamente le van a decir al mapper que en este código Monte Carlo tienes que modificar aquí para hacer la paralización, para fragmentarlo de modo que una vez que actúa el mapper tendremos una entrada B una entrada diferente y aframentada de la que se nutrirán los ejecutables en las máquinas de los Worker Rolls de modo que ahí lo veis si tenemos 10, 15 historias como máquinas pues cada una simulará 2 elevados 15 historias bueno el Reduce pues sigue la misma dinámica lo que básicamente lo que obtenemos de estas simulaciones son unos archivos de textos de distribuciones de ciertas magnitudes como energía, dosis y siempre están formateados por columnas tienen ese aspecto que veis ahí de modo que el Reduce lo tiene fácil simplemente con unos ciertos parámetros de configuración decimos qué columnas son de magnitudes, qué columnas son de incertidumbre y él se encarga de hacer el Reduce ambos, vale esa parametrización que llevamos a cabo del mapper Reduce lo se la proveemos a CloudMC con unos DSL que hemos diseñado que como veis ahí pues son archivos de textos muy sencillitos en el que le dices en qué sitio tiene que tocar para reducir el número de historias donde está en el caso de la entrada del map, vale y en el caso del Reduce pues qué columnas son de incertidumbre qué columnas son de una magnitud, etc. bueno, voy un poco rápido, vale porque me queda poco tiempo la elasticidad lo que os he comentado necesitábamos que los recursos no sean reservados sino que para cada simulación se provean los recursos y después se eliminen como lo hemos conseguido pues utilizando Windows Azure Service Management lo bueno es que nos pruebe una interfaz de dinamía para funcionar es una interfaz REST con archivos de configuración la parte negativa es que el mínimo de instancias que nos permite bajar es a 1, no nos permite bajar a 0 que sería lo ideal y también la pega más grande que hemos encontrado es que no podemos decirle a cierta máquina que se elimine solo podemos decir el número no podemos decir cuáles se tienen que eliminar que eso nos interesa bastante y los entornos multitenan radar es una herramienta generación de código que como entenderéis este proyecto que hemos llevado a cabo en un año en simultáneo con nuestros trabajos y demás en fines de semana necesitamos bastante reducir los tiempo de desarrollo hemos utilizado una herramienta generación de código que se llama RADARC con un tipo de generador en concreto que es la fórmula Azure que nos ha permitido desarrollar todas las partes código generado toda la parte de seguridad Azure, repositorio entidad de servicio y la capa de interfaz de usuario pues todo esto ha sido generado automáticamente y lo que nos ha permitido es centrarnos en cómo resolver más reduce como resolver el provisioning poco centrarnos en lo importante del dominio y bueno, hemos aplicado esta plataforma a ciertos casos reales básicamente casi todos de los que nos han utilizado en el caso de un tratamiento de un melanoma de ojos ocular en los que se aplica un aplicador hostálmico con semillas de yodo y la simulación lleva a cabo 3 por 10 elevado a 9 historias utilizando el código Monte Carlo Penelope, los resultados pues ahí lo podéis ver en una instancia en condición normal le tardamos 30 horas clau de MC, utilizando 64 instancias hemos logrado 48 minutos una aceleración de 37 veces y también a partir de este caso hemos estudiado un poco cómo se comporta a medida que cambiamos el número de instancias como veis ahí para dos instancias pues nos íbamos casi a 900 minutos a medida que íbamos aumentando el número de instancias iba disminuyendo el tiempo pero con una una gráfica como la que veis ahí ¿Por qué? porque aumenta los tiempos no paralizables y los que no son dependientes o sea, aumenta los tiempos no paralizables que son dependientes de cuántas máquinas tenemos es decir, cuántas más máquinas tengamos más tiempo tardamos en hacer operaciones como el Reduce o el Map pues eso hace que la gráfica tome esa curvatura también nos planteamos a lo largo de todo el desarrollo porque estaremos reinventando la rueda básicamente para ver alternativas no en sentido negativo porque también nos servía un poco de este proyecto para aprender todo este conjunto de tecnologías y de estrategias pero bueno, hemos ido viendo las alternativas que teníamos aparte de hacerlo nosotros desde cero sobre Windows Zure la fundamental, ya veis escuchado hablado hoy de ella es Amazon Elastipamp Reduce el punto negativo que nosotros le encontramos aunque nos cubriría perfectamente pero el punto negativo es que estamos bastante adecuados a trabajar con .NET y es un poco complejo aunque ahí os pongo un link de que hay algunas alternativas a trabajar con Elastipamp Reduce utilizándose Sharp, con Mono o algunas alternativas pero no es sencillo, no es directo otra de las alternativas es Hadoopo Nazures que ha sido lanzado las primeras previews este año en 2012 y bueno, una pequeña pega que hemos visto es al principio que tenías que reservar el tamaño del cluster iba en contra de nuestra nuestra premisa de que tenemos que ser bastante elásticos y bueno, un poco el ROM map podéis ver ahí seguimos probando con más códigos de Monte Carlo estamos estudiando por soportar diferentes tipos de map y reduce de modo que tú se lo proveas no solo como una parametrización de map y reducer sino directamente tú le proveas tu forma de hacer el map y el reduce como por ejemplo utilizando Meph también hemos planteado hacer un SDK para construir esos paquetes que tú puedas subir a CloudMC y también un entorno que nos interesa mucho pero que tenemos problemas técnicos que muchos usuarios puedan acceder a CloudMC a tirar sus simulaciones aquí nos encontramos con el problema que os he comentado, de que no podemos hacer scale down de una instancia en concreto y bueno cuestiones no creo que me haya dado tiempo a simular todo ha terminado la máquina y el resto está simulando yo tenía planeado unos 20 minutos de simulación por lo que hemos tenido una vez que termina una simulación como esta cuando todas las máquinas llegan hasta el final el investigador directamente recibe un correo en su cuenta de correo en la que haya configurado y tendría estar en el caso de esta de la prueba Gen4 que es una simulación que ha finalizado nos saldría el iconito para descargar y directamente podríamos llegar aquí aquí tendríamos nuestro zip que tiene los resultados de esa simulación un poco para que veáis pues esta es una distribución de dosis típicas de resultados de una simulación con Monte Carlo es lo que obtendríamos de esa simulación está casi terminando pero no sé si creo que no lo daba tiempo preguntas apuntito hola me llamo Roberto muchas gracias por la presentación me ha parecido muy interesante y me ha llamado la atención una cosa que habéis comentado del tema de las semillas de inicializar las aleatorias vosotros que simuláis un modelo físico que es determinista y por eso tenéis que inicializar aleatoriamente o igual no lo he entendido aquí creo que lo puede los generadores de números aleatorios no son realmente realmente no están generando números completamente aleatorios se llaman pseudo aleatorios es decir, que tú le tienes que dar una semilla inicial y a partir de esa semilla eso tiene un algoritmo numérico que te va generando una secuencia de números que conociendo ese algoritmo tú la puedes predecir pero lo importante es que se comporten como si fueran aleatorios una distribución de números que tú sin saber de dónde te viene es decir, que es una mezcla que sean aleatorios entonces, si siempre utilizas la misma semilla, siempre estás generando la misma secuencia por tanto, siempre estarías reproduciendo la misma simulación en el caso de una partícula que la simula varias veces siempre estarías obteniendo el mismo recorrido por eso, lo de inicializar, cambiar estas semillas iniciales para obtener otra simulación diferente y luego al final que obtenis es decir, es que lo que no me ha quedado claro es el tema de si tenéis un modelo que tenéis que optimizar de alguna manera que resultado tenéis, a final la trayectoria óptima o el lo que el resultado final la reacción al ir transcuriendo por la materia pues va sufriendo interacciones las cada partícula interaccionando y en esas interacciones van depositando energía esa energía se posita en forma de ionización de los átomos del medio esta energía es lo que se llama la dosis la dosis es energía por unidad de masa y esta energía que se va liberando es lo que daña por ejemplo los tejidos biológicos la reacción al pasar por el núcleo de la célula ioniza el ADN libera una energía esta energía en forma de ionización ioniza el ADN y de forma que la célula la deja incapaz de reproducirse por lo cual a la hora de pasar a la siguiente generación moriría entonces el resultado de una simulación generalmente puedes sacar muchas cosas pero generalmente lo que obtienes es una distribución de dosis, una reacción que incide en un material y el resultado es la dosis en tu ese material pues tu defines un grid para ir acumulando en cada voxel la energía debida a esa reacción tu tienes una distribución de esa dosis en un tratamiento de redoterapia se calcula esa distribución para voluméctrica dentro de lo que sería la imagen del paciente que normalmente está en forma de una imagen de un TAC pues ahí se selecciona el médico pinta los volúmenes que hay que tratar entonces lo que queremos obtener es la distribución de dosis sobre ese medio que en este caso es un paciente la última pregunta hola buenas muchas gracias por estar genial y quería preguntaros que bueno al principio dijisteis que como ahora es enviado a hacer este cómputo en un hospital lo que se hace es utilizar tablas de aproximación