Printer Friendly

Reduccion de los tiempos de computo de la Migracion Sismica usando FPGAs y GPGPUs: un articulo de revision.

Reduction of computation time of Seismic Migration using FPGAs and GPGPUs: A review article.

1 Introduccion

En los ultimos 150 anos se han consumido alrededor de 1 billon de barriles (de equivalente) de petroleo, debido al incremento de la demanda, durante los proximos veinte anos sera necesario encontrar y extraer la misma cantidad de petroleo que en los 150 precedentes [1]. El petroleo y gas de facil extraccion ya han sido agotados y para ubicar nuevas reservas se tendra que buscar en areas geologicas complejas y que en el pasado fueron descartadas por el alto coste de extraccion. Para tal fin la industria petrolera debera realizar imagenes del subsuelo con una mayor resolucion a las realizadas anteriormente.

Para la construccion de las imagenes del subsuelo, las empresas tradicionalmente han usado plataformas de computo hasta con miles de CPU, sin embargo, los sistemas de computo basados en procesadores tradicionales se han visto frenados principalmente por tres causas: la primera consiste en la relacion cubica entre la frecuencia y la potencia, lo cual ha detenido la carrera por la velocidad, este efecto se conoce como muro de potencia (power wall); otra causa es la gran diferencia que existe entre la velocidad a la cual los datos son transferidos al procesador y la velocidad a la que este ejecuta las instrucciones, esta limitacion se conoce con el nombre de muro de memoria (memory wall); finalmente las posibilidades para que los procesadores continuen aumentando el paralelismo a nivel de instruccion IPL(Instruction Level Parallelism) no son prometedoras, este efecto se conoce como IPL wall [2].

Debido a las tres barreras mencionadas anteriormente, la computacion de alto rendimiento se ha encaminado hacia la computacion hibrida, en donde las CPU trabajan conjuntamente con una serie de nuevas arquitecturas que aprovechan mejor el paralelismo de las aplicaciones. Ahora bien, la pregunta para los investigadores en computacion sismica de alto rendimiento es: ?cual es el hardware mas apropiado para implementar el proceso de Migracion Sismica (MS)? investigaciones recientes [3], [4], [5] muestran que tanto las GPGPU (General-Purpose Computing on Graphics Processing Units) como las en FPGAs (Field Programmable Gate Array) son dos opciones para acelerar el proceso de MS.

Este articulo describe el problema de la MS desde la perspectiva computacional, de igual manera revisa las fortalezas y debilidades que estas dos arquitecturas (FPGAs y GPGPUs) tienen a favor o en contra del proceso de MS. En esta revision tambien se analizan las implementaciones mas representativas de la MS tanto en las FPGAs como las GPGPUs encontradas en la literatura y se resumen los aportes que estas han hecho en relacion a los problemas de memoria, transferencia de datos y de computo.

El resto de este articulo esta organizado de la siguiente manera: la seccion 2 corresponde a la descripcion del experimento sismico y las diferentes estrategias para realizar el proceso de migracion, las secciones 3 y 4 se dedican para introducir las FPGAs y las GPGPUs respectivamente, en la seccion 5 se revisan las diferentes implementaciones de la MS sobre estas arquitecturas y se resumen los principales aportes de cada una de estas implementaciones y finalmente se muestran las conclusiones.

2 Adquisicion y procesamiento de datos Sismicos

El costo de una exploracion del subsuelo esta en el orden de las decenas de millones de dolares y la probabilidad de encontrar petroleo es relativamente baja, por lo cual, la industria petrolera debe realizar estudios que le permitan reducir la incertidumbre en las areas a explorar. La principal tecnica utilizada por la industria del petroleo para identificar posibles reservas de hidrocarburos es construir una imagen del subsuelo por medio de la tecnica de la Reflexion Sismica, esta tecnica esta basada en las propiedades de reflexion de las ondas sonoras.

2.1 Adquisicion de las trazas sismicas

Para la construccion de una imagen del subsuelo, se requiere adquirir gran cantidad de datos sismicos, esta adquisicion se inicia con la ubicacion de una serie de sensores, llamados geofonos, sobre el area a explorar; si los sensores se ubican en linea recta se dice que la adquisicion es 2D o si ocupan una area se dice que la adquisicion es 3D. Una vez ubicados los geofonos, se activa una fuente artificial de sonido en el area a explorar (un camion vibrador, una carga explosiva o bombas de aire en el oceano). El registro de un geofono durante un disparo recibe el nombre de traza sismica.

2.2 La migracion sismica

Con el proposito de construir una imagen del subsuelo, las senales sismicas detectadas por los geofonos (las trazas) deben ser procesadas en varios modulos de procesamiento, el ultimo de ellos se denomina Migracion Sismica y es el de mayor costo computacional. Este modulo busca reubicar los reflectores (las uniones de los diferentes geologicos) de una posicion virtual a su posicion correcta; la importancia de la migracion de los datos sismicos fue reconocida desde 1921 [6] ya que sin este ultimo modulo la imagen que se obtendria seria incorrecta, especialmente en zonas geologicamente complejas [7].

En el experimento sismico se asume que la tierra esta compuesta por una serie de capas [z.sub.i], como se ilustra en la Figura 1; las fuentes y los receptores se ubican en la superficie del area a explorar; la velocidad de la propagacion de la onda en la tierra v(x,y,z), varia en todas las direcciones, pero para simplificar el modelo algunas veces se asume que la velocidad solo varia verticalmente y que es constante durante toda la capa [z.sub.i]. La migracion permite reubicar el reflector AB' supuesto en el punto medio entre el emisor y el receptor (Figura 1), a su posicion correcta AB; esto se logra por medio de la solucion de la ecuacion de onda, Ecuacion (1). La solucion de esta ecuacion utiliza un modelo de velocidad (v) del terreno a explorar y la informacion recolectada por los geofonos [8].

[FIGURA 1 OMITIR]

Matematicamente, la migracion sismica trata de encontrar una solucion P(x,y,z,t) a la Ecuacion (1), usando la condicion de frontera P(x,y,0,t), que fue recolectada en la superficie del terreno [7].

[EXPRESION MATEMATICA IRREPRODUCIBLE EN ASCII] (1)

La imagen del subsuelo I(x,y,z) puede ser extraida de P(x,y,z,i), evaluando esta ultima en i = 0 (Ecuacion (2)), basado en el concepto del reflector que explota [9]:

I (x,y,z) = P(x,y,z,i)[|.sub.t=0], (2)

2.3 Algoritmos utilizados para realizar la migracion sismica

Como se menciono anteriormente, la importancia de la migracion fue reconocida desde hace varios anos y a partir de ahi han aparecido una serie de algoritmos que permiten realizar este procedimiento. La industria del petroleo usa paquetes comerciales de software para hacer el procesamiento de sus datos sismicos, como por ejemplo ProMAX[R] Family Seismic Data Processing Software y SeisUP[R]. Estas herramientas procesan los datos sismicos por medio de varios modulos, el ultimo de ellos es el de migracion.

Los algoritmos son diferentes estrategias de solucion a la Ecuacion (1) y utilizan alguna aproximacion escalar a dicha ecuacion [10],[7]. A continuacion se hace una descripcion de algunos de estos algoritmos desde el punto de vista computacional:

