首页 > 其他分享 >如何在WSL2中安装可执行编译.cu文件的cuda环境

如何在WSL2中安装可执行编译.cu文件的cuda环境

时间:2023-04-10 16:58:08浏览次数:69  
标签:count return int prop cuda include WSL2 cu

参考nvidia官方文档:

https://docs.nvidia.com/cuda/wsl-user-guide/index.html#installing-insider-preview-builds

 

 

=========================================

 

 

第一步:

sudo apt-key del 7fa2af80

 

第二步:

sudo apt install nvidia-cuda-toolkit

 

 

注意:

本文方法是唯一成功的方法,如果采用和物理机ubuntu一样的在nvidia官网下载cuda版本,然后手动安装,那么在编译好.cu文件后运行则会报错,报错信息为无法检测到显卡/显卡驱动。

 

测试代码:

x.cu

#include <stdio.h>
#include <stdlib.h>
#include <cuda_runtime.h>

//初始化CUDA
int count=0;

bool InitCUDA()
{
    printf("Start to detecte devices.........\n");//显示检测到的设备数

    cudaGetDeviceCount(&count);//检测计算能力大于等于1.0 的设备数

    if(count == 0)
    {
        fprintf(stderr, "There is no device.\n");
        return false;
    }

    printf("%d device/s detected.\n",count);//显示检测到的设备数

    int i;
    for(i = 0; i < count; i++)
    {//依次验证检测到的设备是否支持CUDA
        cudaDeviceProp prop;
        if(cudaGetDeviceProperties(&prop, i) == cudaSuccess) 
        {//获得设备属性并验证是否正确
            if(prop.major >= 1)//验证主计算能力,即计算能力的第一位数是否大于1
            {
                printf("Device %d: %s supportsCUDA %d.%d.\n",i+1,prop.name,prop.major,prop.minor);//显示检测到的设备支持的CUDA 版本
                break;
            }
        }
    }

    if(i == count) 
    {//没有支持CUDA1.x 的设备
        fprintf(stderr, "There is no device supporting CUDA 1.x.\n");
        return false;
    }

    cudaSetDevice(i);//设置设备为主叫线程的当前设备
    return true;
}

int main()
{
    if(!InitCUDA()) 
    {//初始化失败返回系统int argc, char** argv
        return 0;
    }

    printf("Hello GPU! CUDA has been initialized.\n");

    //exit(argc ? EXIT_SUCCESS : EXIT_FAILURE);
    return 0;//返回系统
}

 

 

y.cu

#include <iostream>
#include <math.h>
#include <cuda_runtime.h>
using namespace std;
int main() {
    int count = 0;
        cudaGetDeviceCount(&count);
        cout <<"当前计算机包含GPU数为"<< count << endl;
    cudaError_t err = cudaGetDeviceCount(&count);
    if (err != cudaSuccess) 
            printf("%s\n", cudaGetErrorString(err));


    cudaDeviceProp prop;
    cudaGetDeviceProperties(&prop, 0);
    printf("Device Number: %d\n", 0);
    cout << "当前设备名字为" << prop.name << endl;
        cout << "GPU全局内存总量为" << prop.totalGlobalMem << endl;
        cout << "单个线程块中包含的线程数最多为" << prop.maxThreadsPerBlock << endl;
  
}

 

 

效果:

 

 

 

 

 

=========================================

 

标签:count,return,int,prop,cuda,include,WSL2,cu
From: https://www.cnblogs.com/devilmaycry812839668/p/17303440.html

相关文章

  • Spring Security系列教程-初识Spring Security
    前言在开始学习SpringSecurity系列教程之前,小千先带大家来了解一下SpringSecurity,看看它到底是什么,有哪些功能,有什么特点,以及它与别的同类框架相比,有什么不同,我们以后学习任何一个新技术,其实都可以遵循"3W1H"法则,这样学习起来才能更有条理。一.SpringSecurity概念首先请各位跟......
  • 利用 curl 发送 post/get/del/put/patch 请求 PHP
    因为需要在php开发中对接其它接口需要用phpcurl去对接其它接口我把他们封装成函数。这里面是封装好的会自动把data进行转成json格式,同时解码成php数组输出get请求:<?phpfunctiongeturl($url){$headerArray=array("Content-type:application/json;","Acc......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-食谱智能生成从0到1快速入门——官网推荐的48
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-文章大纲智能生成器从0到1快速入门——官网推
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • java并发编程(2):Java多线程-java.util.concurrent高级工具
    高级多线程控制类Java1.5提供了一个非常高效实用的多线程包:java.util.concurrent,提供了大量高级工具,可以帮助开发者编写高效、易维护、结构清晰的Java多线程程序。ThreadLocal类ThreadLocal类用来保存线程的独立变量。对一个线程类(继承自Thread)当使用ThreadLocal维护变......
  • 线性表之静态链表实现(数组cur实现)
    main.cpp#include"StaticList.h"intmain(){StaticListSL;InitSList(SL);for(inti=0;i<5;++i){Insert(SL,'A'+i);}ShowSList(SL);DeleteSList(SL);ShowSList(SL);return0;}Stati......
  • 【Java 并发】【十】【JUC数据结构】【七】ConcurrentHashMap前置篇HashMap原理
    1 前言前几节我们分析了一些并发安全的数据结构,分别是CopyOnWrite系列的CopyOnWriteArrayList、BlockingQueue阻塞队列系列的LinkedBlockingQueue、ArrayBlockingQueue、DelayQueue。接下来我们要讲解一个很重要的并发安全的数据结构,ConcurrentHashMap。在Java的数据结构里面平......
  • 如何查看和安装NVIDIA的CUDA版本
    为了能在用UltimateVocalRemoverGUI时使用GPU加速运算,N卡用户必须要安装CUDA核心。URV官方最新版本是 UltimateVocalRemoverGUIv5.5.1官网地址:https://github.com/Anjok07/ultimatevocalremovergui安装CUDA前先安装对应N卡最新的官方显卡驱动,以我3060笔记本为例,注意选......
  • SpringSecurity之WebSecurity和HttpSecurity
    SpringSecurity启动过程中有两个重要的类。分别是WebSecurity和HttpSecurity。 看看WebSecurity的定义:publicfinalclassWebSecurityextendsAbstractConfiguredSecurityBuilder<Filter,WebSecurity>implementsSecurityBuilder<Filter>,ApplicationContextAware,Servl......
  • SpringSecurity源码之WebSecurity构建FilterChainProxy
    主要参考了https://mp.weixin.qq.com/s/D0weIKPto4lcuwl9DQpmvQ。SpringSecurity版本是2.7.9。将SpringBoot和SpringSecurity结合使用,SpringSecurity自动配置类是SecurityAutoConfiguration.class。 @AutoConfiguration@ConditionalOnClass({DefaultAuthenticationEventPubli......