Ubuntu上使用QT creator运行cuda程序

突发奇想想尝试一下QT界面中使用CUDA加速过的程序,然后查了一下资料,总结一下有以下几点吧

1、CUDA配置全部放在.pro文件中

2、main.cpp为主函数使用g++编译

3、kernel.cu为核函数使用nvcc编译

不多说上代码


以下为main.cpp代码

#include <QtCore/QCoreApplication>

extern "C"
void runCudaPart();

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

以下为kernel.cu代码

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

#include <cuda_runtime.h>

    #include <stdio.h>

    extern "C"
//Adds two arrays
    void runCudaPart();


    __global__ void addAry( int * ary1, int * ary2 )
    {
    int indx = threadIdx.x;
    ary1[ indx ] += ary2[ indx ];
}


// Main cuda function

void runCudaPart() {

    int ary1[32];
    int ary2[32];
    int res[32];

    for( int i=0 ; i<32 ; i++ )
    {
        ary1[i] = i;
        ary2[i] = 2*i;
        res[i]=0;
    }

    int * d_ary1, *d_ary2;
    cudaMalloc((void**)&d_ary1, 32*sizeof(int));
    cudaMalloc((void**)&d_ary2, 32*sizeof(int));


    cudaMemcpy((void*)d_ary1, (void*)ary1, 32*sizeof(int), cudaMemcpyHostToDevice);
    cudaMemcpy((void*)d_ary2, (void*)ary2, 32*sizeof(int), cudaMemcpyHostToDevice);


    addAry<<<1,32>>>(d_ary1,d_ary2);

    cudaMemcpy((void*)res, (void*)d_ary1, 32*sizeof(int), cudaMemcpyDeviceToHost);
    for( int i=0 ; i<32 ; i++ )
        printf( "result[%d] = %d\n", i, res[i]);


    cudaFree(d_ary1);
    cudaFree(d_ary2);
}

以下为配置文件cudaQT.pro

QT       += core

QT       -= gui

TARGET = cudaQTS
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp


# This makes the .cu files appear in your project
OTHER_FILES +=  ./kernel.cu

# CUDA settings <-- may change depending on your system
CUDA_SOURCES += ./kernel.cu
CUDA_SDK = "/usr/local/cuda-7.5/"   # Path to cuda SDK install
CUDA_DIR = "/usr/local/cuda-7.5/"            # Path to cuda toolkit install

# DO NOT EDIT BEYOND THIS UNLESS YOU KNOW WHAT YOU ARE DOING....

SYSTEM_NAME = ubuntu         # Depending on your system either 'Win32', 'x64', or 'Win64'
SYSTEM_TYPE = 64            # '32' or '64', depending on your system
CUDA_ARCH = sm_50           # Type of CUDA architecture, for example 'compute_10', 'compute_11', 'sm_10'
NVCC_OPTIONS = --use_fast_math


# include paths
INCLUDEPATH += $$CUDA_DIR/include

# library directories
QMAKE_LIBDIR += $$CUDA_DIR/lib64/

CUDA_OBJECTS_DIR = ./


# Add the necessary libraries
CUDA_LIBS = -lcuda -lcudart

# The following makes sure all path names (which often include spaces) are put between quotation marks
CUDA_INC = $$join(INCLUDEPATH,'" -I"','-I"','"')
#LIBS += $$join(CUDA_LIBS,'.so ', '', '.so')
LIBS += $$CUDA_LIBS

# Configuration of the Cuda compiler
CONFIG(debug, debug|release) {
    # Debug mode
    cuda_d.input = CUDA_SOURCES
    cuda_d.output = $$CUDA_OBJECTS_DIR/${QMAKE_FILE_BASE}_cuda.o
    cuda_d.commands = $$CUDA_DIR/bin/nvcc -D_DEBUG $$NVCC_OPTIONS $$CUDA_INC $$NVCC_LIBS --machine $$SYSTEM_TYPE -arch=$$CUDA_ARCH -c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}
    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}_cuda.o
    cuda.commands = $$CUDA_DIR/bin/nvcc $$NVCC_OPTIONS $$CUDA_INC $$NVCC_LIBS --machine $$SYSTEM_TYPE -arch=$$CUDA_ARCH -c -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}
    cuda.dependency_type = TYPE_C
    QMAKE_EXTRA_COMPILERS += cuda
}