2.3.1 Migracion de Kirchhoff Este es el metodo de migracion mas popular en la industria del petroleo y fue el primero en ser implementado en un equipo de computo y uno de los de menor costo computacional. El principio matematico que utiliza este algoritmo es bastante sencillo: se parte de un emisor y un receptor en la superficie a explorar, se mide el tiempo que se tarda el frente de onda en hacer la trayectoria emisor-reflector-receptor; con este valor se pueden calcular todos los posibles reflectores. Con velocidad constante, el lugar geometrico que ocupan estos posibles reflectores, es la mitad inferior de una elipse para el caso 2D o un elipsoide para el caso 3D (de acuerdo a la definicion geometrica de una elipse) como se muestra Figura 2. Esta informacion (la traza no migrada) no es suficiente para decidir cual de todos los infinitos puntos que conforman este lugar geometrico es el receptor verdadero, con otra traza sismica, la migracion puede calcular otros posibles reflectores, la migracion de Kirchhoff repite este procedimiento sobre todas las trazas y finalmente suma todas las contribuciones de las elipses (o los elipsoides) y de esta manera se forma la imagen del subsuelo [10].

[FIGURA 2 OMITIR]

Matematicamente la migracion de Kirchhoff implica operaciones de suma, resta, multiplicacion, division y radicacion las cuales generalmente se realizan en formato de coma flotante precision sencilla pues el formato de precision doble no es requerido para esta aplicacion.

2.3.2 Cambio de Fase El cambio de fase es un metodo que hace uso del concepto del reflector que explota [9]. Se parte de P(x, y, 0, t) hasta llegar a P(x,y,z,0); en este metodo la extrapolacion se hace en el dominio de la frecuencia y por medio de un operador de cambio de fase. Este metodo comienza con una transformada de Fourier de los datos, que puede ser en 2D o 3D (dependiendo del tipo de adquisicion), luego se aplica el operador de cambio de fase y finalmente se utiliza una transformada inversa de Fourier [7].

2.3.3 Metodo por Diferencias Finitas Consiste en la discretizacion de la Ecuacion (1) (o una aproximacion de ella), reemplazando las derivadas parciales por una aproximacion en diferencias centrales (esto se logra por medio de la aproximacion de la serie de Taylor). Para mejorar la precision en este metodo se requiere aumentar el numero de puntos que se toman en la aproximacion, pero obviamente esto requiere una mayor cantidad de operaciones computacionales. De igual manera en este metodo se hace necesario tener en cuenta problemas relacionados con los errores de truncamiento y criterios de estabilidad con el fin de asegurar la convergencia del metodo [12].

2.3.4 Migracion Reversa en el Tiempo Este es el metodo que en la actualidad ofrece una mejor calidad en la imagenes y aunque fue introducido en 1983 [13] su alto costo computacional impidio que se usara en el pasado [5]. Este consiste en resolver una aproximacion de la Ecuacion (1) dos veces, estas dos soluciones reciben el nombre de propagaciones hacia adelante y hacia atras, luego los dos resultados son correlacionados para obtener la imagen [4]. Matematicamente este metodo implica el operador Laplaciano, diferencias finitas y un metodo explicito para realizar integracion en el tiempo [14].

2.4 Clases de Migracion

La migracion puede ser aplicada de diferentes formas, estas formas son llamadas clases: pos-apilado, pre-apilado, 2D o 3D, en tiempo o en profundidad. Estas clases forman ocho posibles combinaciones [15].

2.4.1 Migracion Pos-apilada y Migracion Pre-apilada Un proceso usado para mejorar la relacion senal a ruido de la trazas sismicas y reducir el costo de procesamiento es el apilamiento. Este proceso consiste en sumar las trazas obtenidas en varios disparos que se reflejan en un mismo punto [16]. Si la migracion se aplica despues del apilamiento se denomina migracion pos-apilada y su principal ventaja es la reduccion del tiempo de computo, debido a que el numero de trazas a ser procesadas se decrementa significativamente; su desventaja es que este procedimiento disminuye la precision, especialmente en terrenos geologicamente complejos. Cuando la migracion se aplica antes del apilamiento (migracion pre-apilada) se mejora la precision, pero se requiere mas tiempo de computo (entre 60 y 120 veces mas) que en la migracion pos-apilada [16],[15].

2.4.2 Migracion 2D o Migracion 3D Dependiendo de como las trazas sismicas son grabadas, la migracion puede ser clasificada en 2D o 3D. En la migracion 2D, la energia es reflejada en un plano, luego los geofonos son localizados en linea recta. En la migracion 3D los geofonos ocupan un area sobre la superficie a explorar. De manera general la migracion 3D puede proveer una mayor resolucion en la imagenes pero requiere

un mayor tiempo de computo, lo que puede durar dias en el procesamiento en sismica 2D puede tardar semanas con adquisiciones 3D [15].

2.4.3 Migracion en tiempo o Migracion en profundidad Existen dos enfoques para la migracion sismica: el tiempo y la profundidad. En terminos simples la migracion en tiempo localiza los reflectores midiendo el tiempo de viaje del frente de onda, mientras que la migracion en profundidad lo hace en funcion de la profundidad. La migracion en tiempo ha sido la mas empleada durante los ultimos anos, pero algunos estudios [16] muestran que la migracion en profundidad ofrecen mejores resultados pero se requiere un mejor modelo de velocidad y mayor capacidad de computo.

2.5 Criterios para la seleccion de la clase migracion

Como se menciono anteriormente si se combinan las diferentes posibilidades que se tienen actualmente para aplicar la migracion, se tienen ocho diferentes posibilidades. En la Figura 3 se resumen los criterios de seleccion descritos por Farmer en [15] (aqui no se tiene en cuenta el tipo de adquision 2D o 3D):

[FIGURA 3 OMITIR]

2.6 Costo computacional de la migracion sismica

Una ventaja del proceso de la MS es que gracias a que los disparos se hacen en tiempos diferentes, cada una de las trazas sismicas puede ser procesada de manera independiente, lo cual facilita la paralelizacion del proceso al ser implementado [14],[17]. Sin embargo, la implementacion de la MS sobre un sistema de computo tiene tres retos principales:

2.6.1 Transferencia de Datos La cantidad de datos que requieren ser transferidos desde la memoria principal a los dispositivos de computo es elevada. una adquisicion tipica puede requerir 30000 geofonos y cada sensor muestrea datos a mas de 2kbps, con una nueva detonacion cada 10 segundos, de tal forma que la cantidad de datos que se obtienen cada dia puede estar en el orden de los terabytes [18].

2.6.2 Memoria La cantidad de memoria requerida para realizar la MS facilmente supera la capacidad de memoria disponible en el dispositivo de computo [14].

2.6.3 Computo La migracion sismica es una aplicacion que requiere gran cantidad de computo, actualmente el tiempo requerido para migrar los datos obtenidos durante un estudio sismico esta en el orden de las semanas.

3 Dispositivos Logicos Programables

Una alternativa para acelerar el proceso de migracion sismica son los dispositivos logicos programables. Entre estos se destacan las FPGA (Field Programmable Gate Array), siendo su uso muy extendido en multitud de problemas de aceleracion de algoritmos complejos.

Las FPGA permiten crear funciones complejas mediante la interconexion de una gran cantidad de recursos logicos. Los bloques logicos configurables (CLBs por sus siglas en ingles) son el principal recurso para la construccion de funciones logicas. Los bloques de entrada/salida (IOBs por sus siglas en ingles) facilitan la comunicacion de los pines de entrada/salidas hacia el mundo exterior y la matriz de interconexion permite interconectar los CLBs entre si, asi como tambien facilitar la interconexion con el mundo exterior a traves de los bloques de entrada/salida.

La comunicacion de las FPGA con el exterior puede realizarse mediante gran cantidad de interfaces de salida. Actualmente uno de las mas utilizados son los puertos PCI-Express que permiten transferir datos entre la FPGA y la CPU a velocidades de varios Gb/s. Para las tareas de computacion de alto rendimiento es tambien habitual que la placa donde va insertada la FPGA contenga una gran cantidad de memoria externa del tipo DDR2 o incluso DDR3.

