Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在QtCreator中设置CUDA v7.0(VS 2010)_C++_Windows_Visual Studio 2010_Cuda_Qt Creator - Fatal编程技术网

C++ 在QtCreator中设置CUDA v7.0(VS 2010)

C++ 在QtCreator中设置CUDA v7.0(VS 2010),c++,windows,visual-studio-2010,cuda,qt-creator,C++,Windows,Visual Studio 2010,Cuda,Qt Creator,是否有人在QtCreator中成功使用最新版本的CUDA(即设置.pro文件)?如果是这样,你能和我分享一些简单的例子或教程吗?谢谢 遇到的问题和尝试: 我在QtCreator中设置和编译一个简单的CUDA程序时遇到了麻烦。我读过一些旧的教程(例如),但到目前为止我运气不好 在上面的教程示例中,我无法让QtCreator自己正确构建.cu文件,但我最终能够使用以下nvcc命令行编译.cu文件: nvcc -m32 --gpu-architecture=sm_20 -ccbin "C:\Progr

是否有人在QtCreator中成功使用最新版本的CUDA(即设置.pro文件)?如果是这样,你能和我分享一些简单的例子或教程吗?谢谢

遇到的问题和尝试:

我在QtCreator中设置和编译一个简单的CUDA程序时遇到了麻烦。我读过一些旧的教程(例如),但到目前为止我运气不好

在上面的教程示例中,我无法让QtCreator自己正确构建.cu文件,但我最终能够使用以下nvcc命令行编译.cu文件:

nvcc -m32 --gpu-architecture=sm_20 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin" -I"C:/PROGRA~1/NVIDIA GPU Computing Toolkit/CUDA/v7.0/include"  -lcudart -lcuda ..\CUDA_TEST_EXAMPLE\hello.cu -o ..\Release\release\obj\cuda_code_cuda.obj
因此生成了cuda_code_cuda.obj。当我尝试在Qt中构建项目时,出现了一个错误,错误是:

error: LNK1181: cannot open input file 'C:\PROGRA~1\NVIDIA.obj'
我肯定没有正确链接编译的cuda_code_cuda.obj文件。我认为这与CUDA文件夹路径中的“空格”有关(双引号似乎没有多大帮助)

其他信息:我的pro文件如下所示:

QT       += core
QT       -= gui
TARGET = CUDA_TEST_EXAMPLE
CONFIG   += console
CONFIG   -= app_bundle
TEMPLATE = app

# Define output directories
DESTDIR = release
OBJECTS_DIR = release/obj/
CUDA_OBJECTS_DIR = release/cuda

# Source files
SOURCES += main.cpp
# Cuda sources
OTHER_FILES +=  cuda_code.cu

# CUDA settings <-- may change depending on your system
CUDA_SOURCES += cuda_code.cu
#CUDA_DIR = "C:/PROGRA~1/NVIDIA\ GPU\ Computing\ Toolkit/CUDA/v7.0"                    
# Path to header and libs files
INCLUDEPATH  += "C:\PROGRA~1\NVIDIA GPU Computing Toolkit\CUDA\v7.0\include"
QMAKE_LIBDIR += "C:\PROGRA~1\NVIDIA GPU Computing Toolkit\CUDA\v7.0\lib\Win32"    # Note I'm using a 64 bits Operating system
# libs used in your code
LIBS += -lcudart -lcuda

cuda.output = "C:\Users\johnyang\Documents\Release\release\obj\cuda_code_cuda.obj"

LIBS += "C:\Users\johnyang\Documents\Release\release\obj\cuda_code_cuda.obj"

## Tell Qt that we want add more stuff to the Makefile
QMAKE_EXTRA_COMPILERS += cuda
QT+=core
QT-=gui
目标=CUDA_测试_示例
配置+=控制台
配置-=应用程序包
模板=应用程序
#定义输出目录
DESTDIR=释放
对象\u DIR=释放/obj/
CUDA_OBJECTS_DIR=发布/CUDA
#源文件
SOURCES+=main.cpp
#Cuda来源
其他_文件+=cuda_code.cu

