ESTRATEGIA DE PARALELIZACIÓN BASADA EN REDUCIONES PARALELAS PARA RENDERSCRIPT

CI2T*2015. Congreso Internacional de Investigación Tijuana. ESTRATEGIA DE PARALELIZACIÓN BASADA EN REDUCIONES PARALELAS PARA RENDERSCRIPT Jesús Alva

3 downloads 43 Views 139KB Size

Recommend Stories


DIRECCIÓN GENERAL DE BACHILLERATO SECUENCIA DIDÁCTICA COMO ESTRATEGIA INSTITUCIONAL PARA LA FORMACIÓN BASADA EN COMPETENCIAS
DIRECCIÓN GENERAL DE BACHILLERATO SECUENCIA DIDÁCTICA COMO ESTRATEGIA INSTITUCIONAL PARA LA FORMACIÓN BASADA EN COMPETENCIAS NOMBRE DEL PLANTEL AGUSTÍ

BASADA EN EL MINDFULNESS PARA LA DEPRESIÓN
Cuaderno de trabajo de LA TERAPIA COGNITIVA BASADA EN EL MINDFULNESS PARA LA DEPRESIÓN de Zindel V. Segal, J. Mark G. Williams y John D. Teasdale Ed

Seguridad Basada en Comportamiento
Seguridad Basada en Comportamiento Prof. Antonio Attias Rodis Ingeniero - Magister Scientiarium – Master of Engineering [email protected] LOS ESP

Física basada en Álgebra
Slide 1 / 83 Slide 2 / 83 Física basada en Álgebra Física Nuclear 2015-12-01 www.njctl.org Tabla de Contenidos Click sobre el tópico para ir a la s

Story Transcript

CI2T*2015.

Congreso Internacional de Investigación Tijuana.

ESTRATEGIA DE PARALELIZACIÓN BASADA EN REDUCIONES PARALELAS PARA RENDERSCRIPT Jesús Alvarez-Cedillo1, Juan. Herrera-Lozada1, Jacobo Sandoval-Gutierrez1 Teodoro Alvarez- Sanchez2 1 Instituto Politécnico Nacional CIDETEC, UP Adolfo López Mateos Edif. CIDETEC, México D.F., México. 2 Instituto Politécnico Nacional, CITEDI, Av. del Parque No. 131O, Mesa de Otay, Tijuana, Baja California, México. E-mails: [email protected], [email protected], [email protected], [email protected] RESUMEN: • V→V (operación vectorial unitaria) • V×V→V(operación vectorial binaria) • V→K(reducción unitaria) • V×V→K(reducción binaria) • K×V→V (operación de escalado) Donde K= valor escalar y V= operación vectorial.

RenderScript es un conjunto de herramientas diseñadas por Google para soportar el procesamiento paralelo en los dispositivos móviles con Android. Esta herramienta fue diseñada principalmente para su ejecución en diversos componentes de procesamiento como: Unidades Centrales de Procesamiento (CPU´s por sus siglas en inglés), Procesadores Digitales de Señales (DSP´s por sus siglas en inglés) y Unidades Gráficas de Procesamiento (GPU´s por sus siglas en inglés)para lograr la portabilidad entre distintos dispositivos móviles.Se diseñó con un motor de ejecución o runtime que decide dónde y cómo ejecutar el código en paralelo; también se le puede indicar que ejecute el código en una GPU o DSP disponible utilizando FilterScript que una herramienta de RenderScript que garantiza la compatibilidad con GPU´s y DSP´s. RenderScript es una plataforma de cómputo heterogéneo que difiere tanto en la codificación como en la abstracción del problema a otras plataformas actualmente usadas como OpenCL y CUDA. Sin embargo, este nuevo paradigma de paralelización no cuenta con estrategias claras para la implementación de algoritmos, por lo que en este trabajo se proponen distintas estrategias para la implementación de algoritmos como por ejemplo reducciones en vectores entre otros.

