CapÃtulo X: Introducción
CapÃtulo X: Introducción
CapÃtulo X: Introducción
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Capítulo 4: Visualización Out-of-CoreLa Fig. 4.2 se muestra una gráfica logarítmica del ancho de bandaefectivo al incrementar el tamaño de los bricks. Note que el ancho debanda efectivo se incrementa con el tamaño del brick. Basado en estaobservación, Ljung et al. [27] introducen el concepto de grupo de blocks(group of blocks o simplemente GOB) para acceder eficientemente datosout-of-core. Puesto que el ancho de banda de memoria auxiliar a memoriaprincipal es mayor al leer datos contiguos en el archivo, el GOB completose lee cuando un simple block es requerido. En nuestro caso, por tratarcon bricks, utilizaremos la abreviación de GOB para referirnos a grupo debricks.Para el algoritmo de paginación basado en Split-and-Collapse, laoperación de collapse jamás genera un fallo de página, por lo cual nodemanda la lectura de ningún GOB. En cambio, la operación de splitdemanda la lectura de un GOB (8 bricks a lo sumo), que al estar contiguoen el archivo hace mejorar el rendimiento del sistema de paginación. Enlas pruebas, este método al menos duplica el ancho de banda efectivopara bricks más pequeños que 256KB. Por ejemplo, para bricks de 32 3vóxeles de of 16 bits por muestra (64KB = 1/16MB) el ancho de bandaefectivo está alrededor de 18 MB/seg., pero se incrementa hasta 50MB/seg. al leerlos en GOBs (512KB = ½MB).4.4 Algoritmo Multi-hilosEs importante que la carga de bricks actual no detenga el proceso derendering, para mantener la interacción con el usuario. Así, la carga debricks debe ser manejada en otro hilo llamado loader (cargador), que seejecuta concurrentemente con el hilo principal de rendering. Mientras elhilo principal despliega el i-ésimo frame, el hilo cargador está leyendo losbricks potencialmente requeridos en el frame i+1 y de futuros frames sihay ancho de banda remanente.En el alg. 4.1 se presenta a alto nivel, los algoritmos del hilo principal(main-thread) y el hilo cargador (loader-thread). Los objetos sincronizar,semáforo, ramList y C son compartidas por ambos procesos. Igualmente,el árbol jerárquico es compartido, pues cada vez que se carga un bricky/o se reemplaza otro, se actualizan banderas y apuntadores en cadabrick involucrado en la operación indicando si el brick está o no en losconjuntos S, C, S + , C + , ramList, texList. A continuación se estudia cadaproceso.El hilo principal realiza actualizaciones del error, si ha cambiado laregión o punto de interés, el punto de vista o función de transferencia.En este caso, le avisa al cargador que actualice las prioridades mediantela bandera “sincronizar”. Seguidamente ejecuta el algoritmo de Split-and--72-