2012-04-13 8 views
5

En CMAKE con FindCUDA, dado un archivo de entrada filename.cu, el comando cuda_compile_ptx genera nombres de archivo de salida del formulario cuda_compile_ptx_generated_filename.cu.ptx, pero necesito que los nombres de los archivos de salida sean filename.ptx.¿Cómo cambio el nombre de archivo de salida de cuda_compile_ptx en CMake?

¿Hay una manera simple de hacer esto?

+2

Creo que la única manera de hacerlo es piratear macro cuda_wrap_srcs, es decir. en la siguiente línea: conjunto (generated_file_basename "$ {cuda_target} _generated _ $ {basename} .ptx") –

Respuesta

3

Lo ideal sería que pueda especificar -o <outputName>. Sin embargo, la cuestión es que el CUDA_COMPILE_PTX macro en realidad anula la opción -o con cuda_compile_ptx_generated_${filename}.ptx

Aquí hay dos formas alternativas añadir compilación CUDA para su proyecto

  1. Puede seguir utilizando CUDA_COMPILE_PTX pero evitar el problema cambiando el nombre con 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}) y use ${CMAKE_BINARY_DIR}/my_ptx.ptx en add_custom_target
  2. Existen mejores alternativas para compilar CUDA PTX con CMake. Un muy buen ejemplo de una macro do a esto: https://github.com/nvpro-samples/shared_sources/blob/master/cmake/private/FindCuda.cmake. Un ejemplo de cómo usar esta macro se puede encontrar aquí: https://github.com/nvpro-samples/gl_cuda_interop_pingpong_st/blob/master/CMakeLists.txt.
Cuestiones relacionadas