Documente Academic
Documente Profesional
Documente Cultură
s 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.
D i c i e m b r e
2 0 1 0
m i n e s i g h t
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.
D i c i e m b r e
2 0 1 0
m i n e s i g h t
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.
D i c i e m b r e
2 0 1 0
m i n e s i g h t
MineSight Ahora
Actualmente, el conjunto de programas MineSight no soporta la informtica de 64 bits.
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.
D i c i e m b r e
2 0 1 0
m i n e s i g h t
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.
w w w. m i n e s i g h t . c o m
D i c i e m b r e
2 0 1 0