当前位置: 首页 > news >正文

Atlas 200I DK A2安装MindSpore Ascend版本

一、参考资料

mindspore快速安装

二、重要说明

经过博主多次尝试多个版本,Atlas 200I DK A2无法安装MindSpore Ascend版本

也有其他博主测试,也未尝成功,例如:【MindSpore易点通·漫游世界】在Atlas 200I DK A2 (CANN6.2.RC2)上安装MindSpore Ascend版的踩坑记录

mindspore 1.5.2 报错无法运行(./tensor_add_sample: symbol lookup error: /home/HwHiAiUser/.local/lib/python3.9/site-packages/mindspore/lib/libmindspore.so: undefined symbol: _ZN2ge5Model8SetGraphERKNS_5GraphE)

mindspore 1.6.2 报错无法运行(./tensor_add_sample: symbol lookup error: /home/HwHiAiUser/.local/lib/python3.9/site-packages/mindspore/lib/libmindspore.so: undefined symbol: _ZN2ge5Model8SetGraphERKNS_5GraphE)

mindspore 1.7.1 报错无法运行 (./tensor_add_sample: error while loading shared libraries: libhccl.so: cannot open shared object file: No such file or directory)

mindspore 1.8.1 报错无法运行(./tensor_add_sample: error while loading shared libraries: libhccl.so: cannot open shared object file: No such file or directory)

mindspore 1.9.0 报错无法运行(./tensor_add_sample: symbol lookup error: /home/HwHiAiUser/.local/lib/python3.9/site-packages/mindspore/lib/libmindspore.so: undefined symbol: _ZN2ge5Model8SetGraphERKNS_5GraphE)

mindspore 1.10.1 报错无法运行(./tensor_add_sample: symbol lookup error: /home/HwHiAiUser/.local/lib/python3.9/site-packages/mindspore/lib/libmindspore.so: undefined symbol: _ZN2ge5Model8SetGraphERKNS_5GraphE)

mindspore 2.0.0 报错无法运行(Unsupported device target Ascend)

mindspore 2.1.0 报错无法运行(Unsupported device target Ascend)

三、准备工作

1. 测试环境

设备型号:Atlas 200I DK A2
Operating System + Version: Ubuntu 22.04 LTS
CPU Type: 4核TAISHANV200M处理器
AI CPU number: 0
control CPU number: 4
RAM: 4GB 
miscroSD: 128GB
CANN Vertion: 7.0.RC1
HwHiAiUser@davinci-mini:~$ npu-smi info -t aicpu-config -i 0 -c 0Current AI CPU number          : 0Current control CPU number     : 4Number of AI CPUs set          : 0Number of control CPUs set     : 4

2. MindSpore与CANN版本对齐

通过 链接 查询MindSpore与Ascend配套软件包的版本配套关系。

在这里插入图片描述

3. 安装mindspore_ascend

详细过程,请参考:pip方式安装MindSpore Ascend 310版本

4. 验证是否安装成功

4.1 方法一

import mindspore as ms# ms.set_context(device_target='CPU')
# ms.set_context(device_target='GPU')
ms.set_context(device_target="Ascend")
ms.set_context(device_id=0)
mindspore.run_check()

如果输出以下结果,则说明mindspore_ascend安装成功。

MindSpore version: 版本号
The result of multiplication calculation is correct, MindSpore has been installed on platform [Ascend] successfully!

4.2 方法二

import numpy as np
import mindspore as ms
import mindspore.ops as opsms.set_context(device_target="Ascend")
x = ms.Tensor(np.ones([1,3,3,4]).astype(np.float32))
y = ms.Tensor(np.ones([1,3,3,4]).astype(np.float32))
print(ops.add(x, y))

如果输出以下结果,则说明mindspore_ascend安装成功。

[[[[2. 2. 2. 2.][2. 2. 2. 2.][2. 2. 2. 2.]][[2. 2. 2. 2.][2. 2. 2. 2.][2. 2. 2. 2.]][[2. 2. 2. 2.][2. 2. 2. 2.][2. 2. 2. 2.]]]]

4.3 方法三

ascend310_single_op_sample

这是一个[1, 2, 3, 4][2, 3, 4, 5]相加的简单样例,代码工程目录结构如下:

