2013-03-26 4 views
1

나는 간단한 테스트를 컴파일하고 실행하여 cmake의 단계에 nvcc의 컴퓨팅 능력 플래그를 설정하려고 : cmake의 try_run에서 nvcc를 실행하려면 어떻게해야합니까?

#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에 의해 목표를 컴파일 할 수 있도록하는 방법을 here를 참조하십시오. cuda_compile을 추가하면 바이너리 파일도 생성되지 않습니다.

단계에서 .cu- 파일을 컴파일하고 execute_process을 실행하여 컴파일 플래그를 올바르게 설정할 수 있습니까?

답변

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 변수를 작성에서 실행됩니다.

관련 문제