2010-07-09 24 views
14

¿Es posible usar pragmas de openMP en los archivos CUDA (no en el código del kernel)?Usando openMP en el código de host de cuda?

Combinaré los cálculos de gpu y cpu. Pero el compilador nvvc falla con "no se puede encontrar la opción Desconocida 'openmp'", si estoy enlazando el porgrama con una opción openmp (en Linux)

Una forma alternativa es usar declaraciones abiertas deMP en archivos c/C++.

Respuesta

14

me acaba de encontrar esta

http://www.cse.buffalo.edu/faculty/miller/Courses/CSE710/heavner.pdf

página 25 dice:

con gcc: - # include omp.h

Añadir la bandera

-fopenmp Con nvcc, esto debería ser -Xcompiler -fopenmp ya que esto debe pasarse directamente a gcc -Xcompiler pasa banderas directamente al compilador de host

Agregue -lgomp indicador durante la etapa de vinculación.

no he probado todavía ...

+0

Sea cuidadoso y pegue los argumentos. Si observa detenidamente los guiones en -Xcompiler -fopenmp son diferentes de los guiones de línea de comando. – Tristan

+0

Los guiones están corregidos ahora. –

0

La solución para el Visual Studio encontrado desde el nvidia-foro:

añadir el '/ openmp'-bandera para las opciones adicionales de C++ en CUDA construir reglas Voy a probar la solución de Linux más tarde.

2

Intenté escribir el parámetro en "Opciones adicionales del compilador" pero no funcionó.

Lo que hice para Visual Studio 2010 y CUDA 4.2:

En Propiedades del proyecto -> Propiedades de Configuración -> CUDA C/C++ -> Command Line -> Opciones adicionales: -Xcompiler "/ OpenMP"

Esto dio como resultado dos parámetros de Xcompiler en el comando de compilación resultante pero no causó ningún problema y funcionó correctamente.

Cuestiones relacionadas