0

構成プロセス中にいくつかの典型的な 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 マクロを作成する必要がありますか?

4

1 に答える 1

3

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"])
于 2009-12-29T10:14:14.223 に答える