避免使用第三方工具完成电脑环境检测

2023-05-16

0. 简介

在之前配置各种深度学习环境的时候经常需要先检测一下电脑的软硬件环境,其实整个过程比较重复和固定,所以我们是否有可能一键检测Python版本、PIP版本、Conda版本、CUDA版本、电脑系统、CPU核数、CPU频率、内存、硬盘等内容这是很多Deepper苦恼的。这里会从软件开始介绍,并最终提供一套Python脚本工具来完成检测

1. Windows 电脑环境检测

  1. AIDA64:

AIDA64是一款专业的系统软硬件检测工具,前身是EVEREST,它可以详细的显示出PC各方面的信息。AIDA64适配类型广,支持对上千种主板、上百种(360+)显卡、各式各样的处理器进行。可以准确的获取电脑的配置信息,并支持对CPU、GPU、内存等进行性能、压力测试。
在这里插入图片描述

  1. 鲁大师:

鲁大师是一款易用的硬件检测工具,能够让用户们直观了解自己的电脑配置,支持CPU、GPU、内存等基本配置信息的查看及性能测试。此外,它可以用来监控用户的计算机硬件状态,可以了解电脑的健康。
在这里插入图片描述

  1. CPU-Z:

是一款专门用于检测CPU的软件,支持的CPU的种类全面。除了CPU检测,还可以检测主板和内存的相关信息,因此也可以用来查看电脑配置。
在这里插入图片描述

  1. GPU-Z:

与CPU-Z类似,是一款专门检测显卡的软件。运行后即可显示GPU核心、运行频率、带宽等。另外,也可以检测其它硬件信息。
在这里插入图片描述
5. WhyNotWin11:
最近 WIN 11 发布了测试版,但是许多电脑确不能安装,官方虽然有检测软件,但是确不好用,只告诉你不能安装,却不告诉你不能安装的原因,而 WhyNotWin11 出现就是为了解决此问题。

在这里插入图片描述

2. Ubuntu 电脑环境检测

  1. 在Unbutu中,一般会使用命令行完成配置的检测

1. 查看内核 操作系统 CPU
uname -a

2. 查看系统内核
cat /proc/version

3. 查看操作系统版本
head -n 1 /etc/issue # 查看操作系统版本

4. 查看CPU信息
cat /proc/cpuinfo

5. 查看存储信息
cat /proc/meminfo
free -m查看内存使用量和交换区使用量
grep MemTotal /proc/meminfo #查看内存总量
grep MemFree /proc/meminfo #查看空闲内存量
uptime #查看系统运行时间、用户数、负载

6. 查看硬盘信息
df

7. 进程
ps -ef # 查看所有进程
top # 实时显示进程状态

8. 查看内存使用
free -m #查看内存使用
grep MemTotal /proc/meminfo #查看内存总量
grep MemFree /proc/meminfo #查看空闲内存量
uptime #查看系统运行时间、用户数、负载

9. 查看显卡
lspci |grep VGA

10. 其他
hostname # 查看计算机名
lspci -tv # 列出所有PCI设备
lsusb -tv # 列出所有USB设备
lsmod # 列出加载的内核模块
env # 查看环境变量
df -h # 查看各分区使用情况
du -sh <目录名> # 查看指定目录的大小
uptime # 查看系统运行时间、用户数、负载
cat /proc/loadavg # 查看系统负载
mount | column -t # 查看挂接的分区状态
fdisk -l # 查看所有分区
swapon -s # 查看所有交换分区
hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
dmesg | grep IDE # 查看启动时IDE设备检测状况
ifconfig # 查看所有网络接口的属性
iptables -L # 查看防火墙设置
route -n # 查看路由表
netstat -lntp # 查看所有监听端口
netstat -antp # 查看所有已经建立的连接
netstat -s # 查看网络统计信息
w # 查看活动用户
id <用户名> # 查看指定用户信息
last # 查看用户登录日志
cut -d: -f1 /etc/passwd # 查看系统所有用户
cut -d: -f1 /etc/group # 查看系统所有组
crontab -l # 查看当前用户的计划任务

查看主板的序列号: dmidecode | grep -i ’serial number’

用硬件检测程序kuduz探测新硬件:service kudzu start ( or restart)