结果图,能编译并运行


后续可以试试把一个大工程塞进来

  • 9
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
### 回答1: Qt Creator是一个跨平台的集成开发环境(IDE),可以用于开发C++应用程序。而CUDA是一种用于在NVIDIA GPU上进行并行计算的平行计算平台和API模型。 要在Qt Creator使用CUDA,需要按照以下步骤进行设置: 1. 确保你已经正确安装了NVIDIA显卡驱动和CUDA Toolkit。可以在NVIDIA官网下载并安装它们。 2. 打开Qt Creator,并创建一个新的Qt项目或者打开一个现有的项目。 3. 在项目文件(.pro)添加以下内容: ``` CUDA_SOURCES += your_cuda_file.cu CUDA_DIR = /path/to/cuda CUDA_ARCH = sm_35 ``` 其,`your_cuda_file.cu`是你的CUDA源文件的名称,`CUDA_DIR`是CUDA的安装路径,`CUDA_ARCH`是你的GPU架构版本。你可以根据自己的情况调整这些参数。 4. 在Qt Creator的项目设置,添加CUDA模块。选择“构建&运行” → “Kits” → “Qt” → “Add”,然后选择CUDA模块。 5. 在Qt Creator编写和调试CUDA代码。你可以使用CUDA C/C++语言编写CUDA核函数,并在主机代码调用它们。可以使用Qt Creator的调试器来进行调试和分析。 需要注意的是,Qt Creator本身并不提供CUDA的开发支持,但它可以与CUDA一起使用,以便在创建和管理CUDA项目时提供方便的开发环境。 ### 回答2: Qt Creator是一个集成开发环境,可以用于开发和调试Qt应用程序。它集成了众多开发工具和插件,使得开发者可以更加方便地进行程序开发和调试。 CUDA是NVIDIA推出的一种并行计算技术,主要适用于处理大规模的科学计算和图形处理任务。它利用GPU的并行计算能力,可以显著提高计算效率。 如果我们希望在Qt Creator使用CUDA进行开发,首先需要安装NVIDIA CUDA Toolkit。然后,在Qt Creator进行如下配置: 1. 打开Qt Creator,选择“菜单栏 -> 工具 -> 选项”,进入选项设置界面。 2. 在左侧边栏选择“建构和运行”选项。 3. 在右侧区域选择“Kits”选项卡,并点击“添加”按钮,添加一个新的Kit。 4. 在新弹出的对话框,选择“CUDA Application”作为新的Kit类型,并点击“下一步”按钮。 5. 在“名称”输入框输入Kit的名称,并选择已安装的CUDA版本。 6. 在“设备”区域,选择与您的CUDA版本和硬件兼容的设备。 7. 在“编译套件”区域,选择与您的CUDA版本兼容的编译器。 8. 点击“完成”按钮完成Kit的创建和配置。 配置完成后,您就可以在Qt Creator使用CUDA进行开发了。可以在Qt Creator的项目添加CUDA的源文件,并通过设置编译选项来指定CUDA的相关参数。然后,您可以编译和运行CUDA应用程序,并通过Qt Creator的调试工具来调试您的代码。 需要注意的是,使用CUDA进行开发需要具备一定的CUDA编程基础和GPU编程知识。此外,您还需要确保GPU驱动程序CUDA Toolkit已正确安装和配置。因此,在使用Qt Creator进行CUDA开发之前,建议您先学习和了解CUDA的基本概念和编程技术,以充分发挥其在并行计算方面的优势。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值