【昇腾】NPU ID:物理ID、逻辑ID、芯片映射关系
起因:
https://www.hiascend.com/document/detail/zh/Atlas%20200I%20A2/23.0.0/re/npu/npusmi_013.html
npu-smi info -l
查询所有NPU设备:
[naie@notebook-npu-bd130045-55bbffd786-lr6t8 DCNN]$ npu-smi info -lTotal Count : 1NPU ID : 6Chip Count : 1
运行脚本:
import torch_npu
from torch_npu.contrib import transfer_to_npu
import torchimport torch
import torch.nn as nnclass SingleConv(nn.Module):def __init__(self, in_ch, out_ch, kernel_size, stride, padding):super(SingleConv, self).__init__()self.single_conv = nn.Sequential(nn.Conv2d(in_ch, out_ch, kernel_size=kernel_size, padding=padding, stride=stride, bias=False),nn.BatchNorm2d(out_ch),nn.ReLU(inplace=True))def forward(self, x):return self.single_conv(x)class DenseFeaureAggregation(nn.Module):def __init__(self, in_ch, out_ch, base_ch):super(DenseFeaureAggregation, self).__init__()self.conv1 = nn.Sequential(nn.BatchNorm2d(num_features=1 * in_ch, eps=1e-5, affine=True),nn.ReLU(inplace=True),nn.Conv2d(in_ch, base_ch, dilation=2, kernel_size=3, padding=2, stride=1, bias=True),)self.conv2 = nn.Sequential(nn.BatchNorm2d(num_features=in_ch + base_ch, eps=1e-5, affine=True),nn.ReLU(inplace=True),nn.Conv2d(in_ch + base_ch, base_ch, dilation=3, kernel_size=3, padding=3, stride=1, bias=True),)self.conv3 = nn.Sequential(nn.BatchNorm2d(num_features=in_ch + 2 * base_ch, eps=1e-5, affine=True),nn.ReLU(inplace=True),nn.Conv2d(in_ch + 2 * base_ch, base_ch, dilation=5, kernel_size=3, padding=5, stride=1, bias=True),)self.conv4 = nn.Sequential(nn.BatchNorm2d(num_features=in_ch + 3 * base_ch, eps=1e-5, affine=True),nn.ReLU(inplace=True),nn.Conv2d(in_ch + 3 * base_ch, base_ch, dilation=7, kernel_size=3, padding=7, stride=1, bias=True),)self.conv5 = nn.Sequential(nn.BatchNorm2d(num_features=in_ch + 4 * base_ch, eps=1e-5, affine=True),nn.ReLU(inplace=True),nn.Conv2d(in_ch + 4 * base_ch, base_ch, dilation=9, kernel_size=3, padding=9, stride=1, bias=True),)self.conv_out = nn.Sequential(nn.BatchNorm2d(num_features=in_ch + 5 * base_ch, eps=1e-5, affine=True),nn.ReLU(inplace=True),nn.Conv2d(in_ch + 5 * base_ch, out_ch, dilation=1, kernel_size=1, padding=0, stride=1, bias=True),)def forward(self, x):out_ = self.conv1(x)concat_ = torch.cat((out_, x), dim=1)out_ = self.conv2(concat_)concat_ = torch.cat((concat_, out_), dim=1)out_ = self.conv3(concat_)concat_ = torch.cat((concat_, out_), dim=1)out_ = self.conv4(concat_)concat_ = torch.cat((concat_, out_), dim=1)out_ = self.conv5(concat_)concat_ = torch.cat((concat_, out_), dim=1)out_ = self.conv_out(concat_)return out_class Encoder(nn.Module):def __init__(self, in_ch, list_ch):super(Encoder, self).__init__()self.encoder_1 = nn.Sequential(SingleConv(in_ch, list_ch[1], kernel_size=3, stride=1, padding=1),SingleConv(list_ch[1], list_ch[1], kernel_size=3, stride=1, padding=1))self.encoder_2 = nn.Sequential(nn.MaxPool2d(kernel_size=2, stride=2, padding=0),SingleConv(list_ch[1], list_ch[2], kernel_size=3, stride=1, padding=1),SingleConv(list_ch[2], list_ch[2], kernel_size=3, stride=1, padding=1))self.encoder_3 = nn.Sequential(nn.MaxPool2d(kernel_size=2, stride=2, padding=0),SingleConv(list_ch[2], list_ch[3], kernel_size=3, stride=1, padding=1),SingleConv(list_ch[3], list_ch[3], kernel_size=3, stride=1, padding=1))self.encoder_4 = nn.Sequential(nn.MaxPool2d(kernel_size=2, stride=2, padding=0),SingleConv(list_ch[3], list_ch[4], kernel_size=3, stride=1, padding=1),SingleConv(list_ch[4], list_ch[4], kernel_size=3, stride=1, padding=1))self.DFA = DenseFeaureAggregation(list_ch[4], list_ch[4], list_ch[4])def forward(self, x):out_encoder_1 = self.encoder_1(x)out_encoder_2 = self.encoder_2(out_encoder_1)out_encoder_3 = self.encoder_3(out_encoder_2)out_encoder_4 = self.encoder_4(out_encoder_3)out_encoder_4 = self.DFA(out_encoder_4)return [out_encoder_1, out_encoder_2, out_encoder_3, out_encoder_4]class Decoder(nn.Module):def __init__(self, out_ch, list_ch):super(Decoder, self).__init__()self.upconv_3_1 = nn.ConvTranspose2d(list_ch[4], list_ch[3], kernel_size=2, stride=2, bias=True)self.decoder_conv_3_1 = nn.Sequential(SingleConv(2 * list_ch[3], list_ch[3], kernel_size=3, stride=1, padding=1),SingleConv(list_ch[3], list_ch[3], kernel_size=3, stride=1, padding=1))self.upconv_2_1 = nn.ConvTranspose2d(list_ch[3], list_ch[2], kernel_size=2, stride=2, bias=True)self.decoder_conv_2_1 = nn.Sequential(SingleConv(2 * list_ch[2], list_ch[2], kernel_size=3, stride=1, padding=1),SingleConv(list_ch[2], list_ch[2], kernel_size=3, stride=1, padding=1))self.upconv_1_1 = nn.ConvTranspose2d(list_ch[2], list_ch[1], kernel_size=2, stride=2, bias=True)self.decoder_conv_1_1 = nn.Sequential(SingleConv(2 * list_ch[1], list_ch[1], kernel_size=3, stride=1, padding=1),SingleConv(list_ch[1], list_ch[1], kernel_size=3, stride=1, padding=1))self.conv_out = nn.Sequential(nn.Conv2d(list_ch[1], out_ch, kernel_size=1, padding=0, bias=True))def forward(self, out_encoder):out_encoder_1, out_encoder_2, out_encoder_3, out_encoder_4 = out_encoderout_decoder_3_1 = self.decoder_conv_3_1(torch.cat((self.upconv_3_1(out_encoder_4), out_encoder_3), dim=1))out_decoder_2_1 = self.decoder_conv_2_1(torch.cat((self.upconv_2_1(out_decoder_3_1), out_encoder_2), dim=1))out_decoder_1_1 = self.decoder_conv_1_1(torch.cat((self.upconv_1_1(out_decoder_2_1), out_encoder_1), dim=1))output = self.conv_out(out_decoder_1_1)return [output]class Model(nn.Module):def __init__(self, in_ch, out_ch, list_ch):super(Model, self).__init__()self.encoder = Encoder(in_ch, list_ch)self.decoder = Decoder(out_ch, list_ch)# initself.initialize()@staticmethoddef init_conv_deconv_BN(modules):for m in modules():if isinstance(m, nn.Conv2d):nn.init.kaiming_uniform_(m.weight, mode='fan_in', nonlinearity='relu')if m.bias is not None:nn.init.constant_(m.bias, 0.)elif isinstance(m, nn.ConvTranspose2d):nn.init.kaiming_uniform_(m.weight, mode='fan_in', nonlinearity='relu')if m.bias is not None:nn.init.constant_(m.bias, 0.)elif isinstance(m, nn.BatchNorm2d):nn.init.constant_(m.weight, 1.)nn.init.constant_(m.bias, 0.)def initialize(self):print('# random init encoder weight using nn.init.kaiming_uniform !')self.init_conv_deconv_BN(self.decoder.modules)print('# random init decoder weight using nn.init.kaiming_uniform !')self.init_conv_deconv_BN(self.encoder.modules)def forward(self, x):out_encoder = self.encoder(x)out_decoder = self.decoder(out_encoder) # is a listreturn out_decoderimport re
import subprocessdef get_npu_id():try:# 执行命令并捕获输出output = subprocess.check_output(['npu-smi', 'info', '-l'], text=True)# 使用正则表达式查找NPU IDmatch = re.search(r'NPU ID\s+:\s+(\d+)', output)if match:return match.group(1) # 返回匹配的第一个组,即NPU IDelse:return "NPU ID not found"except subprocess.CalledProcessError as e:return f"An error occurred: {e}"network = Model(in_ch=4, out_ch=1,list_ch=[-1, 32, 64, 128, 256])npu_id = get_npu_id()
# list_GPU_ids = [npu_id]
device = torch.device('cuda:' + str(npu_id))
network.to(device)
print("device:",npu_id)
报错:
Traceback (most recent call last):File "/home/work/user-job-dir/app/notebook/RTDosePrediction-main/RTDosePrediction/Src/DCNN/test_device_id.py", line 211, in <module>network.to(device)File "/home/naie/.local/lib/python3.9/site-packages/torch_npu/contrib/transfer_to_npu.py", line 56, in decoratedreturn fn(*args, **kwargs)File "/home/naie/.local/lib/python3.9/site-packages/torch_npu/utils/module.py", line 68, in toreturn self._apply(convert)File "/home/naie/.local/lib/python3.9/site-packages/torch/nn/modules/module.py", line 810, in _applymodule._apply(fn)File "/home/naie/.local/lib/python3.9/site-packages/torch/nn/modules/module.py", line 810, in _applymodule._apply(fn)File "/home/naie/.local/lib/python3.9/site-packages/torch/nn/modules/module.py", line 810, in _applymodule._apply(fn)[Previous line repeated 2 more times]File "/home/naie/.local/lib/python3.9/site-packages/torch/nn/modules/module.py", line 833, in _applyparam_applied = fn(param)File "/home/naie/.local/lib/python3.9/site-packages/torch_npu/utils/module.py", line 66, in convertreturn t.to(device, dtype if t.is_floating_point() or t.is_complex() else None, non_blocking)File "/home/naie/.local/lib/python3.9/site-packages/torch_npu/contrib/transfer_to_npu.py", line 56, in decoratedreturn fn(*args, **kwargs)
RuntimeError: exchangeDevice:torch_npu/csrc/aten/common/CopyKernel.cpp:37 NPU error, error code is 107001
[ERROR] 2024-12-13-10:47:03 (PID:38196, Device:0, RankID:-1) ERR00100 PTA call acl api failed
[Error]: Invalid device ID.Check whether the device ID is valid.
EE1001: 2024-12-13-10:47:03.815.272 The argument is invalid.Reason: Set device failed, invalid device, set device=6, valid device range is [0, 1)Solution: 1.Check the input parameter range of the function. 2.Check the function invocation relationship.TraceBack (most recent call last):rtSetDevice execute failed, reason=[device id error][FUNC:FuncErrorReason][FILE:error_message_manage.cc][LINE:53]open device 6 failed, runtime result = 107001.[FUNC:ReportCallError][FILE:log_inner.cpp][LINE:161]
猜想也许是进行了从物理ID到逻辑ID的映射。
查了一下华为的官方文档:
https://www.hiascend.com/document/detail/zh/Atlas%20200I%20A2/23.0.0/re/npu/npusmi_013.html
还真的存在这么一个映射。
遂用这个命令查看了当前环境下的芯片映射关系:
[naie@notebook-npu-bd130045-55bbffd786-lr6t8 DCNN]$ npu-smi info -mNPU ID Chip ID Chip Logic ID Chip Name 6 0 0 Ascend 910B36 1 - Mcu
确实物理ID为6的NPU被映射成了0。这是因为当前环境下(notebook)中只存在一个NPU。
但是还有一个问题:什么时候使用物理ID什么时候使用逻辑ID呢?
物理ID
npu-smi info -t power -i id
类似于这种命令里使用的id都是物理ID:
因为npu-smi info -l查出来的是物理ID。
逻辑ID
device = torch.device('cuda:' + str(npu_id))
这种就用的是逻辑ID
相关文章:
【昇腾】NPU ID:物理ID、逻辑ID、芯片映射关系
起因: https://www.hiascend.com/document/detail/zh/Atlas%20200I%20A2/23.0.0/re/npu/npusmi_013.html npu-smi info -l查询所有NPU设备: [naienotebook-npu-bd130045-55bbffd786-lr6t8 DCNN]$ npu-smi info -lTotal Count : 1NPU…...
景联文科技提供高质量文本标注服务,驱动AI技术发展
文本标注是指在原始文本数据上添加标签的过程,这些标签可以用来指示特定的实体、关系、事件等信息,以帮助计算机理解和处理这些数据。 文本标注是自然语言处理(NLP)领域的一个重要环节,它通过为文本的不同部分提供具体…...
【Spark】Spark Join类型及Join实现方式
如果觉得这篇文章对您有帮助,别忘了点赞、分享或关注哦!您的一点小小支持,不仅能帮助更多人找到有价值的内容,还能鼓励我持续分享更多精彩的技术文章。感谢您的支持,让我们一起在技术的世界中不断进步! Sp…...
docker安装、升级、以及sudo dockerd --debug查看启动失败的问题
1、docker安装包tar下载地址 Index of linux/static/stable/x86_64/ 2、下载tgz文件并解压 tar -zxvf docker-24.0.8.tgz 解压后docker文件夹下位docker相关文件 3、将老版本docker相关文件,备份 将 /usr/bin/docker下docker相关的文件,mv到备份目录…...
做T和做T+0有什么区别
做T和做T0在股市中实际上有紧密的联系,但也有所区别。以下是对两者的详细比较: 一、定义与原理 做T: 广义上,做T指的是一种通过低买高卖或高卖低买来赚取差价的交易策略。这种策略可以应用于不同的交易周期,包括日内交…...
【JAVA项目】基于ssm的【美食推荐管理系统】
【JAVA项目】基于ssm的【美食推荐管理系统】 技术简介:采用JSP技术、B/S架构、SSM框架、MySQL技术等实现。 系统简介:美食推荐管理系统,在系统首页可以查看首页、热门美食、美食教程、美食店铺、美食社区、美食资讯、我的、跳转到后台等内容。…...
从零开始学docker(五)-可用的docker镜像
最近docker镜像都不能访问,目前亲测可用的docker镜像可用,并拉取mysql测试完成。 [缺点] docker search 查不到镜像的索引列表,只能手动查询索引目录(解决方案在最后)。 linux服务器vim打开镜像文件daemon.json vim /e…...
repmgr集群部署-PostgreSQL高可用保证
📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、My…...
2020数字中国创新大赛-虎符网络安全赛道丨Web Writeup
本文是i春秋论坛作家「OPLV1H」表哥参加2020数字中国创新大赛-虎符网络安全赛道线上初赛的赛后总结,关于Web的Writeup记录,感兴趣的小伙伴快来学习吧。 1、hash_file — 是使用给定文件的内容生成哈希值,和文件名称无关。 2、jwt令牌结构和j…...
手动部署前后端项目到LInux上面
一:部署后端工程 在本地的idea中先启动当前的工程,然后访问一下,看看工程是否正常访问。 执行package指令,进行打包操作,将当前的springboot项目,打成一个jar包。 <!-- SpringBoot应用打包插件--> …...
【一本通】intervals
【一本通】intervals 💐The Begin💐点点关注,收藏不迷路💐 给出n个闭区间[ai,bi]和n个整数c1,……,cn。令Z表示一个整数集合,Z集合中最少要包含多少个整数可以使得每个区[ai,bi]都至少有ci个整数位于Z集合中。 输入 …...
测试脚本并发多进程:pytest-xdist用法
参考:https://www.cnblogs.com/poloyy/p/12694861.html pytest-xdist详解: https://www.cnblogs.com/poloyy/p/14708825.html 总 https://www.cnblogs.com/poloyy/category/1690628.html...
ALOHA 协议详解
注:本文为 “ALOHA 协议” 相关文章合辑。 未去重整理。 动态分配信道(ALOHA 协议、CSMA 协议) QuantumYou 于 2021-07-27 09:32:04 发布 ALOHA 协议 纯 ALOHA 协议 -纯 ALOHA 协议思想:不监听信道,不按时间槽发送…...
ios h5中在fixed元素中的input被focus时,键盘遮挡input (van-popup、van-feild)
问题描述: 前提:我使用的是vant组件库,其中一个页面中有一个van-popup组件,van-popup组件中又嵌套了一个van-field组件预期结果:当点击van-feild输入框时,键盘弹起,输入框显示在键盘上方实际结…...
【Mysql】索引下推、索引合并详解
文章目录 1. 索引下推(Index Condition Pushdown, ICP)定义工作机制实现过程优化的典型场景 2. 索引合并(Index Merge)定义索引合并方式使用限制 3. 对比与应用场景选用建议 这篇文章就简单的给大家介绍下索引下推、索引合并 1. 索…...
简易记事本项目—基于SSM+Vue前后端分离
🌈🌈🌈今天给大家分享的是:基于SSMVue的简易记事本项目 目录 引言 技术栈介绍 项目概述 1. 用户注册 2. 用户登录 3. 用户退出 4. 事件分类 5. 事件管理 项目主要图片 引言 在快节奏的现代生活中,我们常常被…...
Java转C之C/C++ 的调试和内存分析
C/C 的调试和内存分析工具非常丰富,这些工具可以帮助开发者定位错误、分析程序行为,以及检测内存问题(如内存泄漏、非法访问等)。下面将详细介绍常见的调试器和内存分析工具,并进行分类讲解。 一、调试器 1. GDB (GNU…...
Python 面向对象编程全面解析与深度探索
目录 类和对象的概念 类(Class) 对象(Object) (一)属性(Attributes) (a).实例属性(Instance Attributes) (b).类属性(Class Att…...
零配置打包工具 Parcel 的详细使用指南
前言 在前端开发中,选择一个高效且易用的打包工具至关重要。Parcel 作为一款零配置的 Web 应用打包工具,凭借其卓越的性能和简单的使用体验,赢得了众多开发者的青睐。它不仅能够自动处理依赖关系和代码打包,还支持热模块替换和多…...
批量查找文件关键字-工具
string find...
freeswitch(开启支持MCU视频会议,使用mod_av模块)
亲测版本centos 7.9系统–》 freeswitch1.10.9 本人freeswitch安装路径(根据自己的路径进入) /usr/local/freeswitch/etc/freeswitch场景说明: 有些场景想使用视频会议MCU融合画面进行开会使用方法: 第一步:下载插件 yum install -y epel-release yum install...
Quant connect的优势和不足,学习曲线难
Quant connect的优势和不足 Quant connect作为一个成熟的算法交易平台,具有许多优势,包括: 强大的回测功能:Quant connect提供了丰富的数据源和回测功能,可以对各种交易策略进行全面的回测和分析。 容易上手…...
对rust的全局变量使用drop方法
文章目录 rust处理全局变量的策略方法1:在main中自动Drop全局变量 参考 rust处理全局变量的策略 Rust 的静态变量不会在程序退出时自动调用 Drop,因为它们的生命周期与进程绑定。 use std::sync::OnceLock;struct GlobalData {content: String, }impl …...
使用FastGPT制做一个AI网站日志分析器
越来越的多网站面临每天上千次的扫描和各类攻击,及时发现攻击IP,并有效的屏蔽不良访问成为网站安全的重要保障,这里我们使用AI来完成对网站日志的日常分析。 我们来使用FastGPT来制做一个AI网站日志析器,下面就开始: …...
无限次使用 cursor pro
github地址 cursor-vip 使用方式 在 MacOS/Linux 中,请打开终端; 在 Windows 中,请打开 Git Bash。 然后执行以下命令来安装: 部分电脑可能会误报毒,需要关闭杀毒软件/电脑管家/安全防护再进行 方式1:通过…...
vuex 作用及五大组成部分
Vuex 是 Vue.js 的官方状态管理库,旨在帮助开发者构建大型应用时更好地管理和共享全局状态。它提供了一种集中式存储和管理应用所有组件的状态的方式,并且遵循单一状态树的原则。通过 Vuex,可以更容易地实现状态的可预测性和调试。 一、Vuex…...
Centos7上Jenkins+Docker+Git+SpringBoot自动化部署
文章目录 1.宿主机安装maven2.安装jenkins3.配置Jenkins4.Jenkins脚本自动安装JDK(可选) 1.宿主机安装maven wget https://dlcdn.apache.org/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz mv apache-maven-3.9.9-bin.tar.gz /usr/local…...
MATLAB图卷积神经网络GCN处理分子数据集节点分类研究
全文链接:https://tecdat.cn/?p38570 本文主要探讨了如何利用图卷积网络(GCN)对图中的节点进行分类。介绍了相关的数据处理、模型构建、训练及测试等环节,通过对分子数据集的操作实践,展示了完整的节点分类流程&#…...
高级Python游戏开发:创建一款多人对战坦克大战
在本教程中,我们将用Python的Pygame库开发一款高级的坦克大战游戏。这款游戏支持多人对战、碰撞检测、子弹射击以及地图障碍生成,适合作为学习Python高级游戏开发的练习项目。 一、游戏功能概述 多人对战模式:玩家可以操作坦克,在同一屏幕上互相攻击。子弹射击:坦克可以发…...
网站访问的基础-HTTP超文本传输协议
BS架构 浏览器Browser⬅➡服务器Server 浏览器和服务器之间通过 IP 地址进行通信,实现数据的请求和传输。 例如,当用户在浏览器中访问一个网站时,浏览器会根据用户输入的网址(通过 DNS 解析得到服务器 IP 地址)向服…...
使用Hydra库简化配置管理
使用Hydra库简化配置管理 简介 在现代软件开发中,配置管理是至关重要的。应用程序的灵活性和可维护性很大程度上取决于其如何处理配置。Hydra是一个由Facebook AI Research (FAIR) 开发的Python库,它旨在简化复杂应用的配置过程。Hydra使得开发者可以轻…...
Java对集合的操作方法
1. 数组转集合 //数组转集合 String[] split quickRechargeAmount.split(","); List<String> stringList Stream.of(split).collect(Collectors.toList()); 2. 对List集合数据内容进行分组 //对List集合数据内容进行分组 Map<String, List<LiveAppGi…...
WordPress酱茄主题 开源版 博客资讯自媒体网站模板
一款免费开源的WordPress主题,主题专为WordPress博客、资讯、自媒体网站而设计 运行环境 支持WordPress版本:5.6 兼容Chrome、Firefox、Safari等主流浏览器 支持设备:响应式布局,不同设备不同展示效果 服务器环境建议&#x…...
【SickOs1.1靶场渗透】
文章目录 一、基础信息 二、信息收集 三、反弹shell 四、提权 一、基础信息 Kali IP:192.168.20.146 靶机IP:192.168.20.150 二、信息收集 端口扫描 nmap -sS -sV -p- -A 192.168.20.150 开放了22、3128端口,8080端口显示关闭 22端…...
Javaweb web后端maven介绍作用安装
自动导入到这个项目 src是源代码 main主程序,核心代码 java是Java源代码 resources是项目配置文件 test测试相关的 maven概述 介绍 依赖在本地仓库查找,如果本地仓库有,用本地仓库的依赖,本地没有,连接中央仓库&…...
Input Action (输入动作) 在虚幻引擎中常用的值类型
1. Digital (bool) 含义: Digital 类型代表一个离散的、二元的输入状态,它只有两种可能的值:true(按下,激活)或 false(未按下,未激活)。 用途: 最常用于表示按键或按钮的按下状态。 适合于开关类型的操作,比如: 跳跃(按键按下时跳跃,松开时不跳跃) 奔跑/行走切换 …...
LabVIEW汽车综合参数测量
系统基于LabVIEW虚拟仪器技术,专为汽车带轮生产中的质量控制而设计,自动化测量和检测带轮的关键参数。系统采用PCIe-6320数据采集卡与精密传感器结合,能够对带轮的直径、厚度等多个参数进行高精度测量,并通过比较测量法判定产品合…...
快速且靠谱的简单安装 PostgreSQL 15 yum 安装postgis3.3
快速且靠谱的简单安装 PostgreSQL 15 yum 安装postgis3.3 1、确保已经安装了PostgreSQL数据库。2、添加PostGIS的EPEL仓库3、使用YUM安装PostGIS4、以下为其他安装方式,一个个去找源码的编译安装,过程较为繁琐(不熟路的不推荐) 要…...
MySQL八股文
MySQL 自己学习过程中的MySQL八股笔记。 主要来源于 小林coding 牛客MySQL面试八股文背诵版 以及b站和其他的网上资料。 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL&…...
Python高性能web框架-FastApi教程:(1)创建一个简单的FastApi
(1)创建一个简单的FastApi 1. 导入必要的库 from fastapi import FastAPI import uvicornFastAPI 是一个用于构建现代、快速(高性能)的Web API的Python框架。uvicorn 是一个ASGI服务器,用于运行异步的Python Web应用…...
多模态机器学习综述论文|Multimodal Machine Learning: A Survey and Taxonomy
1. 引言 多模态机器学习是一个跨学科领域,它涉及到从多种感官模态(如视觉、听觉、触觉等)中提取信息,并构建能够处理和关联这些信息的模型。这种学习方式对于人工智能理解复杂世界至关重要。 名词解释: 模态Modality…...
CentOS8:英伟达显卡驱动与CUDA安装
挺偶然的,同事在CentOS8版本的GPU服务器上安装英伟达的显卡驱动和CUDA遇到了问题,于是协助进行了安装,顺便记录下此次安装过程与心得。 目录 显卡驱动安装 步骤简述 详细步骤 1、官网下载需要的驱动 2、驱动软件包上传并加权 3、安装…...
【IDEA】启动报错
今天启动IDEA报错 报错信息: Cannot connect to already running IDE instance. Exception: Process 5,444 is still running 打开任务管理器,关掉进程ID5444的任务...
Opencv之图像梯度处理和绘制图像轮廓
一、梯度处理的sobel算子函数 处理示意 Sobel 算子是一种常用的图像边缘检测方法,结合了一阶导数和高斯平滑,用于检测图像的梯度信息。 1、功能 Sobel 算子用于计算图像在 x 和 y 方向的梯度,主要功能包括: 强调图像中灰度值的…...
5.2章节python字符串的格式化三种方式
在Python中,格式化字符串是编程中常见的任务,它用于将变量或表达式的值嵌入到字符串中。以下是三种常见的格式化字符串的方式: 1.百分号(%)格式化: 这是Python早期版本中常用的字符串格式化方法。通过在字…...
.NET Core 各版本特点、差异及适用场景详解
随着 .NET Core 的不断发展,微软推出了一系列版本来满足不同场景下的开发需求。这些版本随着时间的推移逐渐演变为统一的 .NET 平台(从 .NET 5 开始)。本文将详细说明每个版本的特点、差异以及适用场景,帮助开发者更好地选择和使用…...
2024.12.14 TCP/IP 网络模型有哪几层?
2024.12.14 TCP/IP 网络模型有哪几层? 2024.12.14 今天周六 看到大伙都在考六级,我来复盘小林coding的计算机网络的知识点: TCP/IP 网络模型有哪几层? 问大家,为什么要有 TCP/IP 网络模型? 对于同一台设备上的进程间通信,有…...
基于SpringBoot的嗨玩旅游网站:一站式旅游信息服务平台的设计与实现
摘要 在旅游需求日益增长的今天,一个全面、便捷的旅游信息服务平台显得尤为重要。嗨玩旅游网站正是为了满足这一需求而设计的在线平台,它提供了包括景点信息、旅游线路、商品信息、社区信息和活动推广等在内的丰富旅游目的地信息,旨在帮助用…...
HQChart使用教程30-K线图如何对接第3方数据42-DRAWTEXTREL,DRAWTEXTABS数据结构
HQChart使用教程30-K线图如何对接第3方数据42-DRAWTEXTREL,DRAWTEXTABS数据结构 效果图DRAWTEXTREL示例数据结构说明nametypecolorDrawVAlignDrawAlignDrawDrawTypeDrawDataFont DRAWTEXTABS示例数据结构说明nametypecolorDrawVAlignDrawAlignDrawDrawTypeDrawDataFont 效果图 …...
VMware ESXi上创建Ubuntu虚拟机并实现远程SSH访问全攻略
文章目录 前言1. 在VMware ESXI中创建Ubuntu虚拟机2. Ubuntu开启SSH远程服务3. 安装Cpolar工具4. 使用SSH客户端远程访问Ubuntu5. 固定TCP公网地址 前言 本文主要介绍如何在VMware ESXi上创建一台Ubuntu 22.04虚拟机,并通过Cpolar内网穿透工具配置公网地址…...