CUDA Отдельные проблемы компиляции с использованием cmake

У меня есть проект CUDA, который я компилирую с помощью cmake. Он работал нормально, пока я не захотел добавить новый класс, содержащий функцию устройства, описанную в новых файлах (.cu и .cuh). Это файл CMakeList:

project(SINS)

cmake_minimum_required(VERSION 2.8)

# CUDA
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "./")

find_package(CUDA) # This command includes a lot of new stuff, see FindCUDA.cmake for details

include_directories(${CUDA_INCLUDE_DIRS}/include)

set(CUDA_LIBRARIES ${CUDA_LIBRARIES} "$ENV{CUDA_BIN_PATH}/lib64/libcurand.so")

[find ODEINT stuff]

include_directories(${PROJECT_SOURCE_DIR}/code/src)
include_directories(${PROJECT_SOURCE_DIR}/code/include)

set(SINS_SRC
    code/src/SINS_constants.cu
    code/src/SINS_IOManager.cu
    code/src/SINS_statistics.cu
    code/src/SINS_bufferGas.cu
)

set(SINS_HEADER
    code/include/SINS_constants.cuh
    code/include/SINS_IOManager.cuh
    code/include/SINS_statistics.cuh
    code/include/SINS_ODEINT.cuh
    code/include/SINS_bufferGas.cuh
)

set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} "-arch=sm_20;--compiler-bindir=/usr/bin/g++;-DSINS_COMPUTE_ON_GPU")

# Compile application
CUDA_ADD_EXECUTABLE(SINS code/SINS_core.cu ${SINS_SRC} ${SINS_HEADER})

# Link it to CUDA
target_link_libraries(SINS ${CUDA_LIBRARIES})

В SINS_ODEINT.cuh:

#include "SINS_bufferGas.cuh"

struct motion_system
{   
    struct motion_functor
    {
        void operator()(T zippedStates) const
        {
            [...]
            SINS_bufferGas::doTheRobot(y);
            [...]
        }
    };
}

В SINS_bufferGas.cuh:

#ifndef SINS_bufferGas_H
#define SINS_bufferGas_H

#include "SINS_constants.cuh"

class SINS_bufferGas
{
    public:
        __host__ __device__ static void doTheRobot(value_type &x);
};

#endif

в SINS_bufferGas.cu:

#include "SINS_bufferGas.cuh"
__host__ __device__ void SINS_bufferGas::doTheRobot(value_type &x) {x = -666.666;}

Компиляция дает:

ptxas fatal   : Unresolved extern function '_ZN14SINS_bufferGas10doTheRobotERd'

Я попытался добавить -dc в CUDA_NVCC_FLAGS, установив переменную CUDA_SEPARABLE_COMPILATION из FindCUDA.cmake, несколько комбинаций того, что предлагается в этом post, пытаясь понять, что такое здесь (без cmake) безрезультатно...

Я использую CUDA 5.0, имею доступ к вычислительным возможностям 2.0 и cmake 2.8.7. Я был бы очень признателен за объяснение того, что происходит и как я могу это исправить. Спасибо за любой совет.

РЕДАКТИРОВАТЬ: добавлена ​​информация, которую запросил Дэвид Кернин.

Вывод CMake:

-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done

~~~ CUDA ~~~
CUDA_BIN_PATH set to /usr/local/cuda-5.0.
-- Found CUDA: /usr/local/cuda-5.0 (found version "5.0")

~~~ ODEINT ~~~
ODEINT_PATH environment variable found and set to : /a/given/path/software/odeint

~~~ ROOT ~~~
-- Found ROOT 5.34/01 in /opt/cern/root/root_v5.34.01

~~~ Host or device ? ~~~
Simulation will be computed on GPUs.
-arch=sm_20;--compiler-bindir=/usr/bin/g++;-DSINS_COMPUTE_ON_GPU

~~~ Double or short precision ? ~~~
Double precision will be used.

~~~ Stepper ? ~~~
Fixed controlled step size will be used.

~~~ Electric field ? ~~~
Trapping field ON

~~~ Space charge ? ~~~
Space charge OFF

~~~ Buffer gas ? ~~~
Buffer gas cooling ON (EXPERIMENTAL)

