[C++][cuda]vscode上运行cuda hello的cmake项目

测试环境:

vs2022

cmake==3.30.1

cuda12.2+cudnn9.7.1

测试代码:

CMakeLists.txt

cmake_minimum_required(VERSION 3.14)
project(Hello)

set(CMAKE_CXX_STANDARD 14)
find_package(CUDA REQUIRED)

cuda_add_executable(Hello main.cu)

main.cu

#include "cuda_runtime.h"
#include "device_launch_parameters.h"

#include <stdio.h>

__global__ void test(void)  // __global__ 为CUDA的关键字,表示代码在设备端(GPU端)运行, 可以在CPU端被调用
{
    printf("Hello CUDA!\n");
}

int main()
{
    test <<<1, 1 >>> ();  // 函数调用,  <<< >>>中的第一个参数表示块的个数, 第二个参数表示每个线程块中线程的个数
    // 这里是使用一个线程块,这个线程块中只有一个线程执行这个函数.
    cudaDeviceSynchronize(); // 会阻塞当前程序的执行,直到所有任务都处理完毕(这里的任务其实就是指的是所有的线程都已经执行完了kernel function)。
    // 通俗讲,就是等待设备端的线程执行完成
    // 一个线程块中可以有多个线程,GPU的线程是GPU的最小操作单元

    return 0;
}

### 集成CMakeCUDA #### 安装CUDA工具包 为了使项目能够利用CUDA加速,必须先从NVIDIA官方网站下载并安装适合操作系统的CUDA工具包[^1]。 #### 修改`CMakeLists.txt` 在 `cuda-bundle-adjustment` 或者任何希望集成 CUDA 支持的目录下编辑 `CMakeLists.txt` 文件。对于使用 vcpkg 来管理依赖项的情况,在该文件顶部添加如下语句以指定工具链文件的位置: ```cmake set(CMAKE_TOOLCHAIN_FILE "/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake" CACHE STRING "") ``` 其中 `/path/to/vcpkg` 应替换为实际的 vcpkg 安装路径[^2]。 #### 启用CUDA支持 通过设置特定变量开启 OpenCV 对 CUDA 的支持以及其他相关选项。例如: ```cmake option(WITH_CUDA "Build with CUDA support" ON) if(WITH_CUDA) find_package(CUDA REQUIRED) endif() ``` 这段代码片段展示了如何有条件地启用 CUDA 功能;当定义了 `WITH_CUDA` 变量时,则尝试查找所需的 CUDA 组件。 #### 指定架构目标 可以进一步定制编译行为,比如指明 GPU 架构的目标版本号。这可以通过调整 `CUDA_GENERATION` 或 `CUDA_ARCH_BIN` 参数完成。由于官方文档未对此类参数做详尽描述,建议查阅 `cmake/OpenCVDetectCUDA.cmake` 获取更多信息。 #### 示例:编写简单的CUDA程序并与CMake配合工作 下面给出一段完整的例子,展示了一个基本的 CMake 项目结构以及它怎样调用内含 CUDA 函数的应用程序源码。 创建一个新的 C++ 源文件 `main.cpp` 如下所示: ```cpp #include <iostream> extern void hello_from_cuda(); int main() { std::cout << "Hello from host!" << std::endl; hello_from_cuda(); } ``` 接着准备一个对应的 `.cu` 文件 `kernel.cu` 实现上述声明的方法: ```cuda __global__ void say_hello(){ printf("Hello from device!\n"); } void hello_from_cuda(){ say_hello<<<1,1>>>(); cudaDeviceSynchronize(); // Wait for kernel to finish before exiting. } ``` 最后更新 `CMakeLists.txt` 文件来处理这两个新的输入文件: ```cmake project(MyProject) find_package(CUDA REQUIRED) add_executable(${PROJECT_NAME} main.cpp kernel.cu) target_include_directories(${PROJECT_NAME} PRIVATE ${CUDA_INCLUDE_DIRS}) target_link_libraries(${PROJECT_NAME} ${CUDA_LIBRARIES}) ``` 这样就完成了整个项目的搭建流程,现在应该可以在命令行中运行 cmake 命令来进行构建,并最终得到包含GPU计算能力在内的可执行文件[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FL1623863129

你的打赏是我写文章最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值