我试图在配置过程中测试一些典型的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语言中没有定义nvcc。我必须创建自己的m4宏吗?
最佳答案
我非常怀疑是否有可能在不重写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"])
关于c - 是否可以使用autoconf检查nvcc编译?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1973846/