gpt4 book ai didi

qt - 在 Ubuntu 12.04 上将 CUDA 与 Qt 集成

转载 作者:行者123 更新时间:2023-12-04 05:45:10 25 4
gpt4 key购买 nike

我正在尝试将 Qt 与 CUDA 集成。我正在 Ubuntu 12.04 上工作。我已经安装了 CUDA 和 Qt。

我按照这里的步骤 -
'linker input file unused because linking not done' when trying to setup QT creator & Cuda

但是它仍然给我一个错误。

这是我如何做到的。

我在我的主目录中创建了一个名为“CUDA2”的空 Qt 项目。

我添加了以下文件

cuda_interface.cu

// CUDA-C includes
#include <cuda.h>


extern "C"
void runCudaPart();

// Main cuda function

void runCudaPart() {

// all your cuda code here *smile*

}

main.cpp
#include <QtCore/QCoreApplication>

extern "C"
void runCudaPart();

int main(int argc, char *argv[]) {

QCoreApplication a(argc, argv);

runCudaPart();

return a.exec();

}

我将以下行添加到 .pro 文件
QT += core
QT -= gui

TARGET = cuda2
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
# Source files for C/C++ compiler
SOURCES += main.cpp
# project build directories
DESTDIR = $$system(pwd)
OBJECTS_DIR = $$DESTDIR/Obj
# and C/C++ flags
QMAKE_CFLAGS_RELEASE =-O3
QMAKE_CXXFLAGS_RELEASE =-O3
# cuda source
CUDA_SOURCES += cuda_interface.cu
# Path to cuda toolkit install
CUDA_DIR = /usr/local/cuda
INCLUDEPATH += $$CUDA_DIR/include
QMAKE_LIBDIR += $$CUDA_DIR/lib
# GPU architecture
CUDA_ARCH = sm_20
# NVCC flags
NVCCFLAGS = --compiler-options -fno-strict-aliasing -use_fast_math --ptxas-options=-v
# Path to libraries
LIBS += -lcudart -lcuda
# join the includes in a line
CUDA_INC = $$join(INCLUDEPATH,' -I','-I',' ')
cuda.commands = $$CUDA_DIR/bin/nvcc -m64 -O3 -arch=$$CUDA_ARCH -c $$NVCCFLAGS $$CUDA_INC $$LIBS ${QMAKE_FILE_NAME} -o ${QMAKE_FILE_OUT}
cuda.dependcy_type = TYPE_C
cuda.depend_command = $$CUDA_DIR/bin/nvcc -O3 -M $$CUDA_INC $$NVCCFLAGS ${QMAKE_FILE_NAME}

cuda.input = CUDA_SOURCES
cuda.output = ${OBJECTS_DIR}${QMAKE_FILE_BASE}_cuda.o
# Tell Qt that we want add more stuff to the Makefile
QMAKE_EXTRA_COMPILERS += cuda

我运行 qmake 来生成 makefile。当我单击“构建”时,出现此错误 -
13:33:35: Running build steps for project CUDA2...
13:33:35: Configuration unchanged, skipping qmake step.
13:33:35: Starting: "/usr/bin/make" -w
make: Entering directory `/home/alex/CUDA2'
Makefile:541: warning: overriding commands for target `Obj/main.o'
Makefile:538: warning: ignoring old commands for target `Obj/main.o'
/usr/local/cuda/bin/nvcc -m64 -O3 -arch=sm_20 -c --compiler-options -fno-strict-aliasing -use_fast_math --ptxas-options=-v -I/usr/local/cuda/include -lcudart -lcuda cuda_interface.cu -o Obj/cuda_interface_cuda.o
ptxas info : Compiling entry function '__cuda_dummy_entry__' for 'sm_20'
ptxas info : Used 2 registers, 32 bytes cmem[0]
g++ -c -pipe -O3 -Wall -W -D_REENTRANT -DQT_WEBKIT -DQT_NO_DEBUG -DQT_CORE_LIB - DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore - I/usr/include/qt4 -I/usr/local/cuda/include -I. -o Obj/main.o main.cpp
gcc -c -pipe -O3 -Wall -W -D_REENTRANT -DQT_WEBKIT -DQT_NO_DEBUG -DQT_CORE_LIB - DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore - I/usr/include/qt4 -I/usr/local/cuda/include -I. -o Obj/cuda_interface.o cuda_interface.cu
gcc: warning: cuda_interface.cu: linker input file unused because linking not done
g++ -Wl,-O1 -o cuda2 Obj/cuda_interface_cuda.o Obj/main.o Obj/main.o Obj/cuda_interface.o -L/usr/local/cuda/lib -L/usr/lib/x86_64-linux-gnu -lcudart -lcuda - lQtCore -lpthread
g++: error: Obj/cuda_interface.o: No such file or directory
make: *** [cuda2] Error 1
make: Leaving directory `/home/alex/CUDA2'
13:33:36: The process "/usr/bin/make" exited with code 2.
Error while building project CUDA2 (target: Desktop)
When executing build step 'Make'

我不确定 .pro 文件是否适用于 Linux。看起来它是为 OSX 制作的。
另外,我不知道 CUDA_ARCH = sm_20 行是否正确。有没有办法找到我的 GPU 架构?我使用的是 NVIDIA Quadro FX 380M

我做错了什么?

谢谢!

最佳答案

根据评论,您的 .pro 文件中存在一些“常见错误”。

首先,CUDA 工具包具有分离的 32 位和 64 位库目录。因此,您需要按如下方式调整 QMAKE_LIBDIR:

QMAKE_LIBDIR += $$CUDA_DIR/lib64 # for 64bits operating system


QMAKE_LIBDIR += $$CUDA_DIR/lib # for 32bits operating system

不要将 .cu 文件作为 SOURCES 包含在 .pro 文件中,因为它们不是用 g++ 编译的。您问题的 .pro 文件没有显示这种情况,但您评论说 .cu 文件在 Qt 的项目中删除它们。

最后,为确保所有更改生效,请在 QT Creator IDE 菜单中执行以下操作:
  • Build -> Clean Project # 清理旧东西
  • 构建 -> 运行 qmake # 以进行 .pro 更改
  • 构建 -> 构建项目 # 明显

  • PS:正如@a​​land 所评论的,您的 GPU 设备计算能力为 1.2,因此调整 CUDA_ARCH = sm_12。

    关于qt - 在 Ubuntu 12.04 上将 CUDA 与 Qt 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10776083/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com