查看CPU信息:cat /proc/cpuinfo [dmesg | grep -i ‘cpu’][dmidecode -t processor]

查看内存信息:cat /proc/meminfo [free -m][vmstat]

查看板卡信息:cat /proc/pci

查看显卡/声卡信息:lspci |grep -i ‘VGA’[dmesg | grep -i ‘VGA’]

查看网卡信息:dmesg | grep -i ‘eth’[cat /etc/sysconfig/hwconf | grep -i eth][lspci | grep -i ‘eth’]

查看PCI信息:lspci (相比cat /proc/pci更直观)

查看USB设备:cat /proc/bus/usb/devices

查看键盘和鼠标:cat /proc/bus/input/devices

查看系统硬盘信息和使用情况:fdisk & disk – l & df

查看各设备的中断请求(IRQ):cat /proc/interrupts

查看系统体系结构:uname -a

查看及启动系统的32位或64位内核模式:isalist –v [isainfo –v][isainfo –b]

dmidecode查看硬件信息,包括bios、cpu、内存等信息

测定当前的显示器刷新频率:/usr/sbin/ffbconfig –rev ?

查看系统配置:/usr/platform/sun4u/sbin/prtdiag –v

查看当前系统中已经应用的补丁:showrev –p

显示当前的运行级别:who –rH

  1. HardInfo
    可以在 Ubuntu软件中心去获取,在这里这个应用程序叫做 System Profiler and Benchmark 。其实这个程序的安装非常简单,只需要按常规步骤去安装它,然后点击「安装」按钮。当我们第一次运行它时,HardInfo 程序将显示其预选的 Computer->Summary(电脑->摘要)信息页,在这里可以看到关于电脑最重要的信息
    在这里插入图片描述

3. python脚本电脑环境检测

使用Python脚本就可以避免上述两种情况的问题,同时代码还支持扩展,只要是电脑可以安装python既可以执行这个代码,我们只需要安装一个pip库

pip install psutil

然后就可以运行这个脚本了,具体代码如下,这里原本的代码取自Github,但是作者在运行时报错,所以稍作了修改

import sys
import platform


def checkPythonVersion():
    return float(sys.version[:3])


def checkOS():
    os_info = platform.system()
    return os_info


def checkPipVersionPy3():
    import subprocess
    code, pip_version = subprocess.getstatusoutput("pip --version")
    if code != 0:
        pip_version = 0
    else:
        pip_version = pip_version.split("pip")[1].split("from")[0].strip()
        parts = pip_version.split(".")
        pip_version = float(parts[0] + "." + parts[1])
    return pip_version


def checkPipVersionPy2():
    import commands
    code, pip_version = commands.getstatusoutput("pip --version")
    if code != 0:
        pip_version = 0
    else:
        pip_version = pip_version.split("pip")[1].split("from")[0].strip()
        parts = pip_version.split(".")
        pip_version = float(parts[0] + "." + parts[1])
    return pip_version


def checkCUDAPy3():
    import subprocess
    code, nvcc_info = subprocess.getstatusoutput("nvcc --version")
    if code != 0:
        nvcc_info = 0
    else:
        nvcc_info = float(nvcc_info.split("release")[1].split(",")[0].strip())
    return nvcc_info


def checkCUDAPy2():
    import commands
    code, nvcc_info = commands.getstatusoutput("nvcc --version")
    if code != 0:
        nvcc_info = 0
    else:
        nvcc_info = float(nvcc_info.split("release")[1].split(",")[0].strip())
    return nvcc_info


def checkCondaPy3():
    import subprocess
    code, conda_info = subprocess.getstatusoutput("conda --version")
    if code != 0:
        conda_info = 0
    else:
        parts = conda_info.split("conda")[1].split(".")
        conda_info = float(parts[0] + "." + parts[1])
    return conda_info


def checkCondaPy2():
    import commands
    code, conda_info = commands.getstatusoutput("conda --version")
    if code != 0:
        conda_info = 0
    else:
        parts = conda_info.split("conda")[1].split(".")
        conda_info = float(parts[0] + "." + parts[1])
    return conda_info


def cpuCount():
    try:
        import psutil
        number = psutil.cpu_count()
        return str(number)
    except:
        return "No 'psutil' on your computer,install it with 'pip install psutil'"