Los proveedores de FPGAs como Xilinx[R], Altera[R], Atmel[R], Lattice Semiconductor Corporation[R] y Achronix Semiconductor Corporation[R] --dentro de los que se destacan los dos primeros--ofrecen una serie modulos IP tanto softcore (descritos en un HDL) como hardcore (implementados en fabrica) que van desde modulos matematicos hasta procesadores completos [19],[20]. De esta forma, bloques comunmente utilizados en los disenos, como unidades de punto flotante, no deben de ser disenadas desde cero en cada nueva aplicacion.

Adicionalmente desde hace un par de anos, algunos fabricantes tradicionales de equipos de computacion de alto rendimiento (Cray[R], SGI[R], Annapolis Micro Systems[R], Nallatech[R], Maxeler[R], DRC[R] y Mercury Computer[R]) empezaron a incluir dentro de su catalogo de productos, sistemas de computo que incluyen FPGA. De manera general, estos equipos de computo cuentan con potentes CPU combinadas con FPGA.

3.1 Las FPGA y la computacion de alto rendimiento

Las FPGA ofrecen muchas posibilidades para acelerar aplicaciones de computo intensivo, gracias a que pueden ser configurados para desarrollar tareas con un alto grado de paralelismo [21],[22], sin embargo la frecuencia a la que actualmente operan las FPGA es unas diez veces menor que la frecuencia de un procesador de escritorio, por lo cual, se requiere que las aplicaciones implementadas en la FPGA realicen al menos 10 veces mas trabajo computacional por ciclo de reloj, para estar a la par con un procesador convencional.

Las FPGA ya han demostrado que tienen el potencial para acelerar aplicaciones de computo intensivo, prueba de esto es la constante publicacion de procesos computacionales implementados sobre FPGA; estas publicaciones cubren areas como: redes neuronales [23],[24],[25],[26], busqueda de secuencias geneticas [27],[28], filtrado digital [29],[30],[31], [32], filtrado de paquetes de red [33],[34] y simulaciones financieras MonteCarlo [35],[36] entre otras.

3.2 Caracteristicas de las aplicaciones susceptibles de ser aceleradas en una FPGA

No todas las aplicaciones se pueden beneficiar de igual manera en una FPGA y debido a la dificultad que representa mapear una aplicacion en estos dispositivos, Es aconsejable hacer algunas estimaciones previas con el fin determinar las posibilidades de aceleracion que tendra un algoritmo especifico.

Las aplicaciones que requieran procesar gran cantidad de datos con poca o ninguna dependencia de datos son las ideales para implementar en las FPGA, adicionalmente se requiere que dichas aplicaciones esten limitadas por computo y no por transferencia de datos [37]. La migracion sismica requiere procesar gran cantidad de datos (en el orden de las decenas Terabytes) y por otro lado las trazas sismicas pueden ser procesadas de manera independiente, lo cual disminuye sustancialmente la dependencia de los datos. Sin embargo, la migracion tambien tienen una gran transferencia de datos y las las operaciones de entrada/salida en las FPGA estan limitadas por el ancho de banda del PCI-express (2Gb/s).

Por otro lado, la precision y el formato de los datos son otro aspecto influyente sobre el rendimiento de las aplicaciones sobre las FPGA, por lo general con una menor precision (menor cantidad de bits para representar los datos) se aumenta el rendimiento de la aplicacion dentro de la FPGA; con respecto al formato de los datos, las FPGA obtienen mejores desempenos en numeros en punto fijo que numeros en coma flotante, algunas estrategias para implementar aplicaciones en numeros de coma flotante en las FPGA es reducir la cantidad de bits con los cuales se representa los numeros [37]. La migracion se ha implementado con numeros en coma flotante precision simple [17] y algunas investigaciones [38], [3] muestran que es posible implementar algunas partes de este modulo utilizando punto fijo en lugar de coma flotante y obtener imagenes con patrones muy similares (visualmente identicas).

3.3 Lenguajes de programacion para las FPGA

La implementacion de una aplicacion sobre esta tecnologia se realiza por medio de Lenguajes de Descripcion de Hardware (HDLs por sus siglas en ingles) como VHDL o Verilog. La descripcion de una aplicacion utilizando HDLs no consiste simplemente en escribir un codigo sin errores sintacticos, el proceso corresponde mas al diseno de un circuito a nivel RTL (Register-Transfer Level), en el cual se describen ciclo a ciclo de reloj todas las transferencias de datos entre los registros que componen el diseno, por lo cual la implementacion de una aplicacion sobre una FPGA es una tarea que consume bastante tiempo y ademas requiere conocimientos de hardware digital.

Actualmente existen dos enfoques para tratar de reducir el tiempo de diseno requerido en los disenos sobre FPGA:

La primera estrategia es usar compiladores CtoHDL tales como: Vivado[R] Design Suite (Xilinx[R]), Catapult Product Family Overview (Calypto Design System, Inc.), C to Verilog, ROCCC 2.0 (Jacquard Computing, Inc.), Nios[R] II C-to-Hardware Acceleration (Altera[R]) e Impulse CoDeveloper C-to-FPGA Tools (Impulse[R]), en los que a partir de un codigo C generan una descripcion en un HDL (ej. VHDL o Verilog) sin necesidad de tener que realizar manualmente el RTL. En este tipo de compiladores existe una correlacion directa entre: la cantidad de restricciones que tienen en cuanto al subset ANSI-C, el esfuerzo para modificar el codigo en C y el numero de tipos de kernel soportados [39]. La otra estrategia para facilitar el uso de las FPGA usando lenguajes de alto nivel, dentro de estos lenguajes se encuentran los denominados Like-C como Mitrion-C (Mitrionics[R]). En noviembre de 2011, Altera[R] abrio la posibilidad de que sus FPGA sean programadas usando el estandar openCL [40]. Tambien existen lenguajes emergentes hardware-software, como el propuesto en 2011 por Dave [41]. A pesar de su necesidad, estos lenguajes todavia no logran gran penetracion en el mercado, debido a que su uso todavia compromete la eficiencia de los disenos. Las investigaciones con respecto a la compilacion CtoHDL y los lenguajes de alto nivel se encuentran activas [42],[43],[44],[45] y algunos resultados han sido positivos [46], pero la posibilidad de tener acceso a todas las potencialidades de las FPGA desde un lenguaje de alto nivel todavia esta en desarrollo.

4 El hardware grafico

Las GPGPUs son dispositivos que constan de una gran cantidad de nucleos programables en los que se ejecuta un software, sobre un flujo de datos, en forma de SIMD (Single Instruction Multiple Data). Hasta el ano 2007 fueron programadas utilizando lenguajes de programacion grafica y su uso estuvo centrado en aplicaciones de este tipo; a partir del ano 2008 empezaron a aparecer una serie de herramientas que han facilitado su programacion [2] y por tal razon empezaron a utilizarse en computacion de proposito general, de ahi que actualmente se les conozca con el nombre de General Purpose Graphics Processing Units (GPGPU).

Una GPGPU esta dividida en una red de bloques y cada bloque consta de varios hilos (512 en las ultimas GPGPUs de NVIDIA[R] [3]). El uso de hilos contribuye a optimizar el uso de la memoria: mientras un hilo esta esperando por datos, otro hilo esta siendo ejecutado. Cada bloque de hilos tiene su propio conjunto de registros y cada bloque de red tiene un espacio de memoria compartida, a la que se puede acceder tan rapido como se accede a un registro, adicionalmente hay un memoria compartida (con 4GB en las ultimas GPGPUs de NVIDIA[R]), que tiene una latencia de dos ordenes de magnitud mayor que los registros [3]. Una GPGPU es una tarjeta independiente que se conecta a un sistema de computo a traves de un puerto PCI express, lo que limita la transmision de datos al ancho de banda de este puerto.

