2010-09-04 16 views
7

Estoy buscando en una biblioteca de código abierto (DDS, un solucionador de puente doble ficticio) que en su última versión (2.1.1) agrega algunas funcionalidades multitarea muy útiles que requieren un sistema Windows o OpenMP (de hecho, esa última versión ni siquiera se compilará en un sistema que no sea de Windows sin soporte total de OpenMP! -). Ubuntu 10.4 tiene un paquete disponible para una versión anterior (1.1.9), que incluye la interfaz de Python para la biblioteca (pydds). Contribuí al upstream hace mucho tiempo, pero me gustaría usar (y contribuir con una interfaz de Python para ;-) la nueva funcionalidad ... pero, para eso, necesito un compilador de C y bibliotecas de apoyo que me den la funcionalidad OpenMP ...!¿Cuál es la mejor manera de utilizar OpenMP en Mac OS X 10.5 y Ubuntu 10.4?

Plus, que los necesitan en ambos Ubuntu 10.4 y mis buenos viejos Macs Intel que todavía ejecutar Mac OS X 10.5 (para evitar perder la compatibilidad con mis buenos viejos PowerPC Macs - pero no estoy sosteniendo para una forma de obtener compatibilidad con OpenMP en esos PowerPC Macs también, aunque, por supuesto, me encantaría ... ¡los basados ​​en Intel serían suficientes! -).

Tengo la intención de hackear tanto como sea necesario (y contribuir con parches en el curso una vez que los tengo trabajando, como hace mucho tiempo con todos los códigos fuente abiertos que he pirateado, incluido DDS en el pasado; -) en DDS, pydds y cualquier funcionalidad auxiliar para ellos, pero ... exactamente por eso, me encantaría evitar tener que hacer mucho más pirateo "preliminar" para obtener soporte OpenMP (para C) en primer lugar en las plataformas lo necesito encendido! -).

Así que, ¿existe (idealmente) algo que podría simplemente apt-get install para Ubuntu 10.4, y una imagen de disco o Darwinport o lo que sea para Mac OS X 10.5 al menos en procesadores Intel, que podría utilizar para comenzar ... .? Estoy, por supuesto, listo para construir desde fuentes, fuentes de parches, etc., según sea necesario, pero prefiero no tener, si puedo evitarlo ... ;-).

+2

¿qué pasa con 'sudo apt-get install gcc libgomp1'? – Anycorn

+0

@aaa, tengo 'gcc' instalado (el 4.4.3 que viene con ubuntu): ¿la biblioteca podría hacer que sea mágicamente compatible con el '# pragma' específico de OMP que actualmente advierte e ignora ...? –

+0

sí, y use 'gcc -fopenmp' – Anycorn

Respuesta

5

En Mac OSX 10.5, parece que -fopenmp no es una opción válida (gcc versión 4.0.1).

$ gcc -fopenmp foo.c 
cc1plus: error: unrecognized command line option "-fopenmp" 

Sin embargo, pude compilar y ejecutar en 10.6 (gcc versión 4.2.1). Por lo tanto, parece que sus únicas opciones son 1) actualizar a 10.6 o 2) compilar una versión personalizada de gcc.

(Nota al pie: La página del manual de gcc en 10.5 no menciona -fopenmp, donde el 10,6 lo hace.)

+2

OpenMp solo se admite en gcc 4.2 y versiones posteriores. – db42

3

Según lo sugerido por Garrett Hyde, la versión de gcc que se incluye con Mac OS 10.5 es demasiado viejo para tener soporte OpenMP. Pero no hay problema.

Instalar MacPorts (http://trac.macports.org/wiki/InstallingMacPorts) - necesitará tener instalado Xcode, y luego X11, que aún podrá obtener del sitio apple si usted todavía no tiene su medio de instalación. Luego, una vez que se establece macports, "sudo port install gcc45" (o al menos 44) y espere bastante tiempo para que compile gcc y todas sus dependencias. Cualquier cosa gcc 4.4.x o posterior tendrá soporte bastante sólido de OpenMP 3.0. Y entonces deberías estar listo para ir.

Como se ha señalado en los comentarios, el stock gcc que viene con Ubuntu 10.4 también funcionará de la caja.

Cuestiones relacionadas