def cpuFreq():
    try:
        import psutil
        info = psutil.cpu_freq()
        info = str(round(float(info[2]) / 1000, 2))
        return str(info)
    except:
        return "No 'psutil' on your computer,install it with 'pip install psutil'"


def cpuUsage():
    try:
        import psutil
        info = psutil.cpu_percent(interval=1, percpu=True)
        return info
    except:
        return "No 'psutil' on your computer,install it with 'pip install psutil'"


def memSize():
    try:
        import psutil
        info = psutil.virtual_memory()
        info = str(round(float(info[0]) / pow(1024, 3), 2))
        return str(info)
    except:
        return "No 'psutil' on your computer,install it with 'pip install psutil'"


def memInfo():
    try:
        import psutil
        info = psutil.virtual_memory()
        usage = str(info[2])
        avail = str(round(float(info[1]) / pow(1024, 3), 2))
        return usage, avail
    except:
        return "No 'psutil' on your computer,install it with 'pip install psutil'"


def diskSize():
    try:
        import psutil
        disk_size = []
        for item in psutil.disk_partitions():
            mountpoint = item[1]
            opts = item[3]
            if opts == 'cdrom':
                continue
            size = psutil.disk_usage(mountpoint)
            size = round(float(size[0]) / pow(1024, 3), 2)
            disk_size.append(size)
        total_size = round(sum(disk_size), 2)
        return str(total_size)
    except:
        return "No 'psutil' on your computer,install it with 'pip install psutil'"


def diskInfo():
    try:
        import psutil
        part_size = []
        part_usage = []
        part_name = []
        part_fstype = []
        for item in psutil.disk_partitions():
            name = item[0]
            mountpoint = item[1]
            fstype = item[2]
            opts = item[3]
            if opts == 'cdrom':
                continue
            info = psutil.disk_usage(mountpoint)
            size = round(float(info[0]) / pow(1024, 3), 2)
            part_size.append(size)
            part_usage.append(str(info[3]) + "%")
            part_name.append(name)
            part_fstype.append(fstype)
        return part_name, part_size, part_usage, part_fstype
    except:
        return "No 'psutil' on your computer,install it with 'pip install psutil'"


if __name__ == '__main__':
    python_v = checkPythonVersion()
    os = checkOS()
    if python_v > 3:
        pip_v = checkPipVersionPy3()
        cuda_v = checkCUDAPy3()
        conda_v = checkCondaPy3()
    else:
        pip_v = checkPipVersionPy2()
        cuda_v = checkCUDAPy2()
        conda_v = checkCondaPy2()

    print("=======================System Information=======================")
    print("* This computer runs " + os + " system.")
    print("* Python version(running this script):" + python_v.__str__())
    if pip_v == 0:
        print("* Pip version:It seems no pip on your computer.")
    else:
        print("* Pip version:" + pip_v.__str__())
    if cuda_v == 0:
        print("* CUDA version:It seems no CUDA on your computer.")
    else:
        print("* CUDA version:" + cuda_v.__str__())
    if conda_v == 0:
        print("* Conda version:It seems no Conda on your computer.")
    else:
        print("* Conda version:" + conda_v.__str__())
    print("=======================System Information=======================")

    cpu_count = cpuCount()
    cpu_freq = cpuFreq()
    cpu_usage = cpuUsage()
    mem_size = memSize()
    mem_usage = memInfo()
    disk_size = diskSize()
    disk_info = diskInfo()

    print("======================Hardware Information======================")
    print("* CPU kernel:" + cpu_count)
    print("* CPU base frequency:" + cpu_freq + " GHz")
    if type(cpu_usage) is str:
        print("* CPU use percentage(current,every kernel):\n  " + cpu_usage)
    else:
        print("* CPU use percentage(current,every kernel):\n  " + str(cpu_usage))
    print("* Memory total size:" + mem_size + " GB")
    if type(mem_usage) is str:
        print("* Memory use percentage(current):" + mem_usage)
    else:
        print("* Memory use percentage(current):" + mem_usage[0] + "%, free:" + mem_usage[1] + " GB")
    print("* Disk total size:" + disk_size + " GB")
    print("* Disk partion info:")
    if type(disk_info) is str:
        print("  " + disk_info)
    else:
        print("  Identifier\tTotal size(GB)\tUsage(percentage)\tFile format")
        for i in range(len(disk_info)):
            try:
                print("  " + disk_info[0][i] + "\t\t\t" + str(disk_info[1][i]) + "\t\t\t" + str(
                    disk_info[2][i]) + "\t\t\t\t" +
                      disk_info[3][i])
            except:
                print("May be have some error in read Disk!")
    print("======================Hardware Information======================")

