当前位置: 首页 > web >正文

2025最新版使用VSCode和CMake图形化编译调试Cuda C++程序(保姆级教学)

        VSCode+CMake简直就是C++程序开发者的福音,无论是进行Qt开发,音视频开发,后端程序开发,Cuda开发,CMake都是神一样的存在。

        首先确保你已经安装好了Cuda Toolkit,比如我的是Cuda 12.3。

        确保你已经配置了环境变量:

VSCode下载好插件:

        CMakeLists.txt如下:

cmake_minimum_required(VERSION 3.18)
project(CudaTest LANGUAGES CXX CUDA)
# 设置CUDA标准
set(CMAKE_CUDA_STANDARD 17)
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
#设置CUDA架构
set(CMAKE_CUDA_ARCHITECTURES "75")
# 添加CUDA头文件
include_directories("$ENV{CUDA_PATH}/include")
# 添加可执行文件
add_executable(cuda_test  cuda_kernel.cu)

        main.cu如下:

#include <stdio.h>
#include <cuda_runtime.h>// CUDA核函数:执行向量加法
__global__ void vectorAdd(const float *a, const float *b, float *c, int n) {int idx = blockIdx.x * blockDim.x + threadIdx.x;if (idx < n) {c[idx] = a[idx] + b[idx];}
}
// 验证GPU计算结果
void verifyResult(float *a, float *b, float *c, int n) {for (int i = 0; i < n; i++) {if (fabs(a[i] + b[i] - c[i]) > 1e-5) {printf("计算结果错误!\n");return;}}printf("计算结果正确!\n");
}
int main() {const int n = 1000;const int size = n * sizeof(float);float *h_a = (float*)malloc(size);float *h_b = (float*)malloc(size);float *h_c = (float*)malloc(size);for (int i = 0; i < n; i++) {h_a[i] = rand() / (float)RAND_MAX;h_b[i] = rand() / (float)RAND_MAX;}float *d_a, *d_b, *d_c;cudaMalloc(&d_a, size);cudaMalloc(&d_b, size);cudaMalloc(&d_c, size);cudaMemcpy(d_a, h_a, size, cudaMemcpyHostToDevice);cudaMemcpy(d_b, h_b, size, cudaMemcpyHostToDevice);int threadsPerBlock = 256;int blocksPerGrid = (n + threadsPerBlock - 1) / threadsPerBlock;vectorAdd<<<blocksPerGrid, threadsPerBlock>>>(d_a, d_b, d_c, n);cudaMemcpy(h_c, d_c, size, cudaMemcpyDeviceToHost);verifyResult(h_a, h_b, h_c, n);cudaFree(d_a);cudaFree(d_b);cudaFree(d_c);free(h_a);free(h_b);free(h_c);return 0;
}

       创建一个空文件夹:

按下Ctrl shift P:点击CMake:Configure。

选择工具包,必须选择VS2022的amd64架构,不能用mingw!

build文件生成完毕:

        打开CMake插件,博主将CMake插件的窗口移动到右边窗口了,将copilot切换为CMake插件窗口(你们下载好的CMake插件窗口应该在左边,所以不用切换):

点击设置生成目标:

选择main.exe:

点击运行:

编译完成:

输出结果:

至此VSCode加CMake编译cuda程序配置完毕。

http://www.xdnf.cn/news/13802.html

相关文章:

  • IOT集群扩容实践:问题剖析与解决策略
  • Vue 3.6前瞻:响应式性能革命与Vapor模式展望
  • c#.net code httpPost请求,携带文件
  • 更进一步深入的研究ObRegisterCallBack
  • Kotlin 协程与 ViewModel 的完美结合
  • Rust 学习笔记:处理任意数量的 future
  • SQL进阶之旅 Day 28:跨库操作与ETL技术
  • 【C++】入门题目之定义Dog类
  • 三大能力升级,为老项目重构开辟新路径
  • [SPDM]SPDM 证书链验证过程详解
  • linux安装阿里DataX实现数据迁移
  • 组合边缘提取和亚像素边缘提取
  • word表格批量转excel,提取表格数据到excel
  • 企业签名分发跟应用商城分发有什么区别
  • mysql 的卸载- Windows 版
  • 人工智能100问☞第46问:AI是如何“学习”的?
  • VR百科:实景三维重建
  • Java实现国密算法
  • windows下tokenizers-cpp编译
  • FPGA基础 -- 什么是 Verilog 的模块(`module`)
  • 再现重大BUG,微软紧急撤回Win 11六月更新
  • Karate整合PlayWright方式之playWright Driver
  • Vulkan学习笔记4—图形管线基础
  • Visual Studio 里面的 Help Viewer 提示Error: “.cab未经Microsoft签名” 问题解决
  • 【Net】OPC UA(OPC Unified Architecture)协议
  • Fastadmin报错Unknown column ‘xxx.deletetime‘ in ‘where clause
  • [算法][好题分享][第三大的数][最短无序子数组]
  • 小飞电视:智能电视与移动设备的娱乐新选择
  • Meta发布V-JEPA 2世界模型及物理推理新基准,推动AI在物理世界中的认知与规划能力
  • Python 标准库之 os 模块