└─ascend310_single_op_sample├── CMakeLists.txt                    // 编译脚本├── README.md                         // 使用说明├── main.cc                           // 主函数└── tensor_add.mindir                 // MindIR模型文件
unzip ascend310_single_op_sample.zip
cd ascend310_single_op_sample# 编译
cmake . -DMINDSPORE_PATH=`pip show mindspore-ascend | grep Location | awk '{print $2"/mindspore"}' | xargs realpath`
make# 执行
./tensor_add_sample

如果输出以下结果,则说明mindspore_ascend安装成功。

3
5
7
9

四、测试代码

1. 示例一

用MindSpore搭建模型,并进行测试。

"""
MindSpore implementation of `MobileNetV1`.
Refer to MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications.
"""
import timefrom mindspore import nn, Tensor, ops
import mindspore.common.initializer as init
import mindspore as ms
from PIL import Image
from mindcv.data import create_transforms
import numpy as npdef depthwise_separable_conv(inp: int, oup: int, stride: int) -> nn.SequentialCell:return nn.SequentialCell(# dwnn.Conv2d(inp, inp, 3, stride, pad_mode="pad", padding=1, group=inp, has_bias=False),nn.BatchNorm2d(inp),nn.ReLU(),# pwnn.Conv2d(inp, oup, 1, 1, pad_mode="pad", padding=0, has_bias=False),nn.BatchNorm2d(oup),nn.ReLU(),)class MobileNetV1(nn.Cell):r"""MobileNetV1 model class, based on`"MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications" <https://arxiv.org/abs/1704.04861>`_Args:alpha: scale factor of model width. Default: 1.in_channels: number the channels of the input. Default: 3.num_classes: number of classification classes. Default: 1000."""def __init__(self,alpha: float = 1.,in_channels: int = 3,num_classes: int = 1000) -> None:super().__init__()input_channels = int(32 * alpha)# Setting of depth-wise separable conv# c: number of output channel# s: stride of depth-wise convblock_setting = [# c, s[64, 1],[128, 2],[128, 1],[256, 2],[256, 1],[512, 2],[512, 1],[512, 1],[512, 1],[512, 1],[512, 1],[1024, 2],[1024, 1],]features = [nn.Conv2d(in_channels, input_channels, 3, 2, pad_mode="pad", padding=1, has_bias=False),nn.BatchNorm2d(input_channels),nn.ReLU()]for c, s in block_setting:output_channel = int(c * alpha)features.append(depthwise_separable_conv(input_channels, output_channel, s))input_channels = output_channelself.features = nn.SequentialCell(features)# self.pool = GlobalAvgPooling()self.pool = nn.AdaptiveAvgPool2d(output_size=(1, 1))self.classifier = nn.Dense(input_channels, num_classes)self._initialize_weights()def _initialize_weights(self) -> None:"""Initialize weights for cells."""for _, cell in self.cells_and_names():if isinstance(cell, nn.Conv2d):cell.weight.set_data(init.initializer(init.XavierUniform(),cell.weight.shape,cell.weight.dtype))if isinstance(cell, nn.Dense):cell.weight.set_data(init.initializer(init.TruncatedNormal(),cell.weight.shape,cell.weight.dtype))def forward_features(self, x: Tensor) -> Tensor:x = self.features(x)return xdef forward_head(self, x: Tensor) -> Tensor:squeeze = ops.Squeeze(0)x = squeeze(x)x = self.pool(x)squeeze = ops.Squeeze(2)x = squeeze(x)x = x.transpose()x = self.classifier(x)return xdef construct(self, x: Tensor) -> Tensor:x = self.forward_features(x)x = self.forward_head(x)return xdef mobilenet_v1_100_224(pretrained: bool = False, num_classes: int = 1000, in_channels=3, **kwargs) -> MobileNetV1:"""Get MobileNetV1 model without width scaling.Refer to the base class `models.MobileNetV1` for more details."""model = MobileNetV1(alpha=1.0, in_channels=in_channels, num_classes=num_classes, **kwargs)return modelif __name__ == '__main__':# ms.set_context(device_target='GPU')# ms.set_context(device_target='CPU')ms.set_context(device_target="Ascend")ms.set_context(device_id=0)ms.set_seed(1)ms.set_context(mode=ms.PYNATIVE_MODE)img = Image.open("image.jpg").convert("RGB")# create transformtransform_list = create_transforms(dataset_name="imagenet",is_training=False,)transform_list.pop(0)for transform in transform_list:img = transform(img)img = np.expand_dims(img, axis=0)# create modelnetwork = mobilenet_v1_100_224()for i in range(100):# warmupnetwork(ms.Tensor(img))time_begin = time.time()for i in range(1000):# predictnetwork(ms.Tensor(img))time_total = (time.time() - time_begin) * 1000 / 1000print(f"total time is: {time_total}")# print(network)

2. 示例二

调用 mindcv库中的预训练模型进行测试。

"""MindSpore Inference Script
"""import numpy as np
from PIL import Imageimport mindspore as msfrom mindcv.data import create_transforms
from mindcv.models import create_model
import time# ms.set_context(device_target='CPU')
# ms.set_context(device_target='GPU')ms.set_context(device_target='Ascend')
ms.set_context(device_id=0)
ms.set_context(max_device_memory="3.5GB")def main():ms.set_seed(1)ms.set_context(mode=ms.PYNATIVE_MODE)img = Image.open("image.jpg").convert("RGB")# create transformtransform_list = create_transforms(dataset_name="imagenet",is_training=False,)transform_list.pop(0)for transform in transform_list:img = transform(img)img = np.expand_dims(img, axis=0)# create modelnetwork = create_model(model_name="mobilenet_v1_100",  # mobilenet_v1_100_224pretrained=False,)network.set_train(False)for i in range(100):# warmupnetwork(ms.Tensor(img))time_begin = time.time()for i in range(1000):# predictnetwork(ms.Tensor(img))time_total = (time.time() - time_begin) * 1000 / 1000print(f"total time is: {time_total}")if __name__ == "__main__":main()

五、FAQ

Q:RuntimeError: Load op info form json config failed, version: Ascend310B4

[WARNING] ME(230369:255086392991776,MainProcess):2024-05-25-17:29:28.302.942 [mindspore/run_check/_check_version.py:375] MindSpore version 2.1.1 and "te" wheel package version 7.0 does not match. For details, refer to the installation guidelines: https://www.mindspore.cn/install
[WARNING] ME(230369:255086392991776,MainProcess):2024-05-25-17:29:28.305.619 [mindspore/run_check/_check_version.py:382] MindSpore version 2.1.1 and "hccl" wheel package version 7.0 does not match. For details, refer to the installation guidelines: https://www.mindspore.cn/install
[WARNING] ME(230369:255086392991776,MainProcess):2024-05-25-17:29:28.305.849 [mindspore/run_check/_check_version.py:396] Please pay attention to the above warning, countdown: 3
[WARNING] ME(230369:255086392991776,MainProcess):2024-05-25-17:29:29.307.139 [mindspore/run_check/_check_version.py:396] Please pay attention to the above warning, countdown: 2
[WARNING] ME(230369:255086392991776,MainProcess):2024-05-25-17:29:30.308.249 [mindspore/run_check/_check_version.py:396] Please pay attention to the above warning, countdown: 1
[ERROR] KERNEL(230369,e7ffaf56f120,python):2024-05-25-17:29:35.761.869 [mindspore/ccsrc/kernel/oplib/op_info_utils.cc:172] LoadOpInfoJson] Get op info json suffix path failed, soc_version: Ascend310B4
[ERROR] KERNEL(230369,e7ffaf56f120,python):2024-05-25-17:29:35.762.199 [mindspore/ccsrc/kernel/oplib/op_info_utils.cc:111] GenerateOpInfos] Load op info json failed, version: Ascend310B4
Traceback (most recent call last):File "/root/Downloads/mindspore_ascend_demo.py", line 8, in <module>print(ops.add(x, y))File "/usr/local/miniconda3/envs/mindspore22/lib/python3.9/site-packages/mindspore/common/_stub_tensor.py", line 49, in funreturn method(*arg, **kwargs)File "/usr/local/miniconda3/envs/mindspore22/lib/python3.9/site-packages/mindspore/common/tensor.py", line 486, in __str__return str(self.asnumpy())File "/usr/local/miniconda3/envs/mindspore22/lib/python3.9/site-packages/mindspore/common/tensor.py", line 924, in asnumpyreturn Tensor_.asnumpy(self)
RuntimeError: Load op info form json config failed, version: Ascend310B4----------------------------------------------------
- C++ Call Stack: (For framework developers)
----------------------------------------------------
mindspore/ccsrc/plugin/device/ascend/hal/device/ascend_kernel_runtime.cc:431 Init[ERROR] PIPELINE(230369,e7ffedd76020,python):2024-05-25-17:29:35.824.442 [mindspore/ccsrc/pipeline/jit/pipeline.cc:2311] ClearResAtexit] Check exception before process exit: Load op info form json config failed, version: Ascend310B4----------------------------------------------------
- C++ Call Stack: (For framework developers)
----------------------------------------------------
mindspore/ccsrc/plugin/device/ascend/hal/device/ascend_kernel_runtime.cc:431 Init