在这里插入图片描述

4. 具体信息监控与保存

…详情请参照古月居

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

避免使用第三方工具完成电脑环境检测 的相关文章

  • C语言字符数组与字符串的使用及加结束符‘\0‘的问题

    1 字符数组的定义与初始化 字符数组的初始化 xff0c 最容易理解的方式就是逐个字符赋给数组中各元素 char str 10 61 I a m h a p p y 即把10个字符分别赋给str 0 到str 9 10个元素 如果花括号中提
  • 追求技术之路 - 那些陪伴我的书籍

    如今已经在广州一家嵌入式公司实习 xff0c 分享大学里度过的一些书籍 xff0c 有些还没读完 xff0c 个人比较喜欢经典书籍 xff0c 研读起来就有种奇妙的感觉 xff0c 比起人与人之间的复杂的关系 xff0c 书籍带给我的感觉很
  • 中断,异常,系统调用,进程切换时的堆栈变化和寄存器保存

    1 中断 xff0c 异常 xff0c 系统调用相同 xff1a CPU自动压入 xff1a ss 运行级别提升时需切换堆栈 xff0c 因此多压入用户态的栈段ss xff0c esp 运行级别提升时需切换堆栈 xff0c 因此多压入用户态
  • Pipeline 核心语法

    常用开发工具 选择任意pipeline类型的作业 xff0c 点击 流水线语法 即可进入pipeline开发工具页面 1 片段生成器 流水线代码片段生成器 xff0c 非常好用 xff0c 在这里可以找到每个插件以及Jenkins内置的方法
  • Pipeline Groovy 语法

    Groovy是一种功能强大 xff0c 可选类型和动态 语言 xff0c 支持Java平台 旨在提高开发人员的生产力得益于简洁 xff0c 熟悉且简单易学的语法 可以与任何Java程序顺利集成 xff0c 并立即为您的应用程序提供强大的功能
  • Jenkins 共享库应用

    1 创建一个共享库 1 xff09 创建共享库 可以直接在github中创建一个公开类型的仓库 xff0c 也可以创建私有类型的gitlab仓库 xff0c 需要提前配置好仓库的认证凭据 xff0c 这里使用gitlab创建了一个名为jen
  • Generic WebHookTrigger 自动触发

    1 安装配置 Generic WebHookTrigger 目的 xff1a 为Jenkins作业添加触发器 xff0c 便于其他系统调用 安装配置Generic WebHook xff0c 插件名称 xff1a Generic Webho
  • Jenkins 权限管理与凭据

    权限管理 安装插件 Role Based Strategy 可以对Jenkins用户进行权限管理 xff0c 如果在Jenkins控制台安装插件失败 xff0c 可以去Jenkins官网下载插件然后再上传 Role based Author
  • 部署Maven环境

    JDK xff1a 在maven3 3 以上的版本需要JDK版本1 7 43 xff0c 内存 xff1a 没有最低限制 磁盘 xff1a 1G 43 可用磁盘空间 操作系统 xff1a 没有限制 下载地址 xff1a Maven Down
  • Maven 集成

    先在执行节点上安装Maven xff1a 部署Maven环境 lovely nn的博客 CSDN博客 JDK xff1a 在maven3 3 以上的版本需要JDK版本1 7 43 xff0c 内存 xff1a 没有最低限制 磁盘 xff1a
  • 哪些技术好书值得一读再读?阿里大牛列了一份经典书单

    喜爱读书 xff0c 就等于把生活中寂寞无聊的时光换成巨大享受的时刻 有了书 xff0c 各个领域的智慧 xff0c 几乎触手可及 我们能有幸站在前辈 巨人的肩膀上 xff0c 看更远的风景 4月23日世界读书日 xff0c 阿里九位技术大
  • JDK 环境部署

    环境Centos 7 6 卸载旧的 查看旧的java版本 java version 查看jdk信息 rpm qa grep i jdk 卸载jdk rpm e nodeps jdk信息 安装新的 rpm安装1jdk rpm ivh jdk
  • Docker部署Gitlab

    这里用docker部署gitlab ce 14 0 0 ce 0版本 xff1a docker pull gitlab gitlab ce 14 0 0 ce 0 mkdir p gitlab1 config data logs docke
  • Pipeline 部署K8S应用

    概述 提前在K8S集群中部署jenkins和gitlab应用 xff0c gitlab用于存放应K8S的资源清单Yaml文件 xff0c Jenkins用于拉取gitlab上的Yaml文件并将其部署到K8S集群中 将所有Yaml文件放在Gi
  • curl https方式访问kubernetes集群API

    使用curl https方式访问kubernetes集群的api 认证方式需要用到token xff0c 这里使用变量赋予APISERVER 和TOKEN的值 apiserver xff1a APISERVER 61 kubectl con
  • Deployment 回滚

    更新Deployment资源时 xff0c pod状态为Pending xff0c 使用delete命令是删不掉Pending的pod的 xff0c 因为Deployment会无限创建 xff0c 这时候需要用到Deployment的回滚功
  • 在Pod中执行目录操作,提示Permission denied

    问题 xff1a 进入Pod执行创建文件的操作 xff0c 出现如下报错 kubectl exec it jenkins 5b688ddcc7 h72f2 n cicd bash touch test touch cannot touch
  • Copy宿主机文件到Docker容器中

    1 查找容器名 docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 67686c68c78c keycloak v3 34 opt keycloak bin k 3
  • K8S中部署Grafana

    官方部署文档 xff1a Deploy Grafana on Kubernetes Grafana Labs 以下Yaml从官方copy下来的并做了些修改 xff0c Service使用Nodeport方式是为了便于本地访问 cat gra

