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

VScode编译调试debug,gpu的cuda程序,Nsight

进行下面操作的前提是,我们的环境已经能跑简单的CUDA程序了。

一、安装Nsight

二、创建launch.json文件

{"version": "0.2.0","configurations": [{"name": "CUDA C++: Launch","type": "cuda-gdb","request": "launch","program": "${fileDirname}/main","preLaunchTask": "mynvcc","args": ["1024"]  // 示例:传递向量大小作为参数}]
}

 

三、创建task.json文件

{"version": "2.0.0","tasks": [{"label": "mynvcc","type": "shell","command": "nvcc","args": ["-g","-G","-o","${fileDirname}/main","${file}","-I", "/usr/local/cuda/include","-L", "/usr/local/cuda/lib64","-l", "cudart","-D_MWAITXINTRIN_H_INCLUDED"],"group": {"kind": "build","isDefault": true},"problemMatcher": ["$gcc"]}]
}

 四、创建main.cu

注意:名称一定是main.cu,和上面的json文件中的main对应。

#include <cuda.h> 
#include <iostream> 
#include <vector> 
using namespace std;// Add A and B vector on the GPU. Results stored into C
__global__
void addKernel(int n, float* A, float* B, float* C)
{int i = blockIdx.x*blockDim.x + threadIdx.x;if(i < n) C[i] = A[i] + B[i];
}// Add A and B vector. Results stored into C
int add(int n, float* h_A, float* h_B, float* h_C)
{int size = n*sizeof(float);// Allocate memory on device and copy datafloat* d_A;cudaMalloc((void**)&d_A, size);cudaMemcpy(d_A, h_A, size, cudaMemcpyHostToDevice);float* d_B;cudaMalloc((void**)&d_B, size);cudaMemcpy(d_B, h_B, size, cudaMemcpyHostToDevice);float* d_C;cudaMalloc((void**)&d_C, size);// launch Kernelcout << "Running 256 threads on " << ceil(n/256.0f) << " blocks -> " << 256*ceil(n/256.0f) << endl;addKernel<<<ceil(n/256.0f),256>>>(n, d_A, d_B, d_C);// Transfer results back to hostcudaMemcpy(h_C, d_C, size, cudaMemcpyDeviceToHost);// Free device memorycudaFree(d_A);cudaFree(d_B);cudaFree(d_C);return 0;
}// C = A + B on a GPU, where A is a vector of 1.0f and B a vector of 2.0f
// The main function takes one argument, the size of the vectors
int main(int argc, char* argv[])
{int n = atoi(argv[1]);vector<float> h_A(n, 1.0f);vector<float> h_B(n, 2.0f);vector<float> h_C(n);add(n, h_A.data(), h_B.data(), h_C.data());for(auto& c : h_C) {if(fabs(c-3.0f) > 0.00001f) {cout << "Error!" << endl;return 1;}}cout << "The program completed successfully" << endl;return 0;
}

五、编译main.cu

nvcc -g -G -o main main.cu

 六、开始调试

进入main.cu文件,打上断点,按F5,开始debug调试。

按F5后可能会出现警告,点击 无论如何继续,能调试就行,先别管乱起八糟的。

相关文章:

VScode编译调试debug,gpu的cuda程序,Nsight

进行下面操作的前提是&#xff0c;我们的环境已经能跑简单的CUDA程序了。 一、安装Nsight 二、创建launch.json文件 {"version": "0.2.0","configurations": [{"name": "CUDA C: Launch","type": "cuda-gdb…...

中企出海大会|打造全球化云计算一张网,云网络助力中企出海和AI创新

全球化是阿里云的长期战略&#xff0c;未来阿里云将持续加大云和 AI 基础设施建设投入。首先是加速打造全球化的云计算网络&#xff0c;一张具备 AI技术服务能力和全球竞争力的云计算网络是阿里云的长期目标。 —— 阿里巴巴集团 CEO、阿里云智能集团董事长兼 CEO 吴泳铭 5 月 …...

qwen-0.5b小模型的用处和显存要求

详细分析一下 Qwen-0.5B (5亿参数) 这个模型在不同训练阶段的显存需求以及它的用途。&#xff08;根据网页反馈&#xff1a;1、0.5b做蒸馏&#xff0c;特定领域轻松超越sft的7b&#xff1b;2、大部分实时要求高的业务需要用小模型初筛降量&#xff0c;比如意图识别&#xff1b;…...

防范DDoS攻击,服务器稳定性崩溃的根源与高效防御对策

DDoS攻击&#xff08;分布式拒绝服务攻击&#xff09;已成为危害服务器稳定性和业务连续性的主要因素之一。本文将深入探讨为什么服务器一遇到DDoS攻击就崩溃&#xff0c;以及如何从根本上实现有效防御和应对这一威胁&#xff0c;帮助企业提升网络安全水平。 具体内容如下&…...

深入理解 SELinux:通过 Nginx 和 SSH 服务配置实践安全上下文与端口策略

目录 一、引言 二、实验环境说明 三、实验 1&#xff1a;Nginx 服务安全上下文配置 3.1 实验目标 3.2 操作步骤 1. 开启 SELinux 并重启系统 2. 安装 Nginx 并创建自定义目录 3. 配置 Nginx 指向自定义目录 4. 分析 SELinux 上下文冲突 5. 修改上下文为合法类型 6. 验…...

C++ —— STL容器——string类

1. 前言 本篇博客将会介绍 string 中的一些常用的函数&#xff0c;在使用 string 中的函数时&#xff0c;需要加上头文件 string。 2. string 中的常见成员函数 2.1 初始化函数 string 类中的常用的初始化函数有以下几种&#xff1a; 1. string() …...

用JS实现植物大战僵尸(前端作业)

1. 先搭架子 整体效果&#xff1a; 点击开始后进入主场景 左侧是植物卡片 右上角是游戏的开始和暂停键 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevic…...

Rust Mock 工具

Rust Mock 工具 Mock&#xff08;模拟&#xff09;是测试中不可或缺的工具&#xff0c;用来替代复杂或不可控的依赖&#xff0c;比如数据库、网络服务等&#xff0c;帮助我们写出高质量、健壮的测试代码。Rust 社区中&#xff0c;mockall 和 mockito 是两款主流且强大的 Mock …...

C++读写锁以及实现方式

文章目录 【C专题】读写锁&#xff08;Reader-Writer Lock&#xff09;原理与实现方式&#xff08;含C11/20实践&#xff09;一、读写锁核心概念1. **什么是读写锁&#xff1f;**2. **读写锁 vs 互斥锁** 二、C中的读写锁实现方式 方案一&#xff1a;POSIX 读写锁&#xff08;p…...

Electron-vite【实战】MD 编辑器 -- 文件列表(含右键快捷菜单,重命名文件,删除本地文件,打开本地目录等)

最终效果 页面 src/renderer/src/App.vue <div class"dirPanel"><div class"panelTitle">文件列表</div><div class"searchFileBox"><Icon class"searchFileInputIcon" icon"material-symbols-light:…...

华为云Flexus+DeepSeek征文|华为云Flexus云服务器X实例上部署Dify:打造高效的开源大语言模型应用开发平台

目录 前言 1 Dify与华为云部署概述 1.1 什么是 Dify 1.2 华为云与 Flexus 云服务器的优势 2 云服务器部署 Dify 的步骤详解 2.1 模板选择 2.2 参数配置 2.3 资源栈设置 2.4 确认部署信息并执行 3 部署成功后的操作与平台使用指南 3.1 访问平台 3.2 设置管理员账号 …...

[git每日一句]Your branch is up to date with ‘origin/master‘

这句话是 Git 版本控制系统的提示信息&#xff0c;意思是&#xff1a; "你当前所在的分支已经与远程仓库&#xff08;origin&#xff09;的 master 分支同步&#xff0c;没有需要推送的提交。" 详细解释&#xff1a; Your branch - 指你当前所在的本地分支 is up …...

高密爆炸警钟长鸣:AI为化工安全戴上“智能护盾”

一、高密爆炸&#xff1a;一声巨响&#xff0c;撕开化工安全“伤疤” 2025年5月27日&#xff0c;山东高密友道化学有限公司的车间爆炸声&#xff0c;像一把利刃划破了化工行业的平静。剧烈的冲击波将车间夷为平地&#xff0c;黑色蘑菇云腾空而起&#xff0c;刺鼻的化学气味弥漫…...

机器人学基础——正运动学(理论推导及c++实现)

机器人正运动学 机器人正运动学一般是指从机器人的关节位置到基于参考坐标系下末端执行器的位置。 平移变换和旋转变换 平移变换 假设我们有两个坐标系A和B&#xff0c;坐标系A与B的方位相同&#xff0c;xyz轴的指向都是一致的&#xff0c;即没有旋转变换。有一点p&#xf…...

[网页五子棋][对战模块]处理连接成功,通知玩家就绪,逻辑问题(线程安全,先手判定错误)

文章目录 处理连接成功通知玩家就绪逻辑图问题 1&#xff1a;线程安全问题 2&#xff1a;先手判定错误两边都是提示&#xff1a;轮到对方落子![image.png](https://i-blog.csdnimg.cn/img_convert/c570cd26eadbe87ed467bc4edaa7945e.png) 处理连接成功 实现 GameAPI 的 afterC…...

TensorFlow Extended (TFX) 生产环境模型版本控制与回滚实战指南

TFX 版本控制核心架构 TFX 通过以下组件构建完整的模型生命周期管理系统&#xff1a; ​​ML Metadata (MLMD)​​&#xff1a;记录所有实验和管道的元数据​​Pusher 组件​​&#xff1a;负责模型部署与版本标记​​Model Registry​​&#xff1a;集中式模型存储库&#x…...

【Web应用】若依框架:基础篇11功能详解-系统接口

文章目录 ⭐前言⭐一、课程讲解⭐二、自己动手实操⭐总结 标题详情作者JosieBook头衔CSDN博客专家资格、阿里云社区专家博主、软件设计工程师博客内容开源、框架、软件工程、全栈&#xff08;,NET/Java/Python/C&#xff09;、数据库、操作系统、大数据、人工智能、工控、网络、…...

【Docker项目实战篇】Docker部署PDF查看器PdfDing

【Docker项目实战篇】Docker部署PDD查看器PdfDing 一、PdfDing介绍1.1 PdfDing简介1.2 PdfDing主要特点1.3 主要使用场景 二、本次实践规划2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Pd…...

Redis 常用数据类型和命令使用

目录 1 string 2 hash 3 list 4 set集合 5 zset有序集合 1 string 值可以是字符串、数字和二进制的value&#xff0c;值最大不能超过512MB 应用场景&#xff1a; 应用程序缓存 计数器 web共享session 限速 1.1 设置单个键值 set <key> value [EX seconds|PX…...

【Linux系统】第八节—进程概念(上)—冯诺依曼体系结构+操作系统+进程及进程状态+僵尸进程—详解!

hi&#xff0c;我是云边有个稻草人 偶尔中二的博主^(*&#xffe3;(oo)&#xffe3;)^&#xff0c;与你分享专业知识&#xff0c;祝博主们端午节快乐&#xff01; Linux—本节博客所属专栏—持续更新中—欢迎订阅&#xff01; 目录 一、冯诺依曼体系结构 二、操作系统(Opera…...

WPF 全局加载界面、多界面实现渐变过渡效果

WPF 全局加载界面与渐变过渡效果 完整实现方案 MainWindow.xaml <Window x:Class"LoadingScreenDemo.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml&quo…...

WebSocket与实时对话式AI服务的集成

WebSocket与实时对话式AI服务的集成 在现代对话式AI系统中,传统的HTTP请求-响应模型已难以满足实时交互的体验需求。特别是用户对响应速度、逐字输出、会话上下文保持等方面提出更高要求时,需要一种能够建立持久连接并支持双向通信的协议。WebSocket正是在这一背景下,成为A…...

【xmb】】内部文档148344599

这里写自定义目录标题 CyberDog 2 仿真智能物流配送系统 – 初赛设计报告摘要目录1 引言2 任务与需求分析3 系统总体设计4 核心算法与模块实现5 仿真测试与结果分析6 结论与展望 CyberDog 2 仿真智能物流配送系统 – 初赛设计报告 团队名称&#xff1a; &#xff08;晚点写&am…...

MobaXterm国内下载与安装使用教程

MobaXterm是一款为 Windows 用户量身打造的远程终端工具&#xff0c;它将多种网络功能集成在一个轻量级、便携式的界面中&#xff0c;尤其适合需要频繁与远程主机交互的开发者、系统运维工程师以及科研技术人员。无论是管理 Linux 服务器、远程执行命令&#xff0c;还是图形化运…...

数据结构——优先级队列(PriorityQueue)

1.优先级队列 优先级队列可以看作队列的另一个版本&#xff0c;队列的返回元素是由是由插入顺序决定的&#xff0c;先进先出嘛&#xff0c;但是有时我们可能想要返回优先级较高的元素&#xff0c;比如最大值&#xff1f;这种场景下就由优先级队列登场。 优先级队列底层是由堆实…...

代谢组数据分析(二十六):LC-MS/MS代谢组学和脂质组学数据的分析流程

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包依赖包安装包加载需要的R包数据下载以及转换mzML数据预处理代谢物注释LipidFinder过滤MultiABLER数据预处理过滤补缺失值对数变换数据标准化下游数据分析总结系统信息参考介…...

服务器上用脚本跑python深度学习的注意事项(ubantu系统)

bash: $\r: command not found 问题原因&#xff1a; 出现 bash: $\r: command not found 以及路径中出现 \r 通常是因为脚本文件是在Windows系统下编辑&#xff0c;然后在Linux&#xff08;如Ubuntu&#xff09;系统中运行。在Windows系统中&#xff0c;文本文件的换行符是 \…...

【ARM】【FPGA】【硬件开发】Chapter.1 AXI4总线协议

Chapter.1 AXI4总线协议 作者&#xff1a;齐花Guyc(CAUC) 一、总线介绍 AXI4总线 AXI4总线就像是SoC内部的“高速公路”&#xff0c;负责在不同硬件模块之间高效传输数据。 AXI4协议通过 5个独立通道 传输数据和控制信号&#xff0c;每个通道都有自己的信号线&#xff0c;互…...

青少年编程与数学 02-020 C#程序设计基础 10课题、桌面应用开发

青少年编程与数学 02-020 C#程序设计基础 10课题、桌面应用开发 一、桌面应用1. 主要特点2. 常见类型3. 优势4. 局限性 二、开发步骤1. 准备工作2. 创建项目3. 开发应用4. 运行调试5. 打包发布 三、Windows 窗体应用&#xff08;一&#xff09;定义&#xff08;二&#xff09;特…...

把 jar 打包成 exe

1. 把自己的项目先正常打成jar包 2. 使用exe4j工具将jar转换为exe 2.1 exe4j下载地址&#xff1a;https://www.ej-technologies.com/download/exe4j/files 2.2 下载完成之后激活 2.3 可以点击Change License&#xff0c;输入秘钥L-g782dn2d-1f1yqxx1rv1sqd 2.4 直接下一步…...