4.0.1 Las GPGPUs y la computacion de alto rendimiento El rendimiento y el ancho de banda de las GPGPUs cada vez esta mas por encima de los sistemas monoprocesador, como se observa en la Figura 4. Actualmente las GPGPU alcanzan un rendimiento teorico de mas de un Teraflops en precision sencilla y mas de medio en precision doble [2],[47]. Asi mismo, las GPGPUs ofrecen una mejor relacion rendimiento/potencia y rendimiento/costo [2],[48],[49] lo que explica el gran interes que esta arquitectura ha despertado en las investigaciones relacionadas con el computo intensivo.

[FIGURA 4 OMITIR]

Las GPGPUs son una arquitectura que ofrecen caracteristicas en favor de la implementacion de la migracion sismica:

* Las GPGPUs estan disenadas para tomar ventaja del paralelismo de las aplicaciones y dado el gran potencial de paralelismo que tiene la migracion sismica, esta arquitectura resulta ser una de las mas atractivas para la implementacion de esta aplicacion [14],[3].

* Las GPGPUs incluyen una unidad de procesamiento que soporta operaciones vectorizadas con numeros tanto en precision simple como en presicion doble [49] y su rendimiento en precision sencilla es mas de doble que en precision doble [47] y como se menciono anteriormente este tipo de aplicacion no requiere numeros en precision doble.

* La tasa de crecimiento en el rendimiento de las GPGPUs es de 4x anualmente, mientras que la tasa de crecimiento en el rendimiento de las CPUs es de 1,4x anualmente [50].

Existe una gran numero de investigaciones relacionadas con el desarrollo de soluciones computacionales basadas en GPGPU y muchas de estas empiezan a aparecer en la literatura. Dentro de las mas importantes se encuentran: solucion de ecuaciones simultaneas [51], diferentes tipos de transformadas [52],[53],[54], soluciones de la ecuacion de onda 2D y 3D [12], [55], comunicaciones [56], simulaciones de dinamica molecular [57], entre otras.

4.1 Lenguajes de Programacion para las GPGPUs

Como se menciono anteriormente las GPUs solo podian ser programadas usando lenguajes graficos como OpenGL. Despues, para permitir el uso general de las GPUs AMD[R] lanzo su programa Stream SDK y NVIDIA[R] publico su lenguaje CUDA. Sin embargo, actualmente tanto las GPUs de AMD[R] como las de NVIDIA[R] soportan openCL. Otro lenguaje que se puede usar en ambos tipos de GPGPUs es DirectCompute [58], de Microsoft[R], el cual permite a los desarrolladores aprovechar la extraordinaria capacidad de procesamiento paralelo de las GPUs NVIDIA[R] para crear aplicaciones de calculo altamente eficientes. En este momento las GPUs de NVIDIA[R] estan dominando la computacion de proposito general, g racias a la acogida que ha tenido su lenguaje de alto nivel CUDA.

5 Implementacion de la Migracion Sismica sobre FPGAs y GPGPUs

En esta seccion se revisan las diferentes implementaciones de la migracion sismica tanto sobre FPGAs como sobre GPGPUs. De igual manera se revisan como estas investigaciones han abordado los problemas computacionales que presenta esta aplicacion.

5.1 Migracion de Kirchhoff, implementada sobre una Virtex II Pro (2004)

En el ano 2004 en la Universidad de Texas A&M se realizo la primera implementacion del proceso de migracion sobre una FPGA [11], en este trabajo se implemento la Migracion de Kirchhoff Pre-apilada en Tiempo en la plataforma Xilinx Virtex II Pro. La FPGA fue conectado a una estacion de trabajo a traves del bus PCIe, esta plataforma (llamada SPACE) contiene dos tipos de memoria: Dos RAM static dual-port que hacen las veces de memoria cache de rapido acceso y cuatro modulos DDR-RAM (Double Data Rate Ramdom Access Memory).

5.1.1 Aportes del trabajo En este trabajo se busca mejorar el tiempo que tarda la FPGA en realizar una raiz cuadrada utilizando un modulo CORDIC [59]. En la migracion de Kirchhoff se requieren realizar tres operaciones matematicas: sumas, multiplicaciones y raices cuadradas. De las tres operaciones requeridas, la raiz cuadrada es el modulo mas lento en hardware con una latencia de al menos diez veces mas que un multiplicador full pipeline. Gracias a que algunos datos utilizados en la migracion sismica estan acotados (por ejemplo los valores de tiempo no superan los 16 segundos) en este trabajo se implemento un modulo CORDIC full pipeline para realizar la raiz cuadrada. Este modulo primero convierte los datos de punto flotante a punto flotante alineado (los exponentes son iguales), los exponentes se mantienen constantes y las dos mantisas alimentan una unidad CORDIC para realizar la raiz cuadrada.

5.1.2 Resultados

* Con una frecuencia de trabajo de 50MHz se logro una aceleracion de 15,6x comparada con un 2.4GHz Pentium 4.

* En este trabajo se realizo una comparacion de los errores cometidos al usar el modulo CORDIC y un programa en C (precision doble) y los errores no tienen mayores repercusiones en los patrones de las imagenes generadas.

5.2 Diferencias finitas en el dominio del tiempo, implementada sobre una Xilinx ML401 (2005)

La migracion sismica consiste en la solucion de una ecuacion de onda y las diferencias finitas es uno de los metodos mas utilizados en este proceso. Esta implementacion [60] es una version mejorada de [11] y fue realizada por el mismo grupo de investigacion.

5.2.1 Aportes del trabajo En este trabajo se aborda el problema relacionado con el ancho de banda entre la memoria y la FPGA, el cual impide que se puede sacar todo el potencial de las FPGAs. En este trabajo se proponen dos soluciones para mejorar el ancho de banda: reescribir la aplicacion con el proposito de disminuir la cantidad de datos que requieren ser leidos y el diseno de una nueva arquitectura para el manejo de la memoria. Las ecuaciones de onda se pueden representar como un sistema de primer orden en forma de derivada, pero tambien se pueden presentar de segundo orden sin perder generalidad. La representacion de las ecuaciones de onda como ecuaciones de segundo orden trae un beneficio en una implementacion basada en FPGAs pues ofrece un mejor rendimiento en el acceso a la memoria. En este trabajo se describe la ecuacion de onda usando ecuaciones de segundo orden con el proposito de mejorar el uso de ancho de banda de la memoria. Otra propuesta es el uso de las memorias DDR-SDRAM (las cuales se pueden encontrar en las plataformas reconfigurables), estas tienen la posibilidad de ofrecer un alto throughput a un relativo bajo precio. Basados en la dependencia de datos que tiene la solucion de la ecuacion de onda, en este trabajo se introduce una interfaz entre los modulos de computo y la memoria onboard usando los modulos onchip de memoria de la FPGA. Este modulo permite utilizar el ancho de banda de la memoria onboard mas eficientemente que los trabajos anteriores y puede ser implementado en la mayoria de sistemas de desarrollo basados en FPGAs. Basicamente en este trabajo se propone una nueva manera de acceder a los datos de la grid, almacenando algunos valores dentro de la FPGA con el fin de evitar el acceso a la memoria onboard. Los datos en la FPGA se almacenan en dos FIFOs en cascada, estos buffers se implementan en los modulos de memoria onchip. Los datos del grid van entrando por un puerto de entrada al fondo del primer FIFO y se va descartando el ultimo del segundo FIFO, de tal forma que en el FIFO se tienen disponibles todos los datos necesarios para cada computo dentro de la FPGA.

