vsCode使用cuda
一、vsCode使用cuda
前情提要:配置好mingw:
1.安装cuda
参考:
**CUDA Toolkit安装教程(Windows):**https://blog.csdn.net/qq_42951560/article/details/116131410
2.在vscode中添加includePath
c_cpp_properties.json添加 cuda的include路径
"includePath": ["${workspaceFolder}/**","C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.1\\include\\**"
],
{"configurations": [{"name": "windows-clang-x64","includePath": ["${workspaceFolder}/**","C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.1\\include\\**"],"compilerPath": "E:/C-software/vs2015/VC/bin/cl.exe","cStandard": "${default}","cppStandard": "${default}","intelliSenseMode": "${default}","compilerArgs": [""]}],"version": 4
}
3.配置run的命令
Code Runner扩展打开,点击扩展设置,进入到setting.json中
给code-runner.executorMap添加
"code-runner.executorMap": {"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt -std=c++14 -I E:\\C-software\\VScode\\MinGW\\mingw64\\include -lopencv_core452 -lopencv_imgcodecs452 -lopencv_imgproc452 -lopencv_calib3d452 -lopencv_dnn452 -lopencv_features2d452 -lopencv_flann452 -lopencv_gapi452 -lopencv_highgui452 -lopencv_ml452 -lopencv_objdetect452 -lopencv_photo452 -lopencv_stitching452 -lopencv_video452 -lopencv_videoio452 && $dir$fileNameWithoutExt","cu": "cd $dir; nvcc $fileName -o $fileNameWithoutExt.exe -I'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.1\\include' && $dir$fileNameWithoutExt"}
上面中的 cpp 添加的是opencv运行时的参数
cu 添加的是cuda运行时的参数
4.测试
使用cuda编程,文件名后缀为.cu
测试代码:hello.cu
#include <stdio.h>
#include <cuda.h>__global__ void hello()
{printf("hello \n");
}int main() {hello<<<1,4 >>>();cudaDeviceSynchronize();return 1;
}
5.可能出现的问题
报错:报错nvcc fatal : Cannot find compiler 'cl.exe' in PATH
参考:https://blog.csdn.net/qq_37960402/article/details/89022534
一般cl.exe的地址是在:你安装的Visual Studio \VS\VC\bin\amd64里面,如果是默认安装的话,这个位置就在C:\Program Files\Microsoft Visual Studio***\VC\bin\amd64
我本机的路径:E:\C-software\vs2015\VC\bin\amd64,把这个路径添加到环境变量中
二、vscode使用第三方库配置
参考:https://www.cnblogs.com/ttyyou/p/13780718.html
https://blog.csdn.net/mantou_riji/article/details/123278824
-
C_Cpp_Properties.json是用于配置编译器环境的,包括启动器代号、位数(这些是自定义的)、编译选项、启动设置、编译模式等。
includePath指向C/C++标准库、用户头文件所在位置。
不需要CMake也可以直接编写C/C++ -
launch.json是vscode用于调试的配置文件,比如指定调试语言环境,指定调试类型等等。我们第一次运行程序的时候,就可以选择让vscode自动帮我们创建出来。我们这里以调试node.js环境为例。- 点击debug时会有一个create a launch.json的链接。
-
tasks.json
(1)作用:tasks.json文件告诉VSCode代码如何编译代码
(2)位置:终端->配置任务 可以打开tasks.json -
launch.json
(1)作用:launch.json 是用于运行和调试的配置文件 -
https://zhouyuming.blog.csdn.net/article/details/105442498?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-105442498-blog-123593009.pc_relevant_multi_platform_whitelistv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-105442498-blog-123593009.pc_relevant_multi_platform_whitelistv2&utm_relevant_index=2
参考:https://blog.csdn.net/Wannna/article/details/105109375?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-105109375-blog-88796413.pc_relevant_aa2&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-105109375-blog-88796413.pc_relevant_aa2&utm_relevant_index=1
https://blog.csdn.net/baidu_38634017/article/details/99875321
1.配置c_cpp_properties.json文件
{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**","${workspaceRoot}","F:\\Project\\SP++3.0\\SP++3.0\\include" /*此处设置为库的include目录下*/],"browse": {"path": ["${workspaceRoot}","F:\\Project\\SP++3.0\\SP++3.0\\lib" /*此处设置为库的lib目录下*/]},"defines": ["_DEBUG","UNICODE","_UNICODE"],"compilerPath": "D:\\mingw64\\bin\\g++.exe", /*此处配置你的编译器路径,没有下载的小伙伴,请百度mingw的安装*/"cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "gcc-x64"}],"version": 4
}
2.配置launch.json
{"version": "0.2.0","configurations": [{"name": "g++.exe build and debug active file","type": "cppdbg","request": "launch","program": "${fileDirname}\\${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false, /*此处设置是否使用外部终端,默认为false(使用内置的终端),如需要可以修改为false*/"MIMode": "gdb","miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe", /*此处设置为你编译器的dbg.exe路径*/"setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "g++.exe build active file"}]
}
3.配置tasks.json
{"version": "2.0.0","tasks": [{"type": "shell","label": "g++.exe build active file","command": "D:\\mingw64\\bin\\g++.exe", /*此处设置为你的编译器路径*/"args": ["-g","${file}","-L'F:\\Project\\SP++3.0\\SP++3.0\\lib'", /*注意,此行指定库的lib目录,默认没有*/"-I'F:\\Project\\SP++3.0\\SP++3.0\\include'", /*此处指定库的include目录,默认没有*/"-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "D:\\mingw64\\bin" /*此处设置你编译器路径的bin目录下*/},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true}}]
}
4.需要注意的是:
1.VScode只是个编译器,并没有自带编译器,所以需要网上自行下载编译器。本文采用的是mingw编译器,需要的小伙伴可以自行百度。
2.本文采用的库是SP++库(别人写的C++信号处理库)为例,其他的库文件可以仿照设置。
3.需要设置的地方我均在代码中用注释的形式标注出来,使用时请将我写的注释删掉(文中为了指出需要设置的地方,才加了此注释)。
4.实际上也可以在vscode的terminal(终端)中使用命令直接运行,不用配置文件,但是为了方便使用,建议配置好文件,方便进行debug之类的操作。可以在命令行使用下列命令进行编译(生成exe二进制文件)(-L指定lib目录,-I指定include目录,xxx.cpp是你需要进行编译的文件,xxx.exe是你要编译的文件的名称)
g++ xxx.cpp -L’xxx\lib’ -I’xxx\include’ -o xxx.exe
1
然后通过下列命令运行生成的二进制文件:
./xxx.exe
相关文章:
vsCode使用cuda
一、vsCode使用cuda 前情提要:配置好mingw: 1.安装cuda 参考: **CUDA Toolkit安装教程(Windows):**https://blog.csdn.net/qq_42951560/article/details/116131410 2.在vscode中添加includePath c_cp…...
ubuntu无法使用apt命令时怎么安装库
如题 因为某些原因,不能直接联网使用apt命令安装库。只能手动去ubuntu镜像源里 找对应的包的deb安装文件 镜像源地址(适用于AMD64架构,就是常见的PC的X86-64啦) 镜像源地址(适用于ARM64,armhf,ppc64el,riscv64,s390x架构ÿ…...
防火墙firewall
一、什么是防火墙 二、iptables 1、iptables介绍 2、实验 138的已经被拒绝,1可以 三、firewalld 1、firewalld简介 关闭iptables,开启firewalld,curl不能使用,远程连接ssh可以使用 添加80端口 这样写也可以:添加http…...
拿来即用,自己封装的 axios
文章目录 一、需求二、分析1. 安装axios2. 新建一个 ts 文件,封装 axios3. store 存放 token 信息4. 使用5. 文件 type.js 一、需求 在日常开发中,我们会经常用到 axios ,那么如何在自己的项目中自己封装 axios 二、分析 1. 安装axios np…...
Hadoop小结(下)
HDFS 集群 HDFS 集群是建立在 Hadoop 集群之上的,由于 HDFS 是 Hadoop 最主要的守护进程,所以 HDFS 集群的配置过程是 Hadoop 集群配置过程的代表。 使用 Docker 可以更加方便地、高效地构建出一个集群环境。 每台计算机中的配置 Hadoop 如何配置集群…...
使用老北鼻AI免费GPT对话解决gun make安装和解析iso9660的问题
在学习解析ISO9660镜像文件时,使用了GPT来了解相关的库和gun make编译器的相关知识。这个过程可真是一言难尽,每个问题的回答都模棱两可都需要去证实,不能直接复制粘贴,也不能说GPT的回答一点用也没有,至少GPT给出了一…...
shell脚本语句
一、语句 一、条件语句 一、以用户为例演示 一、显示当前登录系统的用户信息 w命令 二、显示有多少个用户 w | wc -l 显示有7个用户 前两个是固定标题,从第三个开始才是登录用户,所以要统计数量需要 命令:echo $[$(w | wc -l) -2] 显示…...
【LeetCode】2235.两整数相加
题目 给你两个整数 num1 和 num2,返回这两个整数的和。 示例 1: 输入:num1 12, num2 5 输出:17 解释:num1 是 12,num2 是 5 ,它们的和是 12 5 17 ,因此返回 17 。示例 2&…...
springboot sl4j2 写入日志到mysql
问题描述 springboot初始化的时候,会先初始化日志然后再加载数据源如果用配置文件进行初始化,那么会出现数据源没有加载成功,导致空指针异常 报错排查如下: 搜索报错信息,OBjects.invoke is Null打断点发现。dataso…...
用 PyTorch 编写分布式应用程序
用 PyTorch 编写分布式应用程序 在这个简短的教程中,我们将介绍 PyTorch 的分布式软件包。 我们将了解如何设置分布式设置,使用不同的交流策略以及如何仔细查看软件包的内部结构。 设定 PyTorch 中包含的分布式软件包(即torch.distributed)…...
空间分析专属 Python 学习资料
空间数据分析能够帮助我们更好地理解地理空间中的模式和关系,从而为决策提供支持。例如,城市规划者可以使用空间数据分析来确定城市发展的最佳方向,环境科学家可以使用空间数据分析来评估污染的影响,而商业分析师可以使用空间数据…...
2. Linux Server 20.04 Qt5.14.2配置Jetson Orin Nano Developer Kit 交叉编译环境
最近公司给了我一块Jetson Orin Nano的板子,先刷了系统(1.Jetson Orin Nano Developer Kit系统刷机)又让我搭建交叉编译环境,所以有了下面的文章 一 :Qt5.14.2交叉编译环境安装 1.准备 1.1设备环境 1.1.1 Server: Ubuntu20.0…...
vue入门
Attribute 绑定 v-bind:取值方式 开发前准备 安装node.js需要高于15.0 创建vue项目 npm init vuelatest安装 npm install 启动 npm run dev模板语法 文本插值 {{ 变量 }} <p> {{ mesg }} </p>这种方式公支持单一表达式,也可以是js代码…...
区块链中slot、epoch、以及在slot和epoch中的出块机制,分叉原理(自己备用)
以太坊2.0中有两个时间概念:时隙槽slot 和 时段(周期)epoch。其中一个slot为12秒,而每个 epoch 由 32 个 slots 组成,所以每个epoch共384秒,也就是 6.4 分钟。 对于每个epoch,使用RANDAO伪随机…...
免费开源的vue+express搭建的后台管理系统
此项目已开源 前端git地址:exp后台管理系统前端: exp后台管理系统前端 后端git地址:express后台管理系统: express后台管理系统 安装运行 npm i yarn i 前端: npm run dev | yarn dev 后端: npm run start | yarn start 主要技术栈 前端后端名称版本名…...
【开发】视频云存储EasyCVR视频汇聚平台AI智能算法定制
安防视频集中存储EasyCVR视频汇聚平台,可支持海量视频的轻量化接入与汇聚管理。平台能提供视频存储磁盘阵列、视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联、H.265自动转码等功能。为了便…...
Ribbon:负载均衡及Ribbon
什么是负载均衡? 第一种轮询算法,依次遍历去执行,达到负载均衡 集成Ribbon 导入pom,在消费者服务里的pom文件导入 <!-- Ribbon 集成 --><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spr…...
【声波】声波在硼酸、硫酸镁 (MgSO4) 和纯水中的吸收研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
使用swoole实现实时消息推送给客户端
一. 测试服务端 //测试服务端public function testServer(){$server new Server(192.168.0.144, 9501, SWOOLE_BASE, SWOOLE_SOCK_TCP);$server->on(request, function ($request, $response) {$response->header(Content-Type, text/plain);$response->end("He…...
Ordinals 之后,以太坊铭文协议 Ethscriptions 如何再塑 NFT 资产形态
随着加密市场的发展,NFT 赛道逐渐形成了其独有的市场。但在加密熊市的持续影响下,今年 NFT 赛道的发展充满坎坷与挑战。据 NFTGO 数据显示,截至 8 月 7 日,与去年相比,NFT 市值总计约 56.4 亿美元,过去 1 年…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