Una instrucción vectorial equivale generalmente a la ejecución de un bucle completo de instrucciones donde cada iteración trabaja sobre cada componente individual del vector. Las operaciones vectoriales en memoria son mejores que las escalares por: 1. 2. 3. 4. 5.

En este articulo se elaborón dos estrategias para realizar operaciones vectorial binarias V×V sobre dispositivos mobiles (Smarthphones y Tablets) utilizando RenderScript.

PALABRAS CLAVE: Procesamiento paralelo, RenderScript, unidades de procesamiento gráfico, GPU, Reducción.

1 INTRODUCCIÓN

1.1 ¿Que es RenderScript?

Un procesador vectorial es un procesador que puede calcular un valor entero en una instrucción.

RenderScript es un Framework para realizar cómputo del alto rendimiento orientado al procesamiento paralelo sobre dispositivos móviles con sistema operativo Android. RenderScript está diseñado para ejecutar los algoritmos en paralelo en todos los procesadores disponibles como: los CPU’s multinúcleo, GPU’so DSP’s.

Un operando vectorial de operación exclusiva de memoria contiene una secuencia de n elementos, llamados componentes, donde n es la longitud del vector. Cada componente del vector es un escalar de cualquier tipo (entero, punto flotante, etc.). Los operadores vectoriales clasificados en los siguientes:

Cada resultado es independiente Una simple instrucción vectorial sustituye a muchas escalares Precisan acceso a la memoria con un patrón de acceso fijo (adyacentes). Se evita un problema en control del salto del bucle. Son operaciones más rápidas.

generalmente

Algunas aplicaciones pueden desarrollarse utilizando el procesamiento de propósito personal, como la visión computacional o procesamiento de imágenes.

están

1

CI2T*2015.

Congreso Internacional de Investigación Tijuana.

1.

Las aplicaciones que utilizan RenderScript se ejecutan dentro de la máquina virtual de Android, por lo cual se utiliza la Interfaz de programación de aplicaciones (API) de Java para manejar la vida de los recursos de RenderScript y controlar la ejecución del kernel [3]. RenderScript representa un conjunto de herramientas y un lenguaje de alto nivel para realizar cómputo intensivo de procesamiento paralelo sobre dispositivos con Android, en combinación con la programación secuencial genera beneficios y optimizar los procesos que se ejecutan en su modelo de ejecución.

El código de ejecución se programa en lenguaje basado en c99 y es compilado con formato intermedio. a. El código encapsulado o KERNEL procesado y crea un código binario dependiente de la arquitectura. b. c.

RenderScript realiza la distribución de los trabajos a través de diferentes hilos y optimiza el uso de todos los procesadores disponibles sobre dispositivo, las unidades de procesamiento gráfico (GPU), DSPS y las unidades de procesamiento centra (CPU) y soporta múltiples CORES. RenderScript crea algoritmos perfectamente balanceados en su carga, de esta manera cualquier aplicación de propósito general podrá realizarse y ejecutarse utilizando ampliamente los recursos del dispositivo móvil.

es no

Una rutina compila el código binario anterior para uno o más procesadores. Los encapsulados especiales, son integrados de acuerdo a las necesidades de programador para algunas operaciones comunes.

2.

Las clases de JAVA son creadas automáticamente por el Kit de desarrollo.

3.

La administración de los recursos y la ejecución son controlados por las interfaces de aplicación de Java. Se realiza la integración con la máquina virtual, se integra en un archivo ejecutable el binario del encapsulado y el código de control en Java como aplicación.

4.

La programación de RenderScript está basada en los partes básicas: 1. Uso de de núcleos de cómputo de alto desempeño, estos se escriben sobre un lenguaje derivado de C99. 2. una interfaz de aplicación desarrollada en el lenguaje de programación Java

un un

1.2 FilterScript FilterScript es un subconjunto de RenderScript el cual contiene restricciones para poder funcionar en una gran variedad de procesadores (CPU’s, GPU’s, DSP’s). En FilterScript los punteros no están permitidos, por lo cual no se puede leer la memoria directamente y se tienen que usar funciones de acceso de la API de RenderScript [1].