5.2.2 Resultados En este trabajo se obtienen aceleraciones de hasta 8,26x comparado con un Intel P4 3.0 GHz.

5.3 Downward continued migration, implementada sobre la plataforma MAX1 (2007)

En [61] buscan mejorar el rendimiento de la FPGA y optimizar el uso del puerto PCIe reduciendo la cantidad de bits con la cual se representan los datos, para tal fin, se implementa una parte de la Downward Continued Migration utilizando un numero menor de bits a los empleados anteriormente. La implementacion se realizo en una plataforma MAX1 [62] la cual contiene una FPGA Virtex-4 FX100.

5.3.1 Aportes del Trabajo Se simulo todo el proceso de migracion sismica y se seleccionaron aquellas partes que se encuentran acotadas, estas partes se implementaron en punto fijo con 10, 6 y 5 bits en la parte decimal en lugar de utilizar numeros de coma flotante.

5.3.2 Resultados Como se observa en la Figura 5, las graficas del subsuelo (para los diferentes numeros de bits en la parte decimal) son visualmente identicas.

En este trabajo se alcanzaron aceleraciones de hasta 42x comparados con una implementacion software (precision doble) en un 2.8GHz AMD[R] Opteron-based PC con 12 GB de RAM.

5.4 Downward continued migration, implementada sobre la plataforma MAX1 (2008)

En [63] nuevamente se aborda el problema del computo desde la perspectiva de la representacion de los datos. El objetivo de esta investigacion es encontrar las partes de la migracion que pueden ser desarrolladas en punto fijo y determinar cual es el numero menor de bits requeridos para conseguir imagenes del subsuelo de aceptable calidad. En este trabajo se utiliza como caso de estudio la Ecuacion 3, esta ecuacion exponencial compleja es comun a todas las clases de Downward continued migration.

[EXPRESION MATEMATICA IRREPRODUCIBLE EN ASCII] (3)

[FIGURA 5 OMITIR]

5.4.1 Aportes del Trabajo

* En este trabajo se usan los resultados de las aproximaciones matematicas de Lee 2005 [64] que permiten mapear eficientemente sobre FPGAs, raices cuadradas y funciones trigonometricas.

* Se desarrollo una herramienta que permite calcular el numero menor de bits requerido para el caso propuesto.

* Se realizaron pruebas con coma flotante de menos de 32 bits.

5.4.2 Resultados

* Se establecieron como cantidad minima de bits 12 y 16 para la raiz cuadrada y las funciones trigonometricas respectivamente.

* Con puntos fijos de hasta 12 bits se construyen imagenes con los mismos patrones que las generadas en software (precision doble).

* Se establecio que se pueden realizar las operaciones en coma flotante de 22 bits, 6 para el exponente y 16 para la mantiza.

* Las imagenes generadas fueron comparadas por medio de filtros de error con imagenes generadas en precision doble y se obtuvieron los mismos patrones.

* Con dos cores implementados en la FPGA se logro una aceleracion de 13,7x comparado con un Intel Xeon 1.86GHz.

* Con este nuevo formato de numeros se reduce considerablemente el area empleada dentro de la FPGA.

* Se establecio que con el suficiente ancho de banda se pueden poner 6 cores dentro de la FPGA y lograr una aceleracion de hasta 48x.

5.5 Compresion de Datos Sismicos: Tesis de Maestria (2009)

En la tesis de maestria [65] se aborda el problema de mejorar el ancho de banda entre la memoria y el dispositivo de computo utilizando compresion de datos. En esta investigacion, se utiliza el algoritmo de compresion propuesto por T. Rosten [66] para comprimir los datos sismicos antes de ser enviados a la GPGPUs.

5.5.1 Aportes El objetivo de esta investigacion es revisar si la transmision de datos comprimidos desde una memoria principal hasta la memoria de la GPU y su posterior descompresion resulta en un tiempo mas corto que el envio de la misma cantidad de datos sin comprimir. Para tal fin se implementa dicho algoritmo sobre una GPGPU Quadro FX 5800 de NVIDIA[R].

5.5.2 Resultados Los resultados no fueron positivos, el envio de datos comprimidos a la memoria de la GPU y su posterior descompresion consume mas tiempo que un envio de datos sin comprimir.

5.6 Migracion Reversa en el Tiempo (RTM) sobre un cluster Maxeler que contiene cuatro Virtex 6 (2011)

En [1] se detalla el procedimiento para implementar la RTM dentro de una FPGA. El cluster utilizado es de la empresa Maxeler, el cual contiene 8 CPUs y cuatro Virtex 6.

5.6.1 Aportes La comunicacion entre FPGAs es realizada por medio del puerto MaxRing y por medio de este, se obtuvo un ancho de banda que no afecto el computo.

En esta investigacion se utilizan las herramientas CAD ofrecidas por Maxeler, las cuales permiten introducir la aplicacion descrita en Java.

El procedimiento utilizado para la implementacion sobre la FPGA es:

1. Modificar el kernel: simplificar, aplanar, convertir los lazos dinamicos en lazos estaticos.

2. El kernel modificado se compila en un Diagrama de flujo de Datos (data-flow graph). Gracias a que estos diagramas son estaticos es posible determinar los caminos criticos y la cantidad de operaciones.

3. Se convierte el Diagrama de Flujo de datos en una synchronous data-flow machine. Cada nodo en esta maquina es una operacion (punto fijo o flotante) un multiplexor o un buffer. Idealmente cada operacion debe durar un ciclo de reloj y las operaciones complejas se les aplica pipeline a una rata de un ciclo por sub-operacion.

4. Repetir los pasos anteriores para optimizar.

5.6.2 Resultados

* Este trabajo logro una aceleracion 70x comparado contra un dual-processor quad-core 2.9-GHz Intel Nehalem.

* Adicionalmente en este trabajo se calculan los consumos de potencia: 500W para la FPGA y 700W para para el servidor Nehalem. La CPU consumiria 14000W si se acelera su proceso 40x.

* En este trabajo tambien se implementa la RTM sobre una GPU, la cual obtuvo una aceleracion de 5x comparada con la CPU.

5.7 Migracion en Tiempo inverso sobre tres arquitecturas diferentes: Cell/Be, GPGPUs y FPGAs (2011)

En [14] se compara la implementacion de la RTM sobre tres arquitecturas diferentes: Cell/Be, GPGPUs y FPGAs.

5.7.1 Aportes En la implementacion sobre la GPGPU se comprimen los datos antes de ser enviados al disco con el proposito de ahorrar espacio. El volumen de datos es almacenado en un buffer mientras se estan enviando al disco. Tener el volumen de datos almacenados en un buffer permite desarrollar de manera concurrente el envio de datos con el computo del siguiente dato. La cantidad de memoria necesaria para un disparo supera facilmente la capacidad de memoria disponible en una GPGPU (4 GiB en este caso), la aplicacion es particionada en tantos subdominios como GPGPUs existen. En la implementacion sobre la FPGA, este trabajo se enfoca en el reuso de los datos, para tal fin se utilizan los tres niveles de memoria con los que cuenta la plataforma empleada. Adicionalmente se usa la compresion y descompresion de datos y se sugiere el uso de punto fijo en lugar de punto flotante.

5.7.2 Resultados Todas las implementaciones estuvieron cerca de acelerar el proceso por un factor 10x. Sin embargo los resultados de la GPU estuvieron por encima del desempeno de la implementacion sobre la FP GA.

5.8 Resumen de resultados

En la tabla 1 se resumen los aportes y resultados de las implementaciones de la Migracion Sismica sobre FPGAs y GPGPUs encontradas durante la presente busqueda.

6 Conclusiones

A continuacion listamos algunas lineas de investigacion que consideramos importantes, con el fin de continuar optimizando el uso de las FPGA y las GPGPU en el area del procesamiento de datos sismicos:

* El uso de la compresion de datos sismicos como estrategia para aumentar la velocidad de transferencia de las trazas sismicas: En este momento la velocidad a la cual se ingresan los datos sismicos al dispositivo no permite mantener aprovechar el 100 % del potencial de computo de estas dos arquitecturas. El uso de la compresion para aumentar la velocidad de transferencia requiere que el tiempo de envio de los datos comprimidos mas el tiempo de descompresion sea menor que el tiempo de envio de los datos sin comprimir. Al respecto, creemos que esta estrategia puede llegar a ser mas viable en las FPGA, pues en estos dispositivos las operaciones adicionales de descompresion pueden llegar a convertirse en mas hardware y no en mas tiempo, g racias a la flexibilidad que ofrecen las FPGA para aplicar la tecnica de segmentacion.

* El uso de compiladores CtoHDL: El uso de las FPGA en este contexto se ha visto frenado por la dificultad que representa implementar a nivel RTL el todo algoritmo de migracion (las investigaciones han implementado solo partes de el), una estrategia que podria promover el uso de las FPGA, seria el uso de los compiladores CtoVHDL, sin embargo, se hace necesario evaluar este tipo de herramientas, a fin de determinar la eficiencia de las implementaciones en terminos de area, throughput y throughput/area.

* La optimizacion de la implementacion de operaciones matematicas sobre estas dos tecnologias seguiran siendo claves para mejorar los tiempos de computo de la MS. En este sentido, se requieren investigaciones que giren en torno a la optimizacion de las operaciones matematicas requeridas por la RTM, por ser el tipo de migracion que ofrece una mayor resolucion en la imagenes generadas. De igual manera las investigaciones deben contemplar la posibilidad de utilizar diferentes formatos para representar los datos sismicos (como por ejemplo punto fijo y coma flotante menor a 32 bits).

Aspectos relevantes

* Metodos mas usados para realizar la Migracion Sismica. * Revision de la implementacion de la Migracion Sismica sobre FPGA y GPGPU. * Futuras investigaciones.

Agradecimientos

La presente revision fue realizada al interior del grupo de investigacion CPS de la Universidad Industrial de Santander, los autores agradecen a su director el Dr. Oscar Reyes y demas investigadores por sus valiosos aportes.

Este trabajo fue financiado por el convenio de cooperacion tecnologica UIS-ICP numero 005 de 2003 y el Departamento Administrativo de Ciencia, Tecnologia e Innovacion-Colciencias, Programa Nacional de formacion de Investigadores Generacion del Bicentenario.

Referencias

[1] O. Lindtjorn, R. G. Clapp, O. Pell, and M. J. Flynn, "Beyond Traditional Microprocessors for Geoscience High-Performance Computing Applications," Ieee Micro, vol. 31, no. 2, pp. 41-49, 2011. 262, 283

[2] A. Brodtkorb, "Scientific Computing on Heterogeneous Architectures," Ph.D. dissertation, University of Oslo, 2010. [Online]. Available: http://babrodtk.at.ifi.uio.no/files/publications/brodtkorb_phd_thesis.pdf 263, 275, 276

[3] R. G. Clapp, H. Fu, and O. Lindtjorn, "Selecting the right hardware for reverse time migration," The Leading Edge, vol. 29, no. 1, p. 48, 2010. [Online]. Available: http://link.aip.org/link/LEEDFF/v29/i1/p48/s1&Agg=doi 263, 273, 275, 276

[4] J. Cabezas, M. Araya-Polo, I. Gelado, N. Navarro, E. Morancho, and J. M. Cela, "High-Performance Reverse Time Migration on GPU," 2009 International Conference of the Chilean Computer Science Society, pp. 77-86, 2009. 263, 268

[5] R. Abdelkhalek, H. Calandra, O. Coulaud, J. Roman, and G. Latu, " Fast seismic modeling and Reverse Time Migration on a GPU cluster," 2009 International Conference on High Performance Computing & Simulation, pp. 36-43, 2009. 263, 268

[6] V. K. Madisetti and D. G. Messerschmitt, "Seismic migration algorithms using the FFT approach on the NCUBE multiprocessor," ICASSP-88., International Conference on Acoustics, Speech, and Signal Processing, pp. 894-897, 1988. 264

[7] S. Yerneni, S. Phadke, D. Bhardwaj, S. Chakraborty, and R. Rastogi, "Imaging subsurface geology with seismic migration on a computing cluster," Current Science, vol. 88, no. 3, pp. 468-478, 2005. 264, 265, 266, 267

[8] V. K. Madisetti and D. G. Messerschmitt, "Seismic migration algorithms on parallel computers," IEEE Transactions on Signal Processing, vol. 39, no. 7, pp. 1642-1654, 1991. 265

[9] J. F. Claerbout, "Basic Earth Imaging," p. 220, 2010. [Online]. Available: http://sepwww.stanford.edu/sep/prof/bei11.2010.pdf.2011.pdf 266, 267

[10] S. H. Gray, J. Etgen, J. Dellinger, and D. Whitmore, "Seismic migration problems and solutions," Geophysics, vol. 66, no. 5, p. 1622, 2001. 266, 267

[11] C. He, M. Lu, and C. Sun, "Accelerating Seismic Migration Using FPGA-Based Coprocessor Platform," 12th Annual IEEE Symposium on Field-Programmable Custom Computing Machines, pp. 207-216, 2004. 267, 277, 279

[12] D. Brandao, M. Zamith, E. Clua, A. Montenegro, A. Bulcao, D. Madeira, M. Kischinhevsky, and R. C. P. Leal-Toledo, "Performance Evaluation of Optimized Implementations of Finite Difference Method for Wave Propagation Problems on GPU Architecture," 2010 22nd International Symposium on Computer Architecture and High Performance Computing Workshops, pp. 7-12, 2010. 268,277

[13] E. Baysal, "Reverse time migration," Geophysics, vol. 48, pp. 1514-1524, 1983. 268

[14] M. Araya-polo, J. Cabezas, M. Hanzich, M. Pericas, I. Gelado, M. Shafiq, E. Morancho, N. Navarro, M. Valero, and E. Ayguade, "Assessing Accelerator-Based HPC Reverse Time Migration," Electronic Design, vol. 22, no. 1, pp. 147-162, 2011. 268, 270, 271, 276, 284

[15] P. Farmer, S. Gray, G. Hodgkiss, A. Pieprzak, and D. Ratcliff, "Structural Imaging: Toward a Sharper Subsurface View," Oilfield Review, vol. 1, no. 1, pp. 28-41, 1993. 268, 269, 270

[16] A. Albertin, J. Kapoor, R. Randall, and M. Smith, "La era de las imagenes en escala de profundidad," Oilfield Review, vol. 14, no. 1, pp. 2-17, 2002. 268, 269

[17] S. Abreo and A. Ramirez, "Viabilidad de acelerar la migracion sismica 2D usando un procesador especifico implementado sobre un FPGA The feasibility of speeding up 2D seismic migration using a specific processor on an FPGA," Ingenieria e investigacion e investigacion, vol. 30, no. 1, pp. 64-70, 2010. 270, 273

[18] M. Flynn, R. Dimond, O. Mencer, and O. Pell, "Finding Speedup in Parallel Processors," 2008 International Symposium on Parallel and Distributed Computing, pp. 3-7, 2008. 270

[19] Xilinx Inc., "Xilinx Intellectual Property." [Online]. Available: http://www.xilinx.com/products/intellectual-property/ 272

[20] Altera Corporation, "Altera: Intellectual Property & Reference Designs." [Online]. Available: http://www.altera.com/products/ip/ 272