mindspore_ascend 2.1.1 测试失败。

Q:RuntimeError: The device address type is wrong: type name in address:CPU, type name in context:Ascend

RuntimeError: The device address type is wrong: type name in address:CPU, type name in context:Ascend----------------------------------------------------
- C++ Call Stack: (For framework developers)
----------------------------------------------------
mindspore/ccsrc/plugin/device/ascend/hal/hardware/ge_device_res_manager.cc:72 AllocateMemory

mindspore_ascend 2.2.0 测试失败。

相关文章:

Atlas 200I DK A2安装MindSpore Ascend版本

一、参考资料 mindspore快速安装 二、重要说明 经过博主多次尝试多个版本&#xff0c;Atlas 200I DK A2无法安装MindSpore Ascend版本。 也有其他博主测试&#xff0c;也未尝成功&#xff0c;例如&#xff1a;【MindSpore易点通漫游世界】在Atlas 200I DK A2 (CANN6.2.RC2)…...

Go 生成UUID唯一标识

什么是UUID 通用唯一识别码&#xff08;英语&#xff1a;Universally Unique Identifier&#xff0c;简称UUID&#xff09;是一种软件建构的标准&#xff0c;亦为自由软件基金会组织在分散式计算环境领域的一部份。 UUID的目的&#xff0c;是让分散式系统中的所有元素&#x…...