Figura 1. Arquitectura de un dispositivo móvil.

2. TRABAJO REALACIONADO Actualmente existen algunas propuestas de cómo codificar en RenderScript a partir de otras plataformas de cómputo heterogéneo, sin embargo no plantean directamente una estrategia de programación que aproveche todas las herramientas de RenderScript.

1.3 2.1 Modelo de ejecución La arquitectura de un dispositivo móvil tiene grandes diferencias a otros sistemas paralelos grandes tales como un sistema de escritorio o un sistema de alta disponibilidad.

Dentro de las propuestas existentes para la codificación en RenderScript se encuentra “Code generation for emebedded heterogéneous architectures on android” [1],en donde los autores proponen utilizar el Framework HeterogeneousImageProcessingAcceleration(HIPA) para generar kenerl´s para el procesamiento de imágenes y adaptarlos a la estructura de RenderScript. La segunda propuesta de codificación“O2render: An OpenCL-toRenderscripttranslatorforportingacrossvariousGPUsorCP Us”[2] es sobre la implementación de un traductor de código OpenCL a RenderScript. Al analizar los trabajos

La comunicación entre el CPU y el CPU a través de la memoria Mobile DDR, mDDR o LPDDR, (es un tipo de DRAM síncrona de doble precisión especial para dispositivos móviles), se realiza a 12Gb/s y el conjunto de instrucciones soporta hasta 70 GFLOPS en el GPU y hasta 20 GFLOPS en el CPU. Observe la figura 1. Su funcionamiento es el siguiente:

2

CI2T*2015.

Congreso Internacional de Investigación Tijuana.

previos sobre la codificación en RenderScript queda claro que no se pueden exportar automáticamente todas las características de las plataformas de cómputo heterogéneo a RenderScript y que no se aprovechan óptimamente los recursos..

Ventajas:

3.METODOLOGIA

Desventajas:

1. 2. 3.

Algunos algoritmos requieren que a partir de un conjunto de datos entrada se reduzca el número de elementos del conjunto de salida; algunos ejemplos de estas operaciones son: el promedio, la suma acumulativa, el máximo, entre otros.A este tipo de operaciones dentro del procesamiento paralelo se les conoce como operaciones de reducción.

1.

Se realiza sobre las mismas localidades de memoria. Facilidad de abstracción. El Kernel en RenderScript se puede llamar recursivamente hasta la condición de paro.

Se desperdician hilos de ejecución.

El Kernel en RenderScriptse escribiría como lo muestra el siguiente código(figura 1): 1. intsize; 2. 3. void root(int32_t *v_out, uint32_t x,uint32_t y) { 4. 5. if (x < divisor) v_out[y] += v_out[size-y]; 6. 7. } Figura 1. Kernel en RenderScript con estrategia 1.

Al realizar este tipo de operaciones en arquitecturas paralelas se tiene el problema de que los hilos de ejecución en paralelo no se pueden escribir en una localidad de memoria al mismo tiempo. La dificultad intrínseca de este tipo de operaciones en paralelo se mezcla con las limitaciones de la plataforma paralela. En RenderScript y en FilterScript se complican las operaciones de reducción ya que un kernel de ejecución requiere que la longitud de los datos de entrada debe ser igual a la de los datos de salida. Otra limitación importante es que no se tiene control sobre cuantos hilos de ejecución se invocan y solo se puede modificar esta característica variando la longitud de los datos de entrada y salida.

El Kernel en FilterScriptse escribiría como lo muestra el siguiente código (figura 2):

Al analizar los trabajos existentes se evidencia la necesidad de generar nuevas estrategias de programación para la plataforma de cómputo paralelo móvilde RenderScript y FilterScript siendo las operaciones de reducción una de las más complicadas de implementar, por lo que en este trabajo se plantean algunasestrategias para la implementación de operaciones de reducción.

if(x < size) return rsGetElementAt_float(input,x)+rsGetElementAt_ float(input,size-x) ;

