vsCode使用cuda

news2024/9/26 3:24:13

一、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
}
image-20220705115205817

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/899568.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VS2015打开Qt的pro项目文件 报错

QT报错&#xff1a;Project ERROR: msvc-version.conf loaded but QMAKE_MSC_VER isn‘t set 解决方法&#xff1a; 找到本机安装的QT路径&#xff0c;找到“msvc-version.conf”文件&#xff0c;用记事本打开&#xff0c; 在其中添加版本“QMAKE_MSC_VER 1900”保存即可。 …

2023-8-18 二进制中1的个数

题目链接&#xff1a;二进制中1的个数 #include <iostream>using namespace std;int lowbit(int x) {return x&-x; }int main() {int n;cin >> n;for(int i 0; i < n; i){int x;cin >> x;int res 0;while(x) x - lowbit(x), res;cout << re…

sql:知识点记录一

1.Mysql逻辑架构&#xff1a;连接层、服务层、引擎层、存储层 2.show engines&#xff1a;查看存储引擎 3.Mysql两种存储引擎的区别&#xff1a; 建立索引&#xff1a;比如说用户很喜欢用name去查询表&#xff0c;就可以给数据库的name字段建立索引&#xff0c;提高查询效率&a…

stm32开关控制led灯泡(附Proteus电路图)

说明&#xff1a;我的灯泡工作电压2V&#xff0c;电流设置为10um,注意了不是10毫安时微安啊&#xff0c;要不然电流太小亮不起来的。 2&#xff1a;我用的开关不是按钮button而是switch, 3&#xff1a;PB0,PB1默认都是低电平&#xff0c;采用了PULLDOWN模式&#xff0c;如果设…

【Alibaba中间件技术系列】「RocketMQ技术专题」让我们一起探索一下DefaultMQPullConsumer的实现原理及源码分析

前提介绍 在RocketMQ中一般有两种获取消息的方式&#xff0c;一个是拉(pull&#xff0c;消费者主动去broker拉取)&#xff0c;一个是推(push&#xff0c;主动推送给消费者)&#xff0c;在上一章节中已经介绍到了相关的Push操作&#xff0c;接下来的章节会介绍Pull操作方式的消…

LRU 算法

LRU 缓存淘汰算法就是一种常用策略。LRU 的全称是 Least Recently Used&#xff0c;也就是说我们认为最近使用过的数据应该是是「有用的」&#xff0c;很久都没用过的数据应该是无用的&#xff0c;内存满了就优先删那些很久没用过的数据。 力扣&#xff08;LeetCode&#xff09…

【最全】Python连接数据库取数与写入数据

不管是做数据分析还是风控建模&#xff0c;都避免不了从数据库中取数&#xff0c;和把数据写入数据库。本文整理连接数据库的不同方法&#xff0c;以及单条写入数据和批量写入数据。所有代码都实测可用&#xff0c;并实际应用于生产&#xff0c;分享给更多在这方面遇到困难的朋…

零基础自学:2023 年的今天,请谨慎进入网络安全行业

前言 2023 年的今天&#xff0c;慎重进入网安行业吧&#xff0c;目前来说信息安全方向的就业对于学历的容忍度比软件开发要大得多&#xff0c;还有很多高中被挖过来的大佬。 理由很简单&#xff0c;目前来说&#xff0c;信息安全的圈子人少&#xff0c;985、211 院校很多都才…

AI 绘画Stable Diffusion 研究(十二)SD数字人制作工具SadTlaker插件安装教程

免责声明: 本案例所用安装包免费提供&#xff0c;无任何盈利目的。 大家好&#xff0c;我是风雨无阻。 想必大家经常看到&#xff0c;无论是在产品营销还是品牌推广时&#xff0c;很多人经常以数字人的方式来为自己创造财富。而市面上的数字人收费都比较昂贵&#xff0c;少则几…

​网安板块是真风口还是炒作?

看需求&#xff0c;官方明确要求政企等在网安上投入的比重不低于10%&#xff0c;而当前&#xff0c;信息安占IT的投入比重不到3%&#xff01;即使是政府对网安和IT合规的要求高&#xff0c;占比高达23.7%&#xff0c;但是全国平均下来也不过5%&#xff0c;距离10%的投入要求&am…