【知识蒸馏】deeplabv3 logit-based 知识蒸馏实战,对剪枝的模型进行蒸馏训练

本文将对【模型剪枝】基于DepGraph(依赖图)完成复杂模型的一键剪枝 文章中剪枝的模型进行蒸馏训练 一、逻辑蒸馏步骤 加载教师模型定义蒸馏loss计算蒸馏loss正常训练 二、代码 1、加载教师模型 教师模型使用未进行剪枝&#xff0c;并且已经训练好的原始模型。 teacher_mod…...

02.爬虫---HTTP基本原理

02.HTTP基本原理 1.URI 和 URL 的区别2.HTTP 和 HTTPS 的区别3.请求过程 1.URI 和 URL 的区别 URL&#xff08;Uniform Resource Locator&#xff09;即-统一资源定位符 URL是用来定位和访问互联网上资源的独特标识&#xff0c;它包括了资源的位置&#xff08;如IP地址或域名&a…...

HTTP响应的基本概念

目录 HTTP响应中的一些信息 HTTPS HTTP响应中的一些信息 状态码&#xff1a;描述了这次HTTP请求是否成功&#xff0c;以及失败的原因。 1&#xff09;200 ---OK 表示这次访问成功了。 2&#xff09;404 ---Not Found 表示客户端请求的资源在服务器这边不存在。 3&a…...

链栈的存储

单向链表在栈中的存储 typedef struct StackNode {SElemType data;struct StackNode* next; }StackNode, *LinkStack; LinkStack S; //链栈初始化 void InitStack(LinkStack& S) {S NULL;return OK; } //判断链栈是否为空 Status StackEmpty(LinkStack S) {if (S NU…...

常见网络协议及端口号

https://www.cnblogs.com/Snail-yellow/p/17722411.html 常见的网络协议-腾讯云开发者社区-腾讯云 常见的网络协议知识整理_五种常用的网络协议-CSDN博客 端口 协议 常见的网络协议_计算机网络协议有哪些csdn-CSDN博客 ​​​​​​​​​​​​​​协议 常见的网络协议知…...

几张自己绘制的UML图

全部来源于公司项目&#xff0c;使用建模工具 Enterprise Architect。自己做的其余文档&#xff08;含绘图&#xff09;&#xff0c;因保密协议不便于公开。...

[读论文]精读Self-Attentive Sequential Recommendation

