2014-10-04 3 views
3

사용 PTX하는 컴파일NVCC 내가 파일 kernel.cu에서 간단한 커널을 CMAKE의 cuda_compile_ptx

__global__ void add1(double * pi, double c) 
{ 
    *pi += c; 
} 

쉽게와 PTX 파일 kernel.ptx로 컴파일 할 수

NVCC -ptx

: kernel.cu

지금, 나는 다음 CMakeLists.txt으로 cmake를 사용하여 동일한 동작을 재현하고 싶어

cmake_minimum_required(VERSION 2.8) 
project(cmake_ptx) 
find_package(CUDA REQUIRED) 
cuda_compile_ptx(
    test 
    kernel.cu 
) 

하지만 난

cmake를 입력 할 때. & & make

ptx 파일이 없습니다. cmake를 사용하여 위의 nvcc 명령의 동작을 어떻게 재현 할 수 있습니까? 특히, 방법 : 나도 같은 CMakeFile 안에 다른 cuda_add_executable있을 때, 그것은 또한 PTX 파일을 빌드 것으로 나타났습니다 :

답변

5

cuda_compile_ptx 파일을 생성하는 유일한 규칙을 만들지 만, 아무튼 ' 모든 대상에 추가하십시오. 당신이 make 또는 make ptx, 그것은 너무 큰 파일을 생성합니다 실행하면 이제

cmake_minimum_required(VERSION 2.8) 
project(cmake_ptx) 
find_package(CUDA REQUIRED) 
cuda_compile_ptx(
    cuda_ptx_files 
    kernel.cu 
) 
add_custom_target(ptx ALL 
    DEPENDS ${cuda_ptx_files} kernel.cu 
    SOURCES kernel.cu) 

: 당신은 PTX 파일에 따라 사용자 정의 대상을 추가해야합니다. 이 정확히 같은 내게 준

cmake_minimum_required(VERSION 2.8) 

project(cmake_ptx) 

find_package(CUDA REQUIRED) 
include_directories(include/) 

cuda_compile_ptx(
    cuda_ptx_files 
    src/common_kernels.cu 
    OPTIONS -DCUDA_MATLAB 
) 
add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/common_kernels.ptx COMMAND ${CMAKE_COMMAND} -E rename ${cuda_ptx_files} ${CMAKE_BINARY_DIR}/common_kernels.ptx DEPENDS ${cuda_ptx_files}) 
add_custom_target(ptx ALL 
    DEPENDS ${CMAKE_BINARY_DIR}/common_kernels.ptx src/common_kernels.cu 
    SOURCES src/common_kernels.cu 
) 

: 그냥 참조

+0

큰 포함하지만, 그것은 나에게 '세제곱라는 파일을 제공합니다 da_compile_ptx_generated_kernel.cu.ptx' 때문에 FindCUDA에서 다음 줄을 볼 수 있습니다. ([thread] (http://stackoverflow.com/questions/10135795/how-do-i-change-the-output-filename-of-cuda-compile 참조) 내가 CMakeList를 사용하여 FindCUDA 파일을 해킹하는 법을 이해하지 못하기 때문에 'set (generated_file_basename "$ {cuda_target} _generated _ $ {basename} .ptx")' $ {cuda_ptx_files}에 저장된 출력의 이름을 CMake를 사용하여 원하는 형식으로 바꿀 수 있습니까? – adrelino

+0

'add_custom_command'로 이름을 바꿀 수 있습니다 :'add_custom_command (OUTPUT $ {CMAKE_BINARY_DIR}/my_ptx.ptx COMMAND $ {CMAKE_COMMAND} -E copy $ {cuda_ptx_files} $ {CMAKE_BINARY_DIR} /my_ptx.ptx DEPENDS $ {cuda_ptx_files}')'add_custom_target'에서'$ {CMAKE_BINARY_DIR}/my_ptx.ptx'를 사용하십시오. – jet47

+0

고맙습니다. – adrelino

1

,이 허용 대답에서 팁을 사용하여, (/ 폴더를 나는 SRC가 /과 포함) 내 프로젝트 설정을 위해 일 것입니다 호출과 같은 출력 :

NVCC -ptx SRC/common_kernels.cu -I 작품을,/-DCUDA_MATLAB