[21] K. Compton and S. Hauck, "Reconfigurable computing: a survey of systems and software," ACM Computing Surveys, vol. 34, no. 2, pp. 171-210, 2002. [Online]. Available: http://portal.acm.org/citation.cfm?doid=508352.508353 272

[22] I. Skliarova and V. Sklyrov, "Recursion in reconfigurable computing: A survey of implementation approaches," Field Programmable Logic and Applications, 2009. FPL 2009. International Conference on, pp. 224-229, 2009. 272

[23] A. Gomperts, A. Ukil, and F. Zurfluh, "Development and Implementation of Parameterized FPGA-Based General Purpose Neural Networks for Online Applications," Industrial Informatics, IEEE Transactions on, vol. 7, no. 1, pp. 78-89, 2011. 272

[24] Y. Lee and S.-B. Ko, "FPGA Implementation of a Face Detector using Neural Networks," in Electrical and Computer Engineering, 2006. CCECE '06. Canadian Conference on, May 2006, pp. 1914-1917. 272

[25] E. A. Zuraiqi, M. Joler, and C. G. Christodoulou, "Neural networks FPGA controller for reconfigurable antennas," in Antennas and Propagation Society International Symposium (APSURSI), 2010 IEEE, 2010, pp. 1-4. 272

[26] V. Gupta, K. Khare, and R. P. Singh, "FPGA Design and Implementation Issues of Artificial Neural Network Based PID Controllers," in Advances in Recent Technologies in Communication and Computing, 2009. ARTCom '09. International Conference on, 2009, pp. 860-862. 272

[27] K. Puttegowda, W. Worek, N. Pappas, A. Dandapani, P. Athanas, and A. Dickerman, "A run-time reconfigurable system for gene-sequence searching," in VLSI Design, 2003. Proceedings. 16th International Conference on, 2003, pp. 561-566. 272

[28] I. a. Bogdan, J. Rivers, R. J. Beynon, and D. Coca, "High-performance hardware implementation of a parallel database search engine for real-time peptide mass fingerprinting." Bioinformatics (Oxford, England), vol. 24, no. 13, pp. 14981502, 2008. 272

[29] S. Baghel and R. Shaik, "FPGA implementation of Fast Block LMS adaptive filter using Distributed Arithmetic for high throughput," in Communications and Signal Processing (ICCSP), 2011 International Conference on, 2011, pp. 443-447. 272

[30] M. Rawski, P. Tomaszewicz, H. Selvaraj, and T. Luba, "Efficient Implementation of digital filters with use of advanced synthesis methods targeted FPGA architectures," in Digital System Design, 2005. Proceedings. 8th Euromicro Conference on, 2005, pp. 460-466. 272

[31] Y. Wang and Y. Shen, "Optimized FPGA Realization of Digital Matched Filter in Spread Spectrum Communication Systems," Computer and Information Technology, IEEE 8th International Conference on, pp. 173-176, 2008. 272

[32] R. Tessier and W. Burleson, "Reconfigurable Computing for Digital Signal Processing A Survey," Journal of VLSI Signal Processing, vol. 28, pp. 7-27, 2001. 272

[33] R. Sinnappan and S. Hazelhurst, "A Reconfigurable Approach to Packet Filtering," in Field-Programmable Logic and Applications, ser. Lecture Notes in Computer Science, G. Brebner and R. Woods, Eds. Springer Berlin/Heidelberg, 2001, vol. 2147, pp. 638-642. 272

[34] Y. H. Cho and W. H. Mangione-Smith, "Deep network packet filter design for reconfigurable devices," ACM Trans. Embed. Comput. Syst., vol. 7, no. 2, pp. 21-26, 2008. 272

[35] X. Tian and K. Benkrid, "Design and implementation of a high performance financial Monte-Carlo simulation engine on an FPGA supercomputer," in ICECE Technology, 2008. FPT 2008. International Conference on, 2008, pp. 81-88. 272

[36] N. A. Woods and T. VanCourt, "FPGA acceleration of quasi-Monte Carlo in finance," in Field Programmable Logic and Applications, 2008. FPL 2008. International Conference on, 2008, pp. 335-340. 272

[37] D. A. Hauck Scott, Reconfigurable computing. The theory and practice of FPGA BASED computing. ELSEVIER--Morgan Kaufmann, 2008. 273

[38] H. Fu, W. Osborne, R. G. Clapp, O. Mencer, and W. Luk, "Accelerating seismic computations using customized number representations on FPGAs," EURASIP J. Embedded Syst., vol. 2009, pp. 1-13, 2009. [Online]. Available: http://dx.doi.org/10.1155/2009/382983 273

[39] A. J. Virginia, Y. D. Yankova, and K. L. M. Bertels, "An empirical comparison of ANSI-C to VHDL compilers : Spark, Roccc and DWARV," in Anual Workshop on Circuits, Systems and Signal Processing (ProRISC),, Veldhoven, Netherlands, 2007, pp. 388-394. 274

[40] Altera Corporation, "Implementing FPGA Design with the OpenCL Standard," p. 9, 2012. [Online]. Available: http://www.altera.com/literature/wp/wp-01173-opencl.pdf 274

[41] N. Dave, "A Unified Model for Hardware/Software Codesign," Ph.D. dissertation, Massachusetts Institute Of Technology, 2011. 274

[42] R. Sanchez Fernandez, "Compilacion C a VHDL de codigos de bucles con reuso de datos," Tesis, Universidad Politecnica de Cataluna, 2010. 274

[43] Y. Yankova, K. Bertels, S. Vassiliadis, R. Meeuws, and A. Virginia, "Automated HDL Generation: Comparative Evaluation," 2007 IEEE International Symposium on Circuits and Systems, pp. 2750-2753, May 2007. 274

[44] P. I. Necsulescu, "Automatic Generation of Hardware for Custom Instructions," Ph.D. dissertation, Ottawa, Canada, 2011. 274

[45] P. I. Necsulescu and V. Groza, "Automatic Generation of VHDL Hardware Code from Data Flow Graphs," 6th IEEE International Symposium on Applied Computational Intelligence and Informatics, pp. 523-528, 2011. 274

[46] J. Bier and J. Eyre, "BDTI Study Certifies High-Level Synthesis Flows for DSPCentric FPGA Designs," Xcell Journal Second, no. 71, pp. 12-17, 2010. 274

[47] NVIDIA Tesla, "GPU Computing revolutionizing High Performance Computing," 2010. [Online]. Available: http://www.nvidia.com/docs/IO/100133/tesla-brochure-12-lr.pdf 275,276

[48] A. Brodtkorb, C. Dyken, T. R. Hagen, and J. M. Hjelmervik, "State-of-the-art in heterogeneous computing," Scientific Programming, vol. 18, pp. 1-33, 2010. 275

[49] J. D. Owens, D. Luebke, N. Govindaraju, M. Harris, J. Kruger, A. E. Lefohn, and T. J. Purcell, "A Survey of General-Purpose Computation on Graphics Hardware," Computer Graphics Forum, vol. 26, no. 1, pp. 80-113, 2007. 275,276

[50] F. Warg, J. Nilsson, M. Ekman, and At An In-depth Look, "An In-Depth Look at Computer Performance Growth," SIGARCH Comput. Archit. News, vol. 33, pp. 144-147, 2005. 276

[51] W. Lei, Z. Yunquan, Z. Xianyi, and L. Fangfang, "Accelerating Linpack Performance with Mixed Precision Algorithm on CPU+GPGPU Heterogeneous Cluster," in Proceedings of the 2010 10th IEEE International Conference on Computer and Information Technology, ser. CIT '10. Washington, DC, USA: IEEE Computer Society, 2010, pp. 1169-1174. [Online]. Available: http://dx.doi.org/10.1109/CIT.2010.212 276

