我见过许多将 QtCreator 与 CUDA 结合起来的旧尝试,但它们都不再起作用了。
所以我开始这个话题,以便为每个人提供一个新的参考。
首先,我尝试使用以下命令编译书中提到的代码:
nvcc seqCuda.cu -o seqCuda
但我得到了错误:类型名称“size_t”的无效重新声明。
我唯一能做的就是使用 Visual Studio 2010 编译《CUDA 应用程序设计与开发》一书中的示例代码;但是,VS2010 不是我想要使用的环境。所以我去日志文件并获取它使用的执行命令,它是以下内容:
nvcc -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl-version 2010 -ccbin "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.1\include" --keep-dir "Release" -maxrregcount=0 --machine 32 --compile -Xcompiler "/EHsc /nologo /Od /Zi /MD " -o "Release\main.cu.obj" "C:\Users\Sam\Documents\Visual Studio 2010\Projects\CUDA_TestVS2010\CUDA_TestVS2010\main.cu"
此命令创建一个目标文件。我可以成功地为 seqCuda.cu 中的示例代码执行它,但我不知道如何从目标文件转到可执行文件。我想在 Qt 中使用 qmake 文件来做到这一点。
谁能告诉我这个编译命令的重要部分是什么,以及如何在 qmake 文件中以正确的方式合并它?
现在我的问题是,我试图反汇编这个命令并用 qmake 重写它,是的,我在黑暗中刺伤,并且无法获得任何令人满意的结果。以下是我在 qmake 中的“尝试”。如果您可以将以下 qmake 中的任何命令替换为环境变量,我将不胜感激,尤其是 VC2010 bin 目录。
win32 {
INCLUDEPATH += $(CUDA_INC_PATH)
QMAKE_LIBDIR += $(CUDA_LIB_PATH)
ARCFLAGS = -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env
VSVERSIONFLAGS = --cl-version 2010
VSDIRFLAG = -ccbin "c:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin"
OTHERFLAGS = -maxrregcount=0 --machine 32 --compile
-Xcompiler "/EHsc /nologo /Od /Zi /MD "
LIBS += -lcudart
cuda.output = ./${QMAKE_FILE_BASE}_cuda.obj
cuda.commands = $(CUDA_BIN_PATH)/nvcc.exe $$ARCFLAGS $$VSVERSIONFLAGS $$VSDIRFLAG -
I$(CUDA_INC_DIR) $$OTHERFLAGS
}
CUDA_SOURCES += seqCuda.cu
cuda.input = CUDA_SOURCES
QMAKE_EXTRA_COMPILERS += cuda