中断之MSI和MSI-X的区别详细总结附图文快速掌握

目录 一、整体介绍二、MSI和MSI-X对比2.1 中断向量连续2.2 映射区域区别2.3 MSI-X配置空间2.3.1 MSI-X Capbility介绍2.3.2 Capbility ID介绍2.3.3 Message Control介绍2.3.4 MSI-X Table介绍2.3.5 MSI-X Pending Table&#xff08;PBA&#xff09;介绍 三、MSI 处理过程3.1 Me…

wsl,字体乱码问题

配置wsl&#xff0c;字体乱码问题 一、前言 用zsh配置好wsl&#xff0c;每次打开还是会出现乱码&#xff0c;只有再新打开一个终端才会显示字体 如下图&#xff1a;第一次打开&#xff0c;出现乱码 如图&#xff1a;按加号&#xff0c;再开一个新终端才会显示字体。 二、解…

IDEA:Error running,Command line is too long. 解决方法

报错如下&#xff1a; Error running SendSmsUtil. Command line is too long. Shorten the command line via JAR manifest or via a classpath file and rerun.原因是启动命令过长。 解决方法&#xff1a; 1、打开Edit Configurations 2、点击Modify options设置&#x…

React(6)

1.React插槽 import React, { Component } from react import Child from ./compoent/Childexport default class App extends Component {render() {return (<div><Child><div>App下的div</div></Child></div>)} }import React, { Compon…

remove、remove_if、remove_copy、remove_copy_if

remove(b,e,v) //[b,e) 删value remove_if(b,e,p) //[b,e) 删p条件 remove_copy(b,e,r,v) //[b,e) 删v&#xff0c;结果存入r remove_copy_if(b,e,r,p) //[b,e) 删p条件&#xff0c;结果存入r remove和remove_if结果相同&#xff0c;只是传入的条件不一样。示例图如下&#xf…

如何用输入函数为数组赋值

在编写程序时我们经常使用数组&#xff0c;而数组的大小可能是很大的但是我们并不需要为每个元素都自己赋值&#xff0c;我们可能会自定义输入数组元素个数&#xff0c;我们应该如何实现通过输入函数为数组赋值呢&#xff1f; 目录 第一种&#xff1a; 第二种&#xff1a; 第一…

信号量与管程

前言 我们知道&#xff0c;在并发领域内&#xff0c;需要关注分工、同步与互斥&#xff0c;针对分工问题&#xff0c;就是将任务拆解&#xff0c;分配给多个线程执行&#xff0c;而在多线程执行的过程中&#xff0c;需要解决线程之间的协作与互斥问题进而保证并发安全。那么解…

day-25 代码随想录算法训练营(19)回溯part02

216.组合总和||| 思路&#xff1a;和上题一样&#xff0c;差别在于多了总和&#xff0c;但是数字局限在1-9 17.电话号码的字母组合 思路&#xff1a;先纵向遍历第i位电话号码对于的字符串&#xff0c;再横向递归遍历下一位电话号码 93.复原IP地址 画图分析&#xff1a; 思…

OpenLayers实战,OpenLayers实现地图鼠标经过点要素时显示名称标注提示框,移出后隐藏

专栏目录: OpenLayers实战进阶专栏目录 前言 本章讲解OpenLayers实现地图鼠标经过点要素时显示名称标注提示框,移出后隐藏的功能。 二、依赖和使用 "ol": "^6.15.1"使用npm安装依赖npm install ol@6.15.1使用Yarn安装依赖yarn add olvue中如何使用:…

【Java基础】深入理解String、StringBuffer和StringBuilder的异同

文章目录 一、结论&#xff1a;二、可变性String&#xff08;不可变&#xff09;StringBuffer和StringBuilder&#xff08;可变&#xff09; 三、线程安全性String&#xff08;线程安全&#xff09;StringBuffer&#xff08;线程安全&#xff09;和StringBuilder&#xff08;线…