Pregunta

Estoy intentando probar algunas funciones típicas cuda durante el proceso de configuración. ¿Cómo puedo escribir en mi configure.ac? Algo así como:

AC_TRY_COMPILE([],
[
__global__ static void test_cuda() {
    const int tid = threadIdx.x;
    const int bid = blockIdx.x;
    __syncthreads();
}
],
[cuda_comp=ok],[cuda_comp=no])

Pero NVCC no está definido en AC_LANG. ¿Debo crear mis propias macros m4?

¿Fue útil?

Solución

Estoy muy dudoso si es posible conectar limpiamente en la AC_LANG, etc. AC_TRY_COMPILE serie de macros sin tener que volver a escribir partes de autoconf.

La apuesta segura para usted es simplemente escribir una prueba. A menos que necesite esa prueba en varios proyectos, que ni siquiera es necesario para envolver la prueba en m4 macros.

La prueba primero sería comprobar si hay nvcc, a continuación, crear algún archivo fuente de prueba y, finalmente, tratar de compilar que el uso de $NVCC. Entonces tiene que examinar los resultados de la compilación (código de retorno y los archivos generados), y, finalmente, para limpiar todos los archivos que podría haber generado.

Algo así como

AC_ARG_VAR([NVCC], [nvcc compiler to use])
AC_PATH_PROG([NVCC], [nvcc], [no])
working_nvcc=no
if test "x$NVCC" != "xno"
the
    AC_MSG_CHECKING([whether nvcc works])
    cat>conftest.c<<EOF
    __global__ whatever() {
       ...
    }
EOF
    if $NVCC conftest.c && test_whether_output_files_are_ok
    then
        working_nvcc=yes
    fi
    rm -f conftest.c conftest.o conftest.what conftest.ever
    AC_MSG_RESULT([$working_nvcc])
fi
AM_CONDITIONAL([WORKING_NVCC], [test "x$working_nvcc" = "xyes"])
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top