-- Configuring done
-- Generating done
-- Build files have been written to: /a/path/workdir

И полный вывод make :

/usr/bin/cmake -H/data/pieges/fabian/SINS -B/data/pieges/fabian/SINS/workdir --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /data/pieges/fabian/SINS/workdir/CMakeFiles /data/pieges/fabian/SINS/workdir/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: entrant dans le répertoire « /data/pieges/fabian/SINS/workdir »
make -f CMakeFiles/SINS.dir/build.make CMakeFiles/SINS.dir/depend
make[2]: entrant dans le répertoire « /data/pieges/fabian/SINS/workdir »
/usr/bin/cmake -E cmake_progress_report /data/pieges/fabian/SINS/workdir/CMakeFiles 5
/usr/bin/cmake -E cmake_progress_report /data/pieges/fabian/SINS/workdir/CMakeFiles 1
/usr/bin/cmake -E cmake_progress_report /data/pieges/fabian/SINS/workdir/CMakeFiles 2
/usr/bin/cmake -E cmake_progress_report /data/pieges/fabian/SINS/workdir/CMakeFiles 3
/usr/bin/cmake -E cmake_progress_report /data/pieges/fabian/SINS/workdir/CMakeFiles 4
[ 40%] [ 80%] [100%] [100%] [100%] Building NVCC (Device) object CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_bufferGas.cu.o
cd /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src && /usr/bin/cmake -E make_directory /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/.
Building NVCC (Device) object CMakeFiles/SINS.dir/code/./SINS_generated_SINS_core.cu.o
cd /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code && /usr/bin/cmake -E make_directory /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/.
Building NVCC (Device) object CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_constants.cu.o
Building NVCC (Device) object CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_IOManager.cu.o
Building NVCC (Device) object CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_statistics.cu.o
cd /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src && /usr/bin/cmake -E make_directory /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/.
cd /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src && /usr/bin/cmake -E make_directory /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/.
cd /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src && /usr/bin/cmake -E make_directory /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/.
cd /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src && /usr/bin/cmake -D verbose:BOOL=1 -D build_configuration:STRING= -D generated_file:STRING=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_IOManager.cu.o -D generated_cubin_file:STRING=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_IOManager.cu.o.cubin.txt -P /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_IOManager.cu.o.cmake
cd /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src && /usr/bin/cmake -D verbose:BOOL=1 -D build_configuration:STRING= -D generated_file:STRING=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_bufferGas.cu.o -D generated_cubin_file:STRING=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_bufferGas.cu.o.cubin.txt -P /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_bufferGas.cu.o.cmake
cd /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src && /usr/bin/cmake -D verbose:BOOL=1 -D build_configuration:STRING= -D generated_file:STRING=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_constants.cu.o -D generated_cubin_file:STRING=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_constants.cu.o.cubin.txt -P /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_constants.cu.o.cmake
cd /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src && /usr/bin/cmake -D verbose:BOOL=1 -D build_configuration:STRING= -D generated_file:STRING=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_statistics.cu.o -D generated_cubin_file:STRING=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_statistics.cu.o.cubin.txt -P /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_statistics.cu.o.cmake
cd /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code && /usr/bin/cmake -D verbose:BOOL=1 -D build_configuration:STRING= -D generated_file:STRING=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/./SINS_generated_SINS_core.cu.o -D generated_cubin_file:STRING=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/./SINS_generated_SINS_core.cu.o.cubin.txt -P /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/SINS_generated_SINS_core.cu.o.cmake
-- Removing /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_constants.cu.o
-- Removing /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_IOManager.cu.o
-- Removing /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_bufferGas.cu.o
-- Removing /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_statistics.cu.o
-- Removing /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/./SINS_generated_SINS_core.cu.o
/usr/bin/cmake -E remove /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_constants.cu.o
/usr/bin/cmake -E remove /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/./SINS_generated_SINS_core.cu.o
/usr/bin/cmake -E remove /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_bufferGas.cu.o
/usr/bin/cmake -E remove /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_IOManager.cu.o
/usr/bin/cmake -E remove /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_statistics.cu.o
-- Generating dependency file: /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/SINS_generated_SINS_core.cu.o.NVCC-depend
-- Generating dependency file: /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_statistics.cu.o.NVCC-depend
-- Generating dependency file: /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_IOManager.cu.o.NVCC-depend
-- Generating dependency file: /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_bufferGas.cu.o.NVCC-depend
-- Generating dependency file: /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_constants.cu.o.NVCC-depend
/usr/local/cuda-5.0/bin/nvcc -M -D__CUDACC__ /data/pieges/fabian/SINS/code/src/SINS_bufferGas.cu -o /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_bufferGas.cu.o.NVCC-depend -m64 -DHAS_ROOT -DSINS_DO_ELECTRIC_FIELD -DSINS_DO_BUFFER_GAS -Xcompiler ,\"-g\" -arch=sm_20 --compiler-bindir=/usr/bin/g++ -DSINS_COMPUTE_ON_GPU -DNVCC -I/usr/local/cuda-5.0/include -I/usr/local/cuda-5.0/include/include -I/home/fabian/software/odeint -I/opt/cern/root/root_v5.34.01/include -I/data/pieges/fabian/SINS/code/src -I/data/pieges/fabian/SINS/code/include -I/usr/local/cuda-5.0/include
/usr/local/cuda-5.0/bin/nvcc -M -D__CUDACC__ /data/pieges/fabian/SINS/code/src/SINS_constants.cu -o /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_constants.cu.o.NVCC-depend -m64 -DHAS_ROOT -DSINS_DO_ELECTRIC_FIELD -DSINS_DO_BUFFER_GAS -Xcompiler ,\"-g\" -arch=sm_20 --compiler-bindir=/usr/bin/g++ -DSINS_COMPUTE_ON_GPU -DNVCC -I/usr/local/cuda-5.0/include -I/usr/local/cuda-5.0/include/include -I/home/fabian/software/odeint -I/opt/cern/root/root_v5.34.01/include -I/data/pieges/fabian/SINS/code/src -I/data/pieges/fabian/SINS/code/include -I/usr/local/cuda-5.0/include
/usr/local/cuda-5.0/bin/nvcc -M -D__CUDACC__ /data/pieges/fabian/SINS/code/src/SINS_IOManager.cu -o /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_IOManager.cu.o.NVCC-depend -m64 -DHAS_ROOT -DSINS_DO_ELECTRIC_FIELD -DSINS_DO_BUFFER_GAS -Xcompiler ,\"-g\" -arch=sm_20 --compiler-bindir=/usr/bin/g++ -DSINS_COMPUTE_ON_GPU -DNVCC -I/usr/local/cuda-5.0/include -I/usr/local/cuda-5.0/include/include -I/home/fabian/software/odeint -I/opt/cern/root/root_v5.34.01/include -I/data/pieges/fabian/SINS/code/src -I/data/pieges/fabian/SINS/code/include -I/usr/local/cuda-5.0/include
/usr/local/cuda-5.0/bin/nvcc -M -D__CUDACC__ /data/pieges/fabian/SINS/code/SINS_core.cu -o /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/SINS_generated_SINS_core.cu.o.NVCC-depend -m64 -DHAS_ROOT -DSINS_DO_ELECTRIC_FIELD -DSINS_DO_BUFFER_GAS -Xcompiler ,\"-g\" -arch=sm_20 --compiler-bindir=/usr/bin/g++ -DSINS_COMPUTE_ON_GPU -DNVCC -I/usr/local/cuda-5.0/include -I/usr/local/cuda-5.0/include/include -I/home/fabian/software/odeint -I/opt/cern/root/root_v5.34.01/include -I/data/pieges/fabian/SINS/code/src -I/data/pieges/fabian/SINS/code/include -I/usr/local/cuda-5.0/include
/usr/local/cuda-5.0/bin/nvcc -M -D__CUDACC__ /data/pieges/fabian/SINS/code/src/SINS_statistics.cu -o /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_statistics.cu.o.NVCC-depend -m64 -DHAS_ROOT -DSINS_DO_ELECTRIC_FIELD -DSINS_DO_BUFFER_GAS -Xcompiler ,\"-g\" -arch=sm_20 --compiler-bindir=/usr/bin/g++ -DSINS_COMPUTE_ON_GPU -DNVCC -I/usr/local/cuda-5.0/include -I/usr/local/cuda-5.0/include/include -I/home/fabian/software/odeint -I/opt/cern/root/root_v5.34.01/include -I/data/pieges/fabian/SINS/code/src -I/data/pieges/fabian/SINS/code/include -I/usr/local/cuda-5.0/include
-- Generating temporary cmake readable file: /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_bufferGas.cu.o.depend.tmp
-- Generating temporary cmake readable file: /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_constants.cu.o.depend.tmp
-- Generating temporary cmake readable file: /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_statistics.cu.o.depend.tmp
/usr/bin/cmake -D input_file:FILEPATH=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_constants.cu.o.NVCC-depend -D output_file:FILEPATH=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_constants.cu.o.depend.tmp -P /usr/share/cmake-2.8/Modules/FindCUDA/make2cmake.cmake
/usr/bin/cmake -D input_file:FILEPATH=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_bufferGas.cu.o.NVCC-depend -D output_file:FILEPATH=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_bufferGas.cu.o.depend.tmp -P /usr/share/cmake-2.8/Modules/FindCUDA/make2cmake.cmake
/usr/bin/cmake -D input_file:FILEPATH=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_statistics.cu.o.NVCC-depend -D output_file:FILEPATH=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_statistics.cu.o.depend.tmp -P /usr/share/cmake-2.8/Modules/FindCUDA/make2cmake.cmake
-- Generating temporary cmake readable file: /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_IOManager.cu.o.depend.tmp
/usr/bin/cmake -D input_file:FILEPATH=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_IOManager.cu.o.NVCC-depend -D output_file:FILEPATH=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_IOManager.cu.o.depend.tmp -P /usr/share/cmake-2.8/Modules/FindCUDA/make2cmake.cmake
-- Copy if different /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_constants.cu.o.depend.tmp to /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_constants.cu.o.depend
-- Copy if different /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_statistics.cu.o.depend.tmp to /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_statistics.cu.o.depend
-- Copy if different /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_bufferGas.cu.o.depend.tmp to /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_bufferGas.cu.o.depend
/usr/bin/cmake -E copy_if_different /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_constants.cu.o.depend.tmp /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_constants.cu.o.depend
/usr/bin/cmake -E copy_if_different /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_statistics.cu.o.depend.tmp /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_statistics.cu.o.depend
/usr/bin/cmake -E copy_if_different /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_bufferGas.cu.o.depend.tmp /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_bufferGas.cu.o.depend
-- Removing /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_constants.cu.o.depend.tmp and /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_constants.cu.o.NVCC-depend
-- Removing /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_statistics.cu.o.depend.tmp and /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_statistics.cu.o.NVCC-depend
-- Removing /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_bufferGas.cu.o.depend.tmp and /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_bufferGas.cu.o.NVCC-depend
/usr/bin/cmake -E remove /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_constants.cu.o.depend.tmp /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_constants.cu.o.NVCC-depend
/usr/bin/cmake -E remove /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_statistics.cu.o.depend.tmp /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_statistics.cu.o.NVCC-depend
-- Copy if different /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_IOManager.cu.o.depend.tmp to /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_IOManager.cu.o.depend
/usr/bin/cmake -E remove /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_bufferGas.cu.o.depend.tmp /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_bufferGas.cu.o.NVCC-depend
/usr/bin/cmake -E copy_if_different /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_IOManager.cu.o.depend.tmp /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_IOManager.cu.o.depend
-- Generating /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_constants.cu.o
-- Generating /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_statistics.cu.o
-- Generating /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_bufferGas.cu.o
/usr/local/cuda-5.0/bin/nvcc /data/pieges/fabian/SINS/code/src/SINS_constants.cu -c -o /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_constants.cu.o -m64 -DHAS_ROOT -DSINS_DO_ELECTRIC_FIELD -DSINS_DO_BUFFER_GAS -Xcompiler ,\"-g\" -arch=sm_20 --compiler-bindir=/usr/bin/g++ -DSINS_COMPUTE_ON_GPU -DNVCC -I/usr/local/cuda-5.0/include -I/usr/local/cuda-5.0/include/include -I/home/fabian/software/odeint -I/opt/cern/root/root_v5.34.01/include -I/data/pieges/fabian/SINS/code/src -I/data/pieges/fabian/SINS/code/include -I/usr/local/cuda-5.0/include
/usr/local/cuda-5.0/bin/nvcc /data/pieges/fabian/SINS/code/src/SINS_statistics.cu -c -o /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_statistics.cu.o -m64 -DHAS_ROOT -DSINS_DO_ELECTRIC_FIELD -DSINS_DO_BUFFER_GAS -Xcompiler ,\"-g\" -arch=sm_20 --compiler-bindir=/usr/bin/g++ -DSINS_COMPUTE_ON_GPU -DNVCC -I/usr/local/cuda-5.0/include -I/usr/local/cuda-5.0/include/include -I/home/fabian/software/odeint -I/opt/cern/root/root_v5.34.01/include -I/data/pieges/fabian/SINS/code/src -I/data/pieges/fabian/SINS/code/include -I/usr/local/cuda-5.0/include
-- Removing /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_IOManager.cu.o.depend.tmp and /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_IOManager.cu.o.NVCC-depend
/usr/local/cuda-5.0/bin/nvcc /data/pieges/fabian/SINS/code/src/SINS_bufferGas.cu -c -o /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_bufferGas.cu.o -m64 -DHAS_ROOT -DSINS_DO_ELECTRIC_FIELD -DSINS_DO_BUFFER_GAS -Xcompiler ,\"-g\" -arch=sm_20 --compiler-bindir=/usr/bin/g++ -DSINS_COMPUTE_ON_GPU -DNVCC -I/usr/local/cuda-5.0/include -I/usr/local/cuda-5.0/include/include -I/home/fabian/software/odeint -I/opt/cern/root/root_v5.34.01/include -I/data/pieges/fabian/SINS/code/src -I/data/pieges/fabian/SINS/code/include -I/usr/local/cuda-5.0/include
/usr/bin/cmake -E remove /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_IOManager.cu.o.depend.tmp /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/SINS_generated_SINS_IOManager.cu.o.NVCC-depend
-- Generating /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_IOManager.cu.o
/usr/local/cuda-5.0/bin/nvcc /data/pieges/fabian/SINS/code/src/SINS_IOManager.cu -c -o /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_IOManager.cu.o -m64 -DHAS_ROOT -DSINS_DO_ELECTRIC_FIELD -DSINS_DO_BUFFER_GAS -Xcompiler ,\"-g\" -arch=sm_20 --compiler-bindir=/usr/bin/g++ -DSINS_COMPUTE_ON_GPU -DNVCC -I/usr/local/cuda-5.0/include -I/usr/local/cuda-5.0/include/include -I/home/fabian/software/odeint -I/opt/cern/root/root_v5.34.01/include -I/data/pieges/fabian/SINS/code/src -I/data/pieges/fabian/SINS/code/include -I/usr/local/cuda-5.0/include
/opt/cern/root/root_v5.34.01/include/TMap.h(134): warning: unrecognized GCC pragma

