2011-06-16 17 views
6

¿Es posible usar la biblioteca OpenMP con Android NDK?¿Es posible usar la biblioteca OpenMP con Android NDK?

¿Alguna vez alguien ya intentó compilarlas y puede dar algunas pistas?

Con la apariencia de las tabletas/teléfonos inteligentes de doble núcleo, creo que sería realmente bueno utilizar las capacidades de OpenMP en el desarrollo de aplicaciones.

Gracias de antemano.

+1

No sé nada de Android, pero mirando la documentación, el NDK dice que la biblioteca pthread es compatible. Dado que la implementación de gcc de OpenMP se basa en pthreads, parece posible siempre que el compilador utilizado sea compatible con OpenMP. En este momento, el NDK no parece apoyarlo y, hasta que lo haga, lo más probable es que sea mejor quedarse con los subprocesos. – ejd

+0

Sin embargo, podemos hacer algo muy similar a OpenMP, directamente en Java + JNI, por ejemplo: [Parallel.java] (http://code.google.com/p/javacv/source/browse/trunk/javacv/src/com /googlecode/javacv/Parallel.java). No he probado el rendimiento en Android, pero para mis aplicaciones, las clases de concurrencia de Java de las funciones JNI nativas de OpenJDK + en realidad son más rápidas que las de OpenMP de GCC. –

Respuesta

10

Para las personas que se hacen cargo de esta pregunta ahora: OpenMP es compatible con NDK con GCC a partir de octubre de 2013 (versión 9b de NDK). Ver: https://developer.android.com/ndk/downloads/revision_history.html

donde explican a añadir:

LOCAL_CFLAGS += -fopenmp 
LOCAL_LDFLAGS += -fopenmp 

a su Android.mk con el fin de habilitar el soporte de OpenMP.

2

Según lo discutido here, OpenMP aún no es compatible.

Un parche de la comunidad para esto es completamente posible, y como se menciona en la discusión, principalmente requiere modificaciones a gcc/libgomp.

+0

Ver mi respuesta; esto ya no es preciso ya que se agregó el soporte OpenMP. – wxs

Cuestiones relacionadas