代码之家  ›  专栏  ›  技术社区  ›  Jérôme

是否可以使用autoconf检查nvcc编译?

  •  0
  • Jérôme  · 技术社区  · 16 年前

    我试图在配置过程中测试一些典型的cuda功能。如何将其写入configure.ac?比如:

    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])
    

    但是在AC_LANG中没有定义nvcc。我必须创建自己的m4宏吗?

    1 回复  |  直到 16 年前
        1
  •  3
  •   ndim    16 年前

    我非常怀疑是否有可能在不重写autoconf的部分内容的情况下,干净地钩住AC_LANG、AC_TRY_COMPILE等一系列宏。

    对你来说,安全的赌注是只写一个测试。除非您在几个项目中需要该测试,否则您甚至不需要在m4宏中包装该测试。

    测试将首先检查 nvcc ,然后创建一些测试源文件,最后尝试使用 $NVCC

    差不多

    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"])