2012-04-13 32 views
5

Trong CMAKE với FindCUDA, được cung cấp một tệp đầu vào filename.cu, lệnh cuda_compile_ptx tạo tên tệp đầu ra của biểu mẫu cuda_compile_ptx_generated_filename.cu.ptx, nhưng tôi cần tên tệp đầu ra có dạng filename.ptx.Làm cách nào để thay đổi tên tệp đầu ra của cuda_compile_ptx trong CMake?

Có cách nào đơn giản để thực hiện công việc này không?

+2

Tôi nghĩ cách duy nhất để làm điều này là hack macro cuda_wrap_srcs, tức là. trong dòng sau: set (generated_file_basename "$ {cuda_target} _generated _ $ {basename} .ptx") –

Trả lời

3

Lý tưởng nhất là bạn có thể chỉ định -o <outputName>. Tuy nhiên vấn đề là các CUDA_COMPILE_PTX vĩ mô thực sự ghi đè tùy chọn -o với cuda_compile_ptx_generated_${filename}.ptx

Dưới đây là hai cách thay thế thêm CUDA biên soạn để dự án của bạn

  1. Bạn vẫn có thể sử dụng CUDA_COMPILE_PTX nhưng công việc xung quanh vấn đề này bằng cách đổi tên nó với 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}) và sử dụng ${CMAKE_BINARY_DIR}/my_ptx.ptx trong add_custom_target
  2. Có các lựa chọn thay thế tốt hơn để biên dịch PTX CUDA bằng CMake. Một ví dụ rất hay về macro thực hiện điều này: https://github.com/nvpro-samples/shared_sources/blob/master/cmake/private/FindCuda.cmake. Bạn có thể tìm thấy ví dụ về cách sử dụng macro này tại đây: https://github.com/nvpro-samples/gl_cuda_interop_pingpong_st/blob/master/CMakeLists.txt.
Các vấn đề liên quan