Important: Please read the Qt Code of Conduct -

Add Cuda libs to QT

  • Hello,

    I found in web many examples how to link NVIDIA CUDA to QtProject (Mingw or MSVC 64 bit), but none work correctly for me. Maybe someone know how to do this?


    My last: .pro file looks like that:

    QT       += core
    QT       -= gui
    TARGET = QtCuda
    CONFIG   += console
    CONFIG   -= app_bundle
    TEMPLATE = app
    SOURCES += main.cpp \
    # project build directories
    DESTDIR     = $$PWD
    # C++ flags
    # Cuda sources
    # Path to cuda toolkit installb C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64
    CUDA_DIR      = "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v7.5"
    # Path to header and libs files
    INCLUDEPATH  += $$CUDA_DIR/include
    QMAKE_LIBDIR += $$CUDA_DIR/lib/x64
    SYSTEM_TYPE = 64            # '32' or '64', depending on your system
    # libs used in your code
    LIBS += -lcuda -lcudart
    # GPU architecture
    CUDA_ARCH     = sm_50
    # Here are some NVCC flags I've always used by default.
    NVCCFLAGS     = --use_fast_math
    # Prepare the extra compiler configuration (taken from the nvidia forum - i'm not an expert in this part)
    CUDA_INC = $$join(INCLUDEPATH,'" -I"','-I"','"')
    # MSVCRT link option (static or dynamic, it must be the same with your Qt SDK link option)
    # Tell Qt that we want add more stuff to the Makefile
    # Configuration of the Cuda compiler
    CONFIG(debug, debug|release) {
        # Debug mode
        cuda_d.input = CUDA_SOURCES
        cuda_d.output = $$OBJECTS_DIR/${QMAKE_FILE_BASE}.obj
        cuda_d.commands = $$CUDA_DIR/bin/nvcc.exe -D_DEBUG $$NVCC_OPTIONS $$CUDA_INC $$LIBS --machine $$SYSTEM_TYPE \
                         -arch=$$CUDA_ARCH -c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} -Xcompiler $$MSVCRT_LINK_FLAG_DEBUG
        cuda_d.dependency_type = TYPE_C
        QMAKE_EXTRA_COMPILERS += cuda_d
    else {
        # Release mode
        cuda.input = CUDA_SOURCES
        cuda.output = $$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}.obj
        cuda.commands = $$CUDA_DIR/bin/nvcc.exe $$NVCC_OPTIONS $$CUDA_INC $$LIBS --machine $$SYSTEM_TYPE \
                        -arch=$$CUDA_ARCH -c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} -Xcompiler $$MSVCRT_LINK_FLAG_RELEASE
        cuda.dependency_type = TYPE_C
    And errors: 

  • Lifetime Qt Champion

    Hi and welcome to devnet,

    IIRC, the cuda-z project has working implementation of Cuda + Qt. You should find there some inspiration.

    Hope it helps

Log in to reply