/opt/cern/root/root_v5.34.01/include/TMap.h(135): warning: unrecognized GCC pragma

/opt/cern/root/root_v5.34.01/include/TMap.h(176): warning: unrecognized GCC pragma

-- Generating temporary cmake readable file: /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/SINS_generated_SINS_core.cu.o.depend.tmp
/usr/bin/cmake -D input_file:FILEPATH=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/SINS_generated_SINS_core.cu.o.NVCC-depend -D output_file:FILEPATH=/data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/SINS_generated_SINS_core.cu.o.depend.tmp -P /usr/share/cmake-2.8/Modules/FindCUDA/make2cmake.cmake
/opt/cern/root/root_v5.34.01/include/TMap.h(134): warning: unrecognized GCC pragma

/opt/cern/root/root_v5.34.01/include/TMap.h(135): warning: unrecognized GCC pragma

/opt/cern/root/root_v5.34.01/include/TMap.h(176): warning: unrecognized GCC pragma

-- Copy if different /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/SINS_generated_SINS_core.cu.o.depend.tmp to /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/SINS_generated_SINS_core.cu.o.depend
/usr/bin/cmake -E copy_if_different /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/SINS_generated_SINS_core.cu.o.depend.tmp /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/SINS_generated_SINS_core.cu.o.depend
-- Removing /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/SINS_generated_SINS_core.cu.o.depend.tmp and /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/SINS_generated_SINS_core.cu.o.NVCC-depend
/usr/bin/cmake -E remove /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/SINS_generated_SINS_core.cu.o.depend.tmp /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/SINS_generated_SINS_core.cu.o.NVCC-depend
-- Generating /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/./SINS_generated_SINS_core.cu.o
/usr/local/cuda-5.0/bin/nvcc /data/pieges/fabian/SINS/code/SINS_core.cu -c -o /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/./SINS_generated_SINS_core.cu.o -m64 -DHAS_ROOT -DSINS_DO_ELECTRIC_FIELD -DSINS_DO_BUFFER_GAS -Xcompiler ,\"-g\" -arch=sm_20 --compiler-bindir=/usr/bin/g++ -DSINS_COMPUTE_ON_GPU -DNVCC -I/usr/local/cuda-5.0/include -I/usr/local/cuda-5.0/include/include -I/home/fabian/software/odeint -I/opt/cern/root/root_v5.34.01/include -I/data/pieges/fabian/SINS/code/src -I/data/pieges/fabian/SINS/code/include -I/usr/local/cuda-5.0/include
Generated /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_bufferGas.cu.o successfully.
Generated /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_constants.cu.o successfully.
Generated /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_IOManager.cu.o successfully.
Generated /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/src/./SINS_generated_SINS_statistics.cu.o successfully.
/opt/cern/root/root_v5.34.01/include/TMap.h(134): warning: unrecognized GCC pragma