1. 2. 3. 4. 5. 6. 7.

int size; rs_allocation input; float __attribute__((kernel)) root(uint32_t x) {

8. 9. return 0; 10. 11. } Figura 2. Kernel en FilterScript con estrategia 1.

2. Solución propuesta Los códigos en RenderScript que ejemplifican las estrategias programación están diseñadas para la API de Android 4.1 en adelante.

2.3 ESTRATEGIA 2 La segunda estrategia consiste en aprovechar las estructuras de datos proporcionadas por FilterScript y RenderScript.Aunque las estructuras de entrada y salida tienen que ser del mismo tamaño no necesariamente deben ser del mismo tipo de dato.

Para dar solución a las operaciones de reducción en RenderScript se plantean tres estrategias posibles, estas son ejemplificadas con la suma acumulativa de un vector de flotantes en RenderScript y FilterScript.

2.2 ESTRATEGIA 1

Ventajas: Se aprovechan todos los hilos invocados. Se aprovecha toda la memoria reservada. Desventajas: 1. Hay que cambiar el tamaño de memoria para cada reducción.

La primera estrategia, consiste en limitar las localidades de memoria sobre las que se ejecutan los hilos por medio de su ID de hilo.

3

CI2T*2015.

2.

Congreso Internacional de Investigación Tijuana.

Hay que adaptar el algoritmo a las estructuras de datos.

Figura 3. Comparativo de los resultados Obtenidos

En este caso el Kernel en RenderScript y FilterScript el código sería el siguiente (figura 3): 1.