论文链接&#xff1a;https://arxiv.org/abs/1808.09781 其他解读文章&#xff1a;https://mp.weixin.qq.com/s/cRQi3FBi9OMdO7imK2Y4Ew 摘要 顺序动态是许多现代推荐系统的一个关键特征&#xff0c;这些系统试图根据用户最近执行的操作来捕获用户活动的“上下文”。为了捕捉…...

HTML静态网页成品作业(HTML+CSS)——动漫海绵宝宝介绍网页(5个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有5个页面。 二、作品演示 三、代…...

开放式耳机2024超值推荐!教你如何选择蓝牙耳机!

开放式耳机的便利性让它在我们的日常生活中变得越来越重要。它让我们摆脱了传统耳机的限制&#xff0c;享受到了更多的自由。不过&#xff0c;市面上的开放式耳机种类繁多&#xff0c;挑选一款既实用又实惠的产品确实需要一些小窍门。作为一位对开放式耳机颇有研究的用户&#…...

程序员搞副业的障碍有那些?

利用信息差是最常见的商业模式 在这个世界上&#xff0c;没有什么是所有人都知道的&#xff0c;信息差总是存在的。 无论是经验、技巧、知识&#xff0c;甚至是常识&#xff0c;都可能是信息差的源泉&#xff0c;而存在信息差的地方就意味着有赚钱的商机。 面对用户需求的金…...

windows7的ie11降级到ie8

重点是要在程序管理窗口中“查看已安装的更新”打开当前系统中已安装更新列表&#xff0c;找到两个IE11的更新&#xff08;见下图“卸载文件“&#xff09;并卸载掉&#xff0c;这样windows功能中的ie11才会变成ie8. 打开控制面板 进入面板&#xff0c;点击程序&#xff0c;进…...

楼房vr安全逃生模拟体验让你在虚拟环境中亲身体验火灾的紧迫与危险

消防VR安全逃生体验系统是深圳VR公司华锐视点引入了前沿的VR虚拟现实、web3d开发和多媒体交互技术&#xff0c;为用户打造了一个逼真的火灾现场应急逃生模拟演练环境。 相比传统的消防逃生模拟演练&#xff0c;消防VR安全逃生体验系统包含知识讲解和模拟实训演练&#xff0c;体…...

rust 学习--所有权

所有权是rust的核心功能。 Rust 是通过所有权来管理内存回收的 栈&#xff08;Stack&#xff09; 栈是后进先出的 栈中存储的数据在编译时是固定内存大小的数据 数据移除栈叫出栈&#xff0c;数据存入栈叫入栈 入栈要比在堆上分配内存块&#xff0c;入栈时分配器无需为存储…...

关于Git 的基本概念和使用方式

Git是一个分布式版本控制系统&#xff0c;用于跟踪和管理代码的改动。它具有以下基本概念和使用方式&#xff1a; 1. 仓库&#xff08;Repository&#xff09;&#xff1a;Git使用仓库来存储代码和相关的历史记录。仓库可以是本地的&#xff0c;也可以是远程的。本地仓库保存在…...

《计算机网络微课堂》1-6 计算机体系结构

常见的计算机网络体系结构 从本节课开始&#xff0c;我们要用 4 次课的时间来介绍有关计算机网络体系结构的知识&#xff0c;具体包含以下内容&#xff1a; 一&#xff0c;常见的计算机网络体系结构二&#xff0c;计算机网络体系结构分层的必要性三&#xff0c;计算机网络体系…...

大模型的灵魂解读:Anthropic AI的Claude3 Sonnet可解释性研究

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调重新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;则提供了大模型领域最新技…...

大模型框架:vLLM

目录 一、vLLM 介绍 二、安装 vLLM 2.1 使用 GPU 进行安装 2.2 使用CPU进行安装 2.3 相关配置 三、使用 vLLM 3.1 离线推理 3.2 适配OpenAI-API的API服务 一、vLLM 介绍 vLLM是伯克利大学LMSYS组织开源的大语言模型高速推理框架。它利用了全新的注意力算法「PagedAtten…...

SQL 使用心得【持续更新】

COUNT&#xff08;字段&#xff09; 不会统计 NULL 值&#xff0c;但是COUNT&#xff08;*&#xff09;会只要有子查询&#xff0c;就需要给子查询定义别名&#xff01;where 后面的条件表达式中不能存在聚合函数&#xff0c;但是 Having 可以聚合函数基本上都是需要配合 group…...

大模型---RLHF

目录 1.RLHF的定义 2.LLM的RLHF 3.奖励模型 4.RLHF的主要问题与局限 5.“非显式RL”方法 (1)DPO (2)RRHF 后续有更深入学习,再继续补充: 1.RLHF的定义 RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)的核心思想就是先让人告诉模型…...