#CUDA设置通过一些测试,我现在成功地设置了pro文件以正确编译。我将此作为一个答案发布,只是为了分享我所得到的。然而,我仍然很好奇,在CUDA的最新版本中,这是否是实现这一点的方法。如果有人能和我确认一下,那就太好了

QT       += core
QT       -= gui

TARGET = CUDA_TEST_EXAMPLE
CONFIG   += console
CONFIG   -= app_bundle
TEMPLATE = app

QMAKE_LFLAGS_RELEASE =/NODEFAULTLIB:msvcrt.lib
QMAKE_LFLAGS_DEBUG =/NODEFAULTLIB:msvcrtd.lib

# Define output directories
DESTDIR = release
OBJECTS_DIR = release\obj
CUDA_OBJECTS_DIR = release/cuda

# Source files
SOURCES += main.cpp
# Cuda sources
#OTHER_FILES +=  cuda_code.cu

# CUDA settings <-- may change depending on your system
CUDA_SOURCES += cuda_code.cu
CUDA_DIR = "C:\PROGRA~1\NVIDIA~2\CUDA\v7.0"            # Path to cuda toolkit install

# Path to header and libs files
INCLUDEPATH  += $$CUDA_DIR/include
QMAKE_LIBDIR += $$CUDA_DIR/lib/Win32    # Note I'm using a 64 bits Operating system
# libs used in your code
LIBS += -lcudart -lcuda

## GPU architecture
CUDA_ARCH     = sm_20                # Yeah! I've a new device. Adjust with your compute capability
## Here are some NVCC flags I've always used by default.
#NVCCFLAGS     = --compiler-options -fno-strict-aliasing -use_fast_math --ptxas-options=-v

## Prepare the extra compiler configuration (taken from the nvidia forum - i'm not an expert in this part)
#CUDA_INC = -I"C:/PROGRA~1/NVIDIA~2/CUDA/v7.0/include"
CUDA_INC = $$join(INCLUDEPATH,' -I','-I',' ')

cuda.commands = $${CUDA_DIR}/bin/nvcc -m32 --gpu-architecture=$$CUDA_ARCH -c \
                $$CUDA_INC $$LIBS  ${QMAKE_FILE_NAME} -o ${QMAKE_FILE_OUT}
# nvcc error printout format ever so slightly different from gcc
# http://forums.nvidia.com/index.php?showtopic=171651

cuda.dependency_type = TYPE_C # there was a typo here. Thanks workmate!
cuda.depend_command = $$(CUDA_DIR)/bin/nvcc $$CUDA_INC ${QMAKE_FILE_NAME}

cuda.input = CUDA_SOURCES
cuda.output = ..\Release/$${OBJECTS_DIR}/${QMAKE_FILE_BASE}_cuda.obj

## Tell Qt that we want add more stuff to the Makefile
QMAKE_EXTRA_COMPILERS += cuda
QT+=core
QT-=gui
目标=CUDA_测试_示例
配置+=控制台
配置-=应用程序包
模板=应用程序
QMAKE\u LFLAGS\u RELEASE=/NODEFAULTLIB:msvcrt.lib
QMAKE_LFLAGS_DEBUG=/NODEFAULTLIB:msvctd.lib
#定义输出目录
DESTDIR=释放
对象\u DIR=release\obj
CUDA_OBJECTS_DIR=发布/CUDA
#源文件
SOURCES+=main.cpp
#Cuda来源
#其他_文件+=cuda_code.cu

#CUDA设置您是否尝试解析空间?尝试用
NVIDIA~1
替换
NVIDIA GPU计算工具包
,我认为qmake命令生成的Makefile会给您一些提示,似乎可以解决问题!!谢谢我希望有人仍然可以告诉我如何设置pro文件,以便它可以在构建项目时自动编译.cu文件。目前,它只在我使用命令行中的nvcc手动构建.cu文件时起作用。实际上,引用的文本被视为一个单独的项,而空格被包含在引用的文本中。因此,它与windows中调用编译器的shell相关。这是因为使用NVIDIA~1是有效的。您需要解析要包含在字符串中的双引号,这在windows和linux中是不同的。