1

nvcc簡単なテストをコンパイルして実行することにより、cmake の段階で計算機能フラグを設定しようとしています。

#include <cuda.h>
#include <cuda_runtime.h>
#include <stdio.h>

int main(int argc, char **argv){
    cudaDeviceProp dP;
    if(cudaSuccess != cudaGetDeviceProperties(&dP, 0)) return 0;
    printf("-arch=sm_%d%d\n", dP.major, dP.minor);
    return 0;
}

ここでその方法を読みましたがtry_run、gcc だけでターゲットをコンパイルさせてください。を追加するcuda_compileと、バイナリ ファイルも取得されません。

.cuの段階で -fileをコンパイルcmakeして実行し、execute_process正しいコンパイル フラグを設定するにはどうすればよいですか?

4

1 に答える 1

2

うーん、どうしたらいいのかわからないので、簡単にしました。私のCUDA_FOUNDセクションの最初に、次のように追加します。

if(CUDA_FOUND)
    set(TEST ${CMAKE_BINARY_DIR}/test)
    set(TESTSRC ${CMAKE_CURRENT_SOURCE_DIR}/test/capability.cu)
    execute_process(COMMAND nvcc -lcuda ${TESTSRC} -o ${TEST})
    execute_process(COMMAND ${TEST} OUTPUT_VARIABLE CUDA_ARCH)
    message("Cuda architecture:  ${CUDA_ARCH}")
    list(APPEND CUDA_NVCC_FLAGS --use_fast_math ${CUDA_ARCH})

これは単にテスト ソースをコンパイルし、CUDA_ARCH変数を埋めて実行するだけです。

于 2013-03-26T10:42:50.360 に答える