float __attribute__((kernel)) v_in,uint32_t x) {

root(const float2

2. 3. return v_in[0]+v_in[1]; 4. 5. } Figura 2. Kernel en RenderScript y FilterScript con estrategia 2.

3. Resultados y discusiones Con las estrategias propuestas en la sección anterior se implementó la Serie de Mercator (ecuación 1) para el cálculo del logaritmo natural. Se eligió este ejemplo porque el cálculo de las potencias en la GPU es altamente costoso.

4. Conclusiones La plataforma de cómputo paralelo RenderScript de Google es relativamente nueva a comparación de las otras plataformas y sigue con constantes cambios, lo que ha generado que su documentación no esté del todo completa. Otro de los inconvenientes que presenta es que se necesitan nuevas estrategias para la implementación, ya que no se tiene control sobre el número de hilos a ejecutar y otras herramientas que presentan las otras plataformas de cómputo paralelo; respecto a su desempeño, como mencionan en [4]donde dicen que OpenCL tiene un performance 88% mejor que su propuesta Android-Aparapi.

En el siguiente código (figura 3) se muestra el Kernel para el cálculo de los valores de la sumatoria: 1. float2 __attribute__((kernel)) root(uint32_t x) { 2. 3. float2 resultado; 4. int id = x+1; 5. resultado[0] = alter(id)*(pown(n,id)/id); 6. id = total-x; 7. resultado[1] = alter(id)*(pown(n,id)/id); 8. returnresultado; 9. 10. } Figura 3. Kernel para el cálculo de los valores.

Sin embargo,la plataforma de Google tiene la premisa de ser compatible con sin número de dispositivos y ejecutar el código de la manera más óptima en el hardware disponible en el teléfono, también rescatando una reducción en el consumo energético. Con las correctas estrategias de programación se puede obtener un excelente rendimiento comparable a las otras plataformas y tiene la ventaja de la portabilidad entre dispositivos móviles. Como se revisó en este trabajo al utilizar RenderScript se pueden realizar gran cantidad de cálculos en poco tiempo en los dispositivos móviles;esto abre la puerta para la implementación de algoritmos que antes era inaccesible para estos dispositivos, así el cómputo científico cuenta con una herramienta que puede ser de vital importancia para la validación de algoritmos.

Para el diseño de este Kernel se basó en la segunda estrategia propuesta para la implementación. La tabla 1 muestra los resultados promedios en ejecución Tabla 1. Resultados obtenidos con ambas estrategias DATOS Dalvik E1 E2 10 7.106161038 9 8 100 50.49752469 45 30 1000 2550 200 307 100000 6502500 20000 10000 1000000 4.22825E+13 15000 8000 1000000 1.78781E+27 12000 11000

Referencias [1] Membarth, R.; Reiche, O.; Hannig, F.; Teich, J., "Code generation for embedded heterogeneous architectures on android," Design, Automation and Test in Europe Conference and Exhibition (DATE), 2014, vol., no., pp.1, 6, 24-28 March 2014.

La grafica 3 muestra el resultado en tiempos, la grafica 4 muestra los valores obtenidos en la aproximación obtenida al resolver la serie de Mercator.

[2]Cheng-Yan Yang; Yi-jui Wu; Liao, S., "O2render: An OpenCL-to-RenderScript translator for porting across various GPUs or CPUs," Embedded Systems for Realtime Multimedia (ESTIMedia), 2012 IEEE 10th Symposium on, vol., no., pp.67, 74, 11-12 Oct. 2012

4

CI2T*2015.

Congreso Internacional de Investigación Tijuana.

[3] Google Inc. RenderScript [Online].Available: http://developer.android.com/guide/topics/renderscript/co mpute.html [4] Hung-Shuen Chen; Jr-Yuan Chiou; Cheng-Yan Yang; Yi-jui Wu; Wei-chung Hwang; Hao-Chien Hung; ShihWei Liao, "Design and implementation of high-level compute on Android systems," Embedded Systems for Real-time Multimedia (ESTIMedia), 2013 IEEE 11th Symposium on , vol., no., pp.96,104, 3-4 Oct. 2013

Jesús Antonio Álvarez Cedillo: Graduado por la Escuela Superior de Ingeniería Mecánica y Eléctrica (ESIME) del Instituto Politécnico Nacional, en la Ciudad de México, como ingeniero en comunicaciones y electrónica en 1997 y posteriormente como Maestro en Ciencias de la Informática por la Unidad Profesional Interdisciplinaria de Ingeniería y Ciencias Sociales y Administrativas (UPIICSA) del Instituto Politécnico Nacional en el año 2002. Desde 2007 es candidato a Doctor en Tecnologías Avanzadas en el Centro de Investigación e Innovación Tecnológica (CIITEC) del Instituto Politécnico Nacional. Ha ejercido como profesor e investigador de tiempo completo del Centro de Innovación y Desarrollo Tecnológico en Cómputo (CIDETEC) desde 2000. Ha publicado diversos artículos relacionados con arquitectura de computadoras, procesamiento paralelo y algoritmos de alto desempeño. Juan Carlos Herrera Lozada : Ingeniero en Comunicaciones y Electrónica, egresado de la Escuela Superior de Ingeniería Mecánica y Eléctrica del Instituto Politécnico Nacional, en la Ciudad de México, en el año de 1996. En 2002 obtuvo el grado de Maestro en Ingeniería de Cómputo con especialidad en Sistemas Digitales y en 2011 obtuvo el grado de Doctor en Ciencias de la Computación, ambos en el Centro de Investigación en Computación del Instituto Politécnico Nacional, también en la Ciudad de México. Actualmente está adscrito al Centro de Innovación y Desarrollo Tecnológico en Cómputo del Instituto Politécnico Nacional, en donde ingresó desde 1998. Ha sido autor de diversos artículos y ponente en congresos nacionales e internacionales. Jacobo Sandoval : Actualmente es Profesor Visitante en el proyecto de Arquitecturas de Sistemas Embebidos para la Investigación Científica y la Integración de Tecnologías para el Centro de Innovación y Desarrollo Tecnológico en Cómputo del Instituto Politécnico Nacional, CIDETEC, tiene Doctorado y Maestría en Tecnología Avanzada por el IPN. Teodoro Álvarez Sánchez: Maestría en sistemas digitales por Instituto Politécnico Nacional CINTEC. Estudiante de Doctorado en Ciencias del IPN-CIC(Cómputo Paralelo).

5

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.