【问题标题】:Is it possible to check nvcc compilation with autoconf?是否可以使用 autoconf 检查 nvcc 编译?
【发布时间】:2010-12-30 17:43:42
【问题描述】:

我正在尝试在配置过程中测试一些典型的 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 宏吗?

【问题讨论】:

    标签: c cuda autoconf nvcc


    【解决方案1】:

    我非常怀疑是否可以干净地挂钩到 AC_LANG、AC_TRY_COMPILE 等系列宏而不实际重写部分 autoconf。

    对你来说安全的选择是只写一个测试。除非您需要在多个项目中进行该测试,否则您甚至不需要将测试包装在 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"])
    

    【讨论】:

    • 非常感谢。这更像是一个通用的自动工具答案,但这正是我所需要的。
    猜你喜欢
    • 2016-12-13
    • 2012-11-12
    • 1970-01-01
    • 2021-12-27
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    相关资源
    最近更新 更多