随机推荐

  • 在 AlertManager 报警通知中展示监控图表

    参考原文档 xff1a 在 AlertManager 报警通知中展示监控图表 Promoter 是一个用于 AlertManager 通知的 Webhooks 实现 xff0c 支持在消息通知中展示实时报警图表 xff0c 也支持定制消息通
  • Github添加SSH keys

    问题 xff1a 在本地 xff08 linux系统 xff09 下载github仓库源代码时 xff0c 执行git clone 命令时出现以下报错 xff1a git clone git 64 github com hh hub pro
  • 阿里技术大牛最爱的“闲书”,你看过多少?

    在忙碌的写代码 修bug生活里 xff0c 你有多久没有闲下来 xff0c 读读 闲书 xff0c 取悦自己了呢 xff1f 正如梁文道所说 xff0c 读一些无用的书 xff0c 做一些无用的事 xff0c 花一些无用的时间 xff0c
  • blackbox_exporter 黑盒监测

    一 简介 blackbox exporter blackbox exporter是Prometheus 官方提供的 exporter 之一 xff0c 可以提供 http dns tcp icmp 的监控数据采集 xff0c blackbo
  • Python 与Django环境搭建

    系统 xff1a Windows 10 python环境搭建 1 python安装步骤 python包下载链接 xff1a https www python org downloads windows 下载版本 xff1a python 3
  • prometheus图

    Prometheus Server 框架图 xff0c 只要能提供对应的metrics接口 xff0c promehteus就能接入监控 xff0c prometheus会把抓取到的指标数据持久化到本地磁盘中 xff0c 跟其它数据库一样它
  • 经典文献阅读之--BEVDistill(BEV蒸馏)

    0 简介 之前作者前段时间在研究BEV的相关算法 xff0c 当时就觉得BEV算法好是好 xff0c 但是所需要的内存以及计算资源实在是太大了 xff0c 无法实时在真实场景中运行 我们知道多视图 xff08 multi view 三维目标
  • 经典文献阅读之--FastFlowNet(轻量光流估计)

    0 简介 密集的光流估计在许多机器人视觉任务中起着关键作用 随着深度学习的到来 xff0c 已经比传统方法以令人满意的精度预测了它 然而 xff0c 当前的网络经常占用大量参数并且需要沉重的计算成本 这些缺点阻碍了在功率或内存受限的移动设备
  • Matlab与ROS(1/2)---Message(三)

    0 简介 消息是ROS中交换数据的主要容器 主题和服务使用消息在节点之间传输数据 为了标识其数据结构 xff0c 每条消息都有一个消息类型 例如 xff0c 来自激光扫描仪的传感器数据通常以sensor msgs LaserScan类型的消
  • Matlab与ROS(1/2)---发布者和订阅者数据通信(四)

    0 简介 我们在前面一节介绍了Matlab与Message的通信 xff0c 而我们这一节主要来介绍发布者和订阅者在Matlab中的操作 这部分我们主要来看一下ROS1和ROS2中分别是如何使用Topic的 1 ROS1的消息订阅与发布 1
  • Matlab与ROS(1/2)---服务端和客户端数据通信(五)

    0 简介 在前几讲我们讲了Matlab中的Message以及Topic的相关知识 而ROS主要支持的通信机制还有服务这一类 服务通过允许请求以及响应的通信方式 xff0c 来给整个系统完成更紧密的耦合 服务客户端向服务服务器发送请求消息并等
  • Matlab与ROS---Action与Gazebo(六)

    0 简介 对于ROS1而言 xff0c 其在Matlab当中相较于ROS2还有一些比较高级的用法 xff0c 比如说我们接下来要说的Action和Gazebo仿真 1 ROS Action ROS的Action行为模式当中也存在有一个客户端
  • Matlab与ROS---TF坐标系(七)

    0 简介 我们上面讲了最基础的通信机制以及在Matlab中如何使用这些通信 xff0c 下面我们这一讲来主要介绍ROS当中最常用的TF坐标系在Matlab中的使用 tf是分布式的 xff0c 因此所有的坐标帧信息对ROS网络中的每个节点都是
  • OCR如何读取皱巴巴的文件?深度学习在文档图像形变矫正的应用详解

    阿里妹导读 xff1a OCR作为智能审核的重要环节 xff0c 其识别准确率影响着最终审核效果的好坏 xff0c 而来自扫描仪 智能手机的文档图像多存在卷曲 折叠 本文旨在利用深度学习算法对文档图像的形变进行矫正 xff0c 从而提高OC
  • 经典文献阅读之--VGICP(体素化的ICP匹配)

    0 简介 之前我们在以前的文章中介绍了很多有关于点云匹配相关的知识 xff0c 最近两年处理GICP这一大一统的ICP匹配方法以外 xff0c 还有一个工作对体素化和ICP这两者打起了心思 xff0c Voxelized GICP for
  • 经典文献阅读之--Orbeez-SLAM(单目稠密点云建图)

    0 简介 对于现在的VSLAM而言 xff0c 现在越来越多的工作开始聚焦于如何将深度学习结合到VSLAM当中 xff0c 而最近的这个工作就给出了一个比较合适的方法 Orbeez SLAM A Real time Monocular Vi
  • 经典文献阅读之--NORLAB-ICP(重力约束ICP)

    0 简介 最近几年IPC相关的文章也出了不少 xff0c 最近作者有看到了一篇比较有意思的ICP论文 Gravity constrained point cloud registration xff0c 这篇论文将传统的ICP考虑了重力因素
  • 常见的3d bounding box标注工具

    0 简介 对于3d bounding box而言 xff0c 近几年随着自动驾驶的火热 xff0c 其标注工具也日渐多了起来 xff0c 本篇文章不讲具体的算法 xff0c 这里主要聚焦于这些开源的3d bounding box标注工具 x
  • 经典文献阅读之--A Lifelong Learning Approach to Mobile Robot Navigation(终生学习轨迹导航)

    0 简介 终生学习作为近年来比较火的一种深度学习方式 xff0c 导航终身学习 LLfN 旨在解决标准导航问题的一种新变体 xff0c 在该问题中 xff0c 智能体在有限的内存预算下 xff0c 通过学习提高在线经验或跨环境的导航性能 而
  • 避免使用第三方工具完成电脑环境检测

    0 简介 在之前配置各种深度学习环境的时候经常需要先检测一下电脑的软硬件环境 xff0c 其实整个过程比较重复和固定 xff0c 所以我们是否有可能一键检测Python版本 PIP版本 Conda版本 CUDA版本 电脑系统 CPU核数 C