MINESIGHT Y LA TECNOLOGA INFORMTICA DE LTIMA GENERACIN
As como se ha modificado la tecnologa en el escritorio y en las estaciones de
trabajo de los ltimos aos, del mismo modo ha ido variando el lenguaje. Trminos como computacin por multiprocesador y 64 bits ahora resultan bastante comunes. Estas tecnologas ofrecen beneficios especficos pero tambin, a veces, exigen sacrificar algunas cosas. Comprender estas tecnologas nos ayuda a saber qu podemos esperar del software y realizar las adquisiciones de equipo que resulten adecuadas. Multi hilo Contexto Tecnolgico La capacidad de cmputo de una computadora est dada por sus microprocesadores, tambin conocidos como unidades de procesamiento central o CPU (por sus siglas en ingls). Las computadoras con una sola CPU dominaron el mercado durante algn tiempo pero, en los ltimos aos, los equipos de escritorio con ms de una CPU se han vuelto muy comunes. Las llamadas computadoras multi ncleo contienen ms de una CPU incorporadas en un chip. Desde afuera parecen iguales a los chips de una sola CPU, pero los elementos fsicos y los programas de esa computadora los toman como varias CPU independientes. En lo que respecta a los usuarios, mltiples CPU y multi ncleo significan lo mismo. Durante aos, los fabricantes de CPU se concentraron en hacer que esa CPU fuera ms rpida. Los avances tecnolgicos siguieron el principio de la ley Moore, que implica que la velocidad de las CPU se duplicara cada 18 meses. Sin embargo, esto no ha sido as en el ltimo tiempo, dado que la tecnologa ha alcanzado sus propios lmites. Entonces, los fabricantes de microprocesadores corrieron su atencin hacia los sistemas de mltiple CPU/multi ncleo. Se deben dar dos cosas para que un programa aproveche mltiples CPU/multi ncleos: 1. El algoritmo implementado debe tener porciones que son interdependientes y se puedan ejecutar en forma separada. 2. El software debe estar especficamente diseado y escrito con esta pauta en mente y debe permitir que esas partes independientes se ejecuten en paralelo y estn programadas para diferentes CPU. Naturalmente, es necesario que exista la pauta nmero 1 para que pueda siquiera intentarse el punto nmero 2. Un hilo de ejecucin es una secuencia continua de instrucciones de programacin. Una instruccin no puede comenzar hasta tanto no haya terminado la instruccin que la antecede. Un hilo se ejecutar exclusivamente en una CPU o ncleo, independientemente de cuantos CPU o ncleos haya instalados. De ah el trmino de flujo nico (monohilvanado o single-threaded): el software est escrito para que exija que todas las partes se ejecuten en una secuencia nica, una despus de la otra. Los programas escritos para permitir que sus partes se ejecuten en forma paralela se denominan multihilo (o multithreaded), dado que puede haber ms de un hilo de ejecucin simultneamente. Los trminos multi hilo y en paralelo se utilizarn como sinnimos en este artculo. minesight Diciembre 2010 2 El sistema operativo o la computadora no pueden hacer que un programa de flujo nico se convierta automticamente en un programa multi hilo. Por lo tanto. las
aplicaciones de flujo nico no mejoran su rendimiento en las computadoras
multi CPU/multi ncleo, porque solo pueden utilizar una nica CPU al mismo tiempo. Los programas multi hilo s mejoran en estos equipos, pero cunto, depender del tipo de problema (es decir, El algoritmo tiene, al menos, partes independientes?) y de cmo fue diseado y programado. La mayora de las aplicaciones son multi hilo en cierto grado, pero eso no significa que se ejecutarn mucho ms rpido en equipos multi ncleo. La ley de Amdahl ilustra los aspectos prcticos de aumentar el nmero de CPU en un sistema. Gene Amdahl es un distinguido arquitecto computacional, reconocido por sus trabajos en IBM desde 1960. l formul las limitaciones en el desempeo de los sistemas multi CPU. Dado que la mayora de los algoritmos se pueden ejecutar en paralelo solo hasta cierto grado, el desempeo en general del software en paralelo no mejorar en forma lineal. Por ejemplo, un sistema de dos CPU no siempre distribuir el tiempo de ejecucin en dos partes iguales. El problema de la ejecucin en paralelo es un desafo bien conocido para la ciencia computacional. Tomemos por ejemplo la aplicacin para un reproductor de DVD. La mayora de estas aplicaciones tienen dos hilos; el hilo que procesa la interfaz del usuario (botones, control de volumen, etc.) y el hilo que realiza el trabajo. Cuando se hace clic en el boton play, se enva un comando al hilo que realiza el trabajo y presenta la pelcula. Mientras la pelcula avanza el usuario puede operar los controles ya que esto se realiza en forma paralela a la ejecucin de la pelcula. Si la CPU es lo suficientemente rpida como para decodificar todos los cuadros del video a su debido tiempo, el usuario ve un avance sin interrupciones. Por el contrario, la pelcula ser entrecortada a medida que el reproductor pierde cuadros (digamos un Blue Ray de 1080p que la computadora no puede digerir). En este caso, pasar a un doble ncleo puede o no resultar en una mejora. Los controles del usuario virtualmente no consumen ningn tiempo de la CPU, por lo tanto si una CPU se encarga de los controles del usuario y la otra se dedica a la decodificacin de video (que es el 99.999% del trabajo), no se ver ninguna mejora. Los creadores del reproductor de DVD necesitaran prever esa situacin y escribir el programa del reproductor para permitir que delegue parte de la lectura y decodificacin por adelantado a otras CPU. Si hubieran hecho esto, al pasarnos a un sistema multi ncleo, ciertamente obtendramos un desempeo mejorado. Pero, en algunos casos, la ejecucin en paralelo del algoritmo no es posible: por ejemplo, la solucin a un conjunto muy complejo de ecuaciones diferenciales no lineales. Si se hace un seguimiento de la solucin desde la condicin inicial, se ve que no hay un modo directo de computar una porcin en forma adelantada mediante el empleo de otra CPU. En realidad, las ventajas que ofrecen los programas multi hilo tienen su costo. En la prctica, los hilos en paralelo deben estar sincronizados dado que muchas veces operan sobre los mismos datos. Del mismo modo que cuando dos personas tratan de leer el mismo libro en forma simultnea tienen que organizarse respecto del recurso limitado (es decir un nico libro), los mltiples hilos informticos deben dedicar
ciertos ciclos de la CPU a cuestiones de sincronizacin. Las aplicaciones multi
hilo son ms complejas y por ende es ms costoso su desarrollo y su mantenimiento. MineSight Ahora El conjunto de programas MineSight, en su mayor parte es de flujo nico, pero tiene algunos componentes multi hilo. MSDART es multi hilo pero debido a las limitaciones algortmicas ofrece, aproximadamente, un 30% de mejora en el desempeo al pasar de un equipo con CPU nica a uno de doble ncleo. Duplicar la capacidad y pasar a cudruple ncleo mejora el rendimiento apenas en un pequeo porcentaje adicional. MS3D es de flujo nico, excepto para las tareas de codificacin del modelo y de sondajes. Para la codificacin de la vista de un modelo con muchas subceldas o para la codificacin de sondajes a partir de polgonos, veramos una mejora en el rendimiento con los sistemas de multi ncleo, en comparacin con los de un solo ncleo. La verificacin de la licencia tambin se realiza a travs de un hilo independiente, pero la carga de trabajos es despreciable. MSEP es de flujo nico. Kriging es de flujo nico. minesight Diciembre 2010 3 Los procesadores de geometras son de flujo nico. MSDA es de flujo nico. MSTorque es de flujo nico, pero dado que depende del funcionamiento de un servidor SQL Server, se vera beneficiado en un sistema de mltiples ncleos. MSIP es de flujo nico, pero se beneficiara si MS3D fuera multi hilo, porque se apoya en funciones de MS3D. Haulage es de flujo nico. MSSO es multi hilo. MSEP y MS3D se beneficiaran si pudieran trabajar en multi hilo al igual que MSHaulage. Esta capacidad multi hilo est siendo incorporada en MSEP, mientras que Haulage est esperando su turno. MineSight en el Futuro Cercano La importacin de LGO ASCII en MS3D es multi hilo en MineSight 6.0. Esto debera mejorar el trabajo con los grandes conjuntos de datos. Kriging se encuentra en las etapas finales de su reelaboracin para soportar la ejecucin en multi hilo. Su lanzamiento ser en 2011. Y su funcionamiento ha mejorado en forma casi lineal, lo cual es excelente, (es decir, con doble ncleo es casi dos veces ms rpido, con cuatro ncleos es casi cuatro veces ms rpido). MSEP (MSOPIT) est en etapa avanzada de reformulacin para admitir la ejecucin en paralelo. Mejorar su desempeo en aproximadamente un 30% cuando opere en doble ncleo, y del 40 al 45% con cudruple ncleo. Procesamiento de 64-bits Contexto Tecnolgico El mundo de las estaciones de trabajo personales y el mundo de los servidores esta migrando de la llamada computacin de 32-bits a la de 64-bits. Durante las dos ltimas dcadas, los procesadores de 32 bits dominaron la informtica personal y de servidores. Hasta no hace mucho, rara vez surga la pregunta mi computadora es de xxx-bits o de yyybits?; todas eran de 32 bits. Qu es lo que significa la denominacin xxx-bits? La capacidad de una computadora est dada por sus microprocesadores. La arquitectura de la CPU se crea considerando la porcin ms grande de datos que puede procesar al mismo tiempo. En las arquitecturas de 32 bits, esto significa 32 bits (o 32 elementos de ceros y unos). Este conjunto de datos muchas veces se denomina palabra de la CPU. Por s solo, el procesamiento de
datos en conjuntos de 32 bits para nosotros ha funcionado bastante bien. Las
limitaciones llegaron de otro lado. La RAM (o memoria de acceso aleatorio) es otro elemento crtico de una computadora. Normalmente se la conoce como memoria. Tanto el programa de la computadora como los datos deben estar en la RAM para que la CPU realice su trabajo. En 32 bits se pueden almacenar hasta 4GB de valores. Una CPU normal de 32 bits fsicamente no puede operar con ms memoria que 4GB. Durante mucho tiempo, esto no signific ningn problema. 256MB era un montn de memoria hace una dcada; 1GB hasta hace unos aos, todava se consideraba como bastante memoria. Pero, a medida que aumentaba la cantidad de datos que queramos procesar, las memorias se abarataron cada vez ms. Y el lmite de 4GB poco a poco fue convirtindose en un obstculo. Se hizo necesario contar con CPU capaces de operar con ms memoria. Esto signific aumentar el tamao de la palabra, y entonces 64 bits fue instaurada como la norma de facto. minesight Diciembre 2010 4 Un Sistema de 64 bits Correr los Programas Ms Rpidamente? A veces. Pero podemos realizar una analoga con un camin ms grande que puede mover una cantidad de material ms rpidamente, porque su capacidad de carga es mayor y necesita menos viajes, pero no porque avance ms rpidamente. Del mismo modo, los problemas que exigen tratar con datos demasiado grandes para un procesador de 32 bits pueden resolverse ms rpidamente en un sistema de 64 bits. No obstante, un programa que funciona bien en un sistema de 32 bits rara vez obtendr algn beneficio de las arquitecturas de 64 bits. El punto de alerta aqu es: el software debe estar creado especialmente para las arquitecturas de 64 bits. Hacer que un programa sea apto para 64 bits puede exigir cierta reelaboracin. Algunas expresiones de programacin cambian en un entorno de 64 bits. Un programa de 64 bits no correr en una computadora de 32 bits. Un programa de 32 bits puede ejecutarse en un sistema de 64 bits, pero no tendr acceso automticamente a ms memoria. Al ejecutar esa aplicacin, la CPU de 64 bits se pondr en el modo de 32 bits, con todas las limitaciones de esta arquitectura. El resultado final es que las ventajas de un sistema de 64 bits aparecen mayormente cuando se necesita procesar conjuntos de datos muy grandes y cuando tenemos ms de 4GB de RAM en el sistema. MineSight Ahora Actualmente, el conjunto de programas MineSight no soporta la informtica de 64 bits. MineSight en el Futuro Cercano Estamos trabajando para incorporar la capacidad de 64 bits a nuestros productos. Algunos componentes del conjunto MineSight estarn disponibles con soporte para 64 bits durante la segunda mitad de 2011. Estamos incorporando soporte de 64 bits en MSDART, MSEP, MSTorque y MS3D Procesador GPU Contexto tecnolgico GPU significa unidad de procesamiento grfico, o en lenguaje comn, una tarjeta para grficos. Impulsados por las demandas de aplicaciones CAD y para juegos, pero tambin por el nuevo aspecto que presentan los sistemas operativos tales como Microsoft Vista y MacOS X, las tarjetas grficas se han convertido en poderosos procesadores de computacin. Estos procesadores tienen una arquitectura
paralela que permite que se realicen en forma simultnea ms de 100 tareas
especializadas. La gente pronto se dio cuenta que esta poderosa capacidad rara vez se utiliza y que sera bueno sacarle provecho. Una GPU puede procesar 10 a 20 veces ms rpido aquellos problemas que se pueden dividir en varias tareas simples e independientes. El empleo de una GPU es conceptualmente similar al de un software multi hilo, pero con mayores limitaciones. Una GPU puede ejecutar solamente tareas simples, por lo tanto el software debe adaptarse especficamente para este fin. La planificacin de tareas para una GPU no est estandarizada, exige una programacin adicional y aumenta los gastos generales. No obstante, las ventajas del procesamiento por GPU son tan grandiosas que lentamente se convertirn en el formato dominante. MineSight Ahora Ninguna de las aplicaciones MineSight utiliza procesadores GPU. MineSight en el Futuro Cercano No est previsto el lanzamiento de ninguna aplicacin MineSight con procesamiento GPU, pero se est evaluando esta tecnologa para su aplicacin en nuestros productos. minesight Diciembre 2010 5 w w w. m i n e s i g h t . c o m Unidades de estado slido Contexto Tecnolgico Una unidad de estado slido (SSD por sus siglas en ingls) es un nuevo tipo de disco duro. Los discos duros tradicionales utilizan discos magnticos giratorios para almacenar los datos y cabezales mviles para recuperarlos. Los SSD utilizan memorias flash para el almacenamiento de los datos y no tienen partes mviles. Los SSD mejorarn el funcionamiento de las aplicaciones que procesen grandes cantidades de datos. Un disco duro tradicional necesita mover el cabezal lector sobre la superficie del disco para leer o escribir los datos. Un conjunto grande de datos se distribuir a lo largo de toda su superficie, obligando al dispositivo lector a desplazarse mucho. El desempeo entonces variar de acuerdo con la distribucin de los datos en el disco (que en efecto es aleatoria). Esto fue, y sigue siendo, un mal necesario. Los procedimientos tales como la defragmentacin, no ayudan demasiado para grandes datos. El disco duro buscar en toda la superficie del disco, independientemente de cmo estn organizados los datos. Dado que los SSD son totalmente electrnicos, y que no tienen ninguna parte en movimiento, ofrecen tiempos de acceso ms rpidos y ms previsibles. Pero los SSD son ms costosos y su capacidad todava no es compatible con las unidades tradicionales. No obstante, se convertirn en una solucin viable. Empleo de SSD con MineSight Todos los proyectos que trabajen con grandes conjuntos de datos se beneficiarn si utilizan SSD. Las operaciones de importacin/guardado de datos pueden ser dos veces ms rpidas en un SSD. Conclusiones Actualmente, MineSight es esencialmente de flujo nico y, por el momento, no soporta la informtica de 64 bits. Por lo tanto, actualizar su equipo para que tenga mltiples ncleos o 64 bits no tendr mayor efecto. No obstante, el empleo de SSD contribuir en aquellas aplicaciones que realizan grandes cantidades de entradas/salidas en el disco (MSTorque, MSDART). Puede contar con que habr ms capacidad multi hilo y soporte para 64 bits en breve. Con ms componentes con diseo multi hilo,
podr ver las mejoras al pasar a los equipos con mltiples ncleos. Quienes trabajen con grandes conjuntos de datos vern an ms beneficios cuando utilicen MineSight con soporte 64 bits.