Phi-3-mini-4k-instruct-gguf代码实例:curl调用/health接口与Python集成示例

Phi-3-mini-4k-instruct-gguf代码实例&#xff1a;curl调用/health接口与Python集成示例 1. 模型简介 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本&#xff0c;特别适合问答、文本改写、摘要整理和简短创作等场景。这个经过优化的版本可以直接…...

零基础部署MinerU 2.5-1.2B镜像:轻松实现PDF高质量结构化提取

零基础部署MinerU 2.5-1.2B镜像&#xff1a;轻松实现PDF高质量结构化提取 1. 引言 1.1 为什么需要PDF结构化提取 在日常工作和学习中&#xff0c;PDF文档是最常见的信息载体之一。然而&#xff0c;当我们需要从PDF中提取内容时&#xff0c;经常会遇到以下问题&#xff1a; …...

墨韵技术|CMake:现代项目构建的「行云流水」之道

&#x1f30a; 墨韵技术&#xff5c;CMake&#xff1a;现代项目构建的「行云流水」之道Bilibili 同步视频&#x1f3af; 为何选择 CMake&#xff1f;—— 稳如磐石&#xff0c;兼容万象&#x1f50d; CMake 核心特性 笔笔点睛1️⃣ 自动搜索库与头文件 智能无感2️⃣ 独立构建…...

漏洞扫描器:常见漏洞模式的自动化检测

漏洞扫描器&#xff1a;常见漏洞模式的自动化检测 在当今数字化时代&#xff0c;网络安全问题日益突出&#xff0c;企业和个人面临着来自黑客、恶意软件等各类威胁。漏洞扫描器作为一种自动化工具&#xff0c;能够高效检测系统中存在的常见漏洞模式&#xff0c;帮助用户提前发…...

2026-04-12 全国各地响应最快的 BT Tracker 服务器(联通版)

数据来源&#xff1a;https://bt.me88.top 序号Tracker 服务器地域网络响应(毫秒)1http://211.75.205.187:80/announce上海联通192udp://211.75.205.189:6969/announce江西南昌联通293udp://132.226.6.145:6969/announce北京联通614udp://185.216.179.62:25/announce北京联通1…...

拆穿名词诈骗!用大白话理解晦涩难懂的AI概念谒

1. 架构背景与演进动力 1.1 从单体到碎片化&#xff1a;.NET 的开源征程 在.NET Framework 时代&#xff0c;构建系统主要围绕 Windows 操作系统紧密集成&#xff0c;采用传统的封闭式开发模式。然而&#xff0c;随着.NET Core 的推出&#xff0c;微软开启了彻底的开源与跨平台…...

Arduino nRF5x低功耗库:深度解析SYSTEM_OFF与CONSTANT_LATENCY模式

1. 项目概述 Arduino nRF5x_lowPower 是专为 Nordic Semiconductor nRF5x 系列 SoC&#xff08;如 nRF52832、nRF52840、nRF51822&#xff09;设计的 Arduino 兼容低功耗管理库。它并非简单封装睡眠函数&#xff0c;而是深度对接 nRF5x 片上电源管理单元&#xff08;PMU&…...

FPGA入门200例(19):系统任务`$display`、`$monitor`与`$readmemb`在仿真中的妙用

引言 在FPGA入门学习中,新手往往会陷入一个误区:“只要Verilog代码编写完成,下载到开发板就能正常工作”,却忽略了“仿真验证”这一核心步骤。实际上,FPGA开发的核心流程是“编写代码→仿真验证→综合实现→板级测试”,其中仿真验证是排查代码逻辑错误、避免板级测试踩坑…...

避坑指南:调整Intel/AMD平台PCIe超时设置前,你必须知道的CPU内部Timer架构

深入解析Intel/AMD平台PCIe超时机制&#xff1a;系统架构师必须了解的CPU内部Timer设计 在当今高性能计算和低延迟网络应用中&#xff0c;PCIe设备的稳定性和性能优化成为系统架构师面临的核心挑战之一。当FPGA加速卡突然停止响应&#xff0c;或者100G网卡出现间歇性数据丢失时…...