/opt/cern/root/root_v5.34.01/include/TMap.h(135): warning: unrecognized GCC pragma

/opt/cern/root/root_v5.34.01/include/TMap.h(176): warning: unrecognized GCC pragma

/data/pieges/fabian/SINS/code/SINS_core.cu(316): warning: variable "collisionTable" is used before its value is set

/data/pieges/fabian/SINS/code/SINS_core.cu(215): warning: variable "dummy" was set but never used

/opt/cern/root/root_v5.34.01/include/TMap.h(134): warning: unrecognized GCC pragma

/opt/cern/root/root_v5.34.01/include/TMap.h(135): warning: unrecognized GCC pragma

/opt/cern/root/root_v5.34.01/include/TMap.h(176): warning: unrecognized GCC pragma

/data/pieges/fabian/SINS/code/SINS_core.cu(316): warning: variable "collisionTable" is used before its value is set

/data/pieges/fabian/SINS/code/SINS_core.cu(215): warning: variable "dummy" was set but never used

ptxas fatal   : Unresolved extern function '_ZN14SINS_bufferGas10doTheRobotERd'
-- Removing /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/./SINS_generated_SINS_core.cu.o
/usr/bin/cmake -E remove /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/./SINS_generated_SINS_core.cu.o
CMake Error at SINS_generated_SINS_core.cu.o.cmake:256 (message):
  Error generating file
  /data/pieges/fabian/SINS/workdir/CMakeFiles/SINS.dir/code/./SINS_generated_SINS_core.cu.o


