我在文件kernel.cu简单的内核PTXNVCC编译使用cmake的cuda_compile_ptx
__global__ void add1(double * pi, double c)
{
*pi += c;
}
,并可以很容易地把它编译成一个PTX文件kernel.ptx:
NVCC -ptx kernel.cu
现在,我想重现使用cmake具有以下的CMakeLists.txt相同的行为:
cmake_minimum_required(VERSION 2.8)
project(cmake_ptx)
find_package(CUDA REQUIRED)
cuda_compile_ptx(
test
kernel.cu
)
但是当我键入
cmake的。 & & make
没有建立ptx文件。如何使用cmake重现上述nvcc命令的行为?特别是,如何:
的PTX文件独立编译添加到目标(例如,所有):我注意到,当有相同CMakeFile内的另一个cuda_add_executable,它也建立了PTX文件,否则不。
名称,如源文件的文件但.ptx代替.CU结束: 与此相关的问题: How do I change the output filename of cuda_compile_ptx in CMake?
很大,这样的作品,但它给了我一个叫 '铜文件da_compile_ptx_generated_kernel.cu.ptx'由于FindCUDA中的这一行:(请参见[线程](http://stackoverflow.com/questions/10135795/how-do-i-change-the-output-filename-of-cuda-compile -ptx-in-cmake)我上面提到) 'set(generated_file_basename“$ {cuda_target} _generated _ $ {basename} .ptx”)' 因为我不明白如何破解FindCUDA文件只是使用我的CMakeList,有没有办法将存储在$ {cuda_ptx_files}中的输出重命名为使用CMake的格式? – adrelino 2014-10-05 08:33:48
您可以使用'add_custom_command'命名它:'add_custom_command(OUTPUT $ {CMAKE_BINARY_DIR}/my_ptx。ptx COMMAND $ {CMAKE_COMMAND} -E复制$ {cuda_ptx_files} $ {CMAKE_BINARY_DIR} /my_ptx.ptx DEPENDS $ {cuda_ptx_files})'并在'add_custom_target'中使用'$ {CMAKE_BINARY_DIR}/my_ptx.ptx'。 – jet47 2014-10-05 09:12:03
谢谢你,那曾经工作过 – adrelino 2014-10-05 18:26:08