[52] S. Romero, M. A. Trenas, E. Gutierrez, and E. L. Zapata, "Locality-improved FFT implementation on a graphics processor," in Proceedings of the 7th WSEAS International Conference on Signal Processing, Computational Geometry & Artificial Vision, ser. ISCGAV'07. Stevens Point, Wisconsin, USA: World Scientific and Engineering Academy and Society (WSEAS), 2007, pp. 58-63. [Online]. Available: http://dl.acm.org/citation.cfm?id=1364592.1364602 276

[53] Y. Su and Z. Xu, "Parallel implementation of wavelet-based image denoising on programmable PC-grade graphics hardware," Signal Process., vol. 90, no. 8, pp. 2396-2411, 2010. [Online]. Available: http://dx.doi.org/10.1016/j.sigpro.2009.06.019 276

[54] J. Lobeiras, M. Amor, and R. Doallo, "FFT Implementation on a Streaming Architecture," in Proceedings of the 2011 19th International Euromicro Conference on Parallel, Distributed and Network-Based Processing, ser. PDP '11. Washington, DC, USA: IEEE Computer Society, 2011, pp. 119-126. [Online]. Available: http://dx.doi.org/10.1109/PDP.2011.31 276

[55] P. Micikevicius, "3D Finite Difference Computation on GPUs using CUDA 2701 San Tomas Expressway," Cell, pp. 0-5, 2009. 277

[56] L. Jacquin, V. Roca, J.-L. Roch, and M. Al Ali, "Parallel arithmetic encryption for high-bandwidth communications on multicore/GPGPU platforms," in Proceedings of the 4th International Workshop on Parallel and Symbolic Computation, ser. PASCO '10. New York, NY, USA: ACM, 2010, pp. 73-79. [Online]. Available: http://doi.acm.org/10.1145/1837210.1837223 277

[57] S. Hudli, S. Hudli, R. Hudli, Y. Subramanian, and T. S. Mohan, "GPGPU based parallel computation: application to molecular dynamics problems," in Proceedings of the Fourth Annual ACM Bangalore Conference, ser. COMPUTE '11. New York, NY, USA: ACM, 2011, pp. 10:1-10:8. [Online]. Available: http://doi.acm.org/10.1145/1980422.1980432 277

[58] NVIDIA, "DirectCompute para NVIDIA." [Online]. Available: http://developer.nvidia.com/directcompute 277

[59] R. Andraka, "A survey of CORDIC algorithms for FPGA based computers," in Proceedings of the 1998 ACM/SIGDA sixth international symposium on Field programmable gate arrays, ser. FPGA 98. New York, NY, USA: ACM, 1998, pp. 191-200. [Online]. Available: http://doi.acm.org/10.1145/275107.275139 278

[60] C. He, W. Zhao, and M. Lu, "Time Domain Numerical Simulation for Transient Waves on Reconfigurable Coprocessor Platform," in Proceedings of the 13th Annual IEEE Symposium on Field-Programmable Custom Computing Machines. IEEE Computer Society, 2005, pp. 127-136. 279

[61] O. Pell and R. G. Clapp, "Accelerating subsurface offset gathers for 3D seismic applications using FPGAs," SEG Technical Program Expanded Abstracts, vol. 26, no. 1, pp. 2383-2387, 2007. 280, 281

[62] Maxeler Technologies, "Maxeler: Complete Acceleration Solutions." [Online]. Available: http://www.maxeler.com/content/solutions/ 280

[63] H. Fu, W. Osborne, R. G. Clapp, and O. Pell, "Accelerating Seismic Computations on FPGAs From the Perspective of Number Representations," 70th EA GE Conference & Exhibition, no. June 2008, pp. 9-12, 2008. 280

[64] D.-U. Lee, A. Abdul Gaffar, O. Mencer, and W. Luk, "Optimizing Hardware Function Evaluation," IEEE Trans. Comput., vol. 54, no. 12, pp. 1520-1531, 2005. [Online]. Available: http://dl.acm.org/citation.cfm?id=1098521.1098595 281

[65] D. Haugen, "Seismic Data Compression and GPU Memory Latency," Master Thesis, Norwegian University of Science and Technology, 2009. 282

[66] T. R0 sten, T. A. Ramstad, and L. Amundsen, "Optimization of sub-band coding method for seismic data compression," Geophysical Prospecting, vol. 52, no. 5, pp. 359-378, 2004. [Online]. Available: http://dx.doi.org/10.1111/j.1365-2478.2004.00422.x 282

Carlos Fajardo (1), Javier Castillo Villar (2) y Cesar Pedraza (3)

(1) Ph.D.(c) cafajar@uis.edu.co, Universidad Industrial de Santander, Bucaramanga, Colombia.

(2) Doctor en Ingenieria Informatica, javier.castillo@urjc.es, Universidad Rey Juan Carlos, Madrid, Espana.

(3) Doctor en Ingenieria Informatica, cesarpedraza@usantotomas.edu.co, Universidad Santo Tomas, Bogota, Colombia.

Recepcion: 02-02-2013, Aceptacion: 01-02-2013 Disponible en linea: 22-03-2013

MSC:68M20 / PACS:93.85.Rt
Tabla 1: Tabla de Resultados

Ano    Aplicacion               Dispositivo

2004   Migracion de Kirchhoff   Virtex 2 Pro
       Pre-apilada en Tiempo

2005   Diferencias finitas en   Xilinx ML401
       el dominio del tiempo

2007   Downward continued       MAX1 (Virtex-4)
       migration

2008   Downward continued       MAX1 (Virtex-4)
       migration

2009   Algoritmo de             GPGPUs
       compresion Rosten

2011   Migracion Reversa en     Virtex 6 (Cuatro)
       el Tiempo

2011   Migracion Reversa en     GPU y FPGAs
       el Tiempo

Ano    Aportes                            Resultados

2004   Uso del Modulo CORDIC para         15,6ie vs 2.4GHz Pentium 4
       implementar la raiz cuadrada

2005   Reescribir la ecuacion de onda     8,26x vs Intel P4 3.0 GHz
       usando ecuaciones de segundo
       orden. Interfaz de FIFOs
       implementados en la memoria
       on-chip con el fin de disminuir
       las veces que se tiene que leer
       la memoria

2007   Uso de punto fijo                  42x vs 2.8GHz AMD[R] Opteron

2008   Uso de punto fijo.                 13,7x vs Intel Xeon 1.86GHz
       Aproximaciones LEE. Herramienta
       para calcular el numero de
       menor de bits en la parte
       decimal cuando se usa punto fijo

2009   Compresion de datos sismicos       Negativos

2011   Herramientas CAD de Maxeler.       70x vs Intel Nehalem 2.9GHz
       Puerto MaxRing para la
       comunicacion entre FPGAs

2011   Compresion de datos y uso de       10x vs Xeon E5460 2.5 GHz
       Punto fijo.
COPYRIGHT 2013 Universidad EAFIT
No portion of this article can be reproduced without the express written permission from the copyright holder.
Copyright 2013 Gale, Cengage Learning. All rights reserved.

 
Article Details
Printer friendly Cite/link Email Feedback
Author:Fajardo, Carlos; Castillo Villar, Javier; Pedraza, Cesar
Publication:Ingenieria y Ciencia
Date:Jan 1, 2013
Words:9829
Previous Article:Evaluacion de la corrosion del acero embebido en concreto AAS, expuesto a carbonatacion mediante un experimento factorial con medidas repetidas.
Next Article:Influencia de los parametros de procesado en micro-perforado con pulsos ultracortos.
Topics:

Terms of use | Privacy policy | Copyright © 2018 Farlex, Inc. | Feedback | For webmasters