make[2]: *** [CMakeFiles/SINS.dir/code/./SINS_generated_SINS_core.cu.o] Erreur 1
make[2]: quittant le répertoire « /data/pieges/fabian/SINS/workdir »
make[1]: *** [CMakeFiles/SINS.dir/all] Erreur 2
make[1]: quittant le répertoire « /data/pieges/fabian/SINS/workdir »
make: *** [all] Erreur 2

person Mortuis    schedule 18.02.2014    source источник
comment
добавьте флаг подробностей cmake и makefile (cmake.org/Wiki/) и выложи лог   -  person Marco A.    schedule 18.02.2014
comment
Можете ли вы также опубликовать содержимое SINS_core.cu? Функция там есть и может быть объявлена ​​по-другому   -  person Marco A.    schedule 19.02.2014
comment
Конечно, хотя я не уверен, что это поможет (и это слишком много :S) - потому что многие вызовы скрыты в библиотеках ODEINT/THRUST. По сути, это объявляется: связка motion_system(SINS_constants::NB_IONS); а затем выполняется вызов интегратора: Nb_steps +=интегрировать_адаптивный(theStepper()),связка,глобальноесостояние,TIME_INIT,TIME_MAX,DT_OBS,streaming_observer());   -  person Mortuis    schedule 19.02.2014
comment
Блин, я не знал этот сайт! Вот ссылка: nopaste.info/7675765612.html   -  person Mortuis    schedule 19.02.2014
comment
Хорошо для перемещаемого варианта, но вы также пытались добавить (stackoverflow.com/a/13890572/1938163) библиотеку -lcudadevrt к связующим флагам?   -  person Marco A.    schedule 19.02.2014
comment
Я новичок в cmake и создаю проблемы с компиляцией, поэтому я не уверен, что вы имеете в виду, добавляя -lcudadevrt к флагам связывания. Я попробовал две модификации: set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} "-lcudadevrt;-arch=sm_20;--compiler-bindir=/usr/bin/g++;-DSINS_COMPUTE_ON_GPU") и/или set(CUDA_LIBRARIES ${CUDA_LIBRARIES} -lcudadevrt), зная, что ${CUDA_LIBRARIES} находится в команде target_link_libraries - все та же ошибка.   -  person Mortuis    schedule 19.02.2014
comment
так что вы пробовали с --relocatable-device-code true для прохода компиляции и -lcudaevrt для прохода компоновки?   -  person Marco A.    schedule 19.02.2014
comment
Спасибо ! Кажется, я не пробовал эту комбинацию! Компиляция вроде доходит до точки ссылки, но теперь появляется следующая ошибка /usr/bin/ld: cannot find -lcudadevrt. В /usr/local/cuda-5.0/lib64/ есть только libcudadevrt.a ; Пробовал сделать именно так, как это делается с курандом, но не получается, может потому что libcurand.so есть, а libcudadevrt.so нет... РЕДАКТИРОВАТЬ: Не знаю, меняет ли это что-то, но /usr/local/cuda-5.0/lib64 есть в моем LD_LIBRARY_PATH .   -  person Mortuis    schedule 19.02.2014
comment
Хорошо, со строкой set(CUDA_LIBRARIES ${CUDA_LIBRARIES} -L/usr/local/cuda-5.0/lib64/ -lcudadevrt) сделан еще один шаг. Теперь у меня есть ошибки CMakeFiles/SINS.dir/code/./SINS_generated_SINS_core.cu.o: In function __sti____cudaRegisterAll_44_tmpxft_00007ef2_00000000_6_SINS_core_cpp1_ii_08a00a9b': /tmp/tmpxft_00007ef2_00000000-3_SINS_core.cudafe1.stub.c:143: неопределенная ссылка на __cudaRegisterLinkedBinary_44_tmpxft_00007ef2_00000000_6_SINS_core_cpp1_ii_08a00a9b'...   -  person Mortuis    schedule 19.02.2014
comment
Я только что понял, что команда nm /usr/local/cuda-5.0/lib64/libcudadevrt.a return содержит `U __cudaRegisterLinkedBinary_54_tmpxft_0000486c_00000000_6_cuda_device_runtime_cpp1_ii_53946984` - может ли моя установка CUDA быть повреждена?   -  person Mortuis    schedule 19.02.2014
comment
возможно, несоответствие версии (32-битная ссылка против 64-битной библиотеки)? Ваш проект тоже 64?   -  person Marco A.    schedule 19.02.2014
comment
Все должно быть 64 бита, я давно не работал с 32 битами. Как я могу быть в этом уверен?   -  person Mortuis    schedule 19.02.2014
comment
кажется, все это x64, это должно быть связано с чем-то другим ... может быть, вы попробуете с CUDA5.5?   -  person Marco A.    schedule 19.02.2014
comment
Готово, я подумал, что несколько ошибок разделения кода могут быть исправлены в 5.5, так как эта функция кажется новой из 5.0 - все та же ошибка.   -  person Mortuis    schedule 20.02.2014
comment
Я думаю, что это может быть так: stackoverflow.com/a/11428570/1938163, то есть порядок, в котором CMake связывает материал   -  person Marco A.    schedule 20.02.2014
comment
Я пробовал несколько комбинаций порядка флагов, но безуспешно, даже пробовал 32-битные вещи - все та же ошибка.   -  person Mortuis    schedule 20.02.2014