- 1 What,什么是孪生调试Ascend C提供孪生调试方法,即CPU域模拟NPU域的行为,相同的算子代码可以在CPU域调试精度,NPU域调试性能。孪生调试的整体方案如下:开发者通过调用Ascend C类库编写Ascend C算子kernel侧源码,kernel侧源码通过通用的GCC编译器进行编译,编译生成通用的CPU域的二进制,可以通过gdb通用调试工具等调试手段进行调试;kernel侧源... 1 What,什么是孪生调试Ascend C提供孪生调试方法,即CPU域模拟NPU域的行为,相同的算子代码可以在CPU域调试精度,NPU域调试性能。孪生调试的整体方案如下:开发者通过调用Ascend C类库编写Ascend C算子kernel侧源码,kernel侧源码通过通用的GCC编译器进行编译,编译生成通用的CPU域的二进制,可以通过gdb通用调试工具等调试手段进行调试;kernel侧源...
- 这篇文章将带你深入探索io_uring用户态接口的神奇之处,它是一项引人注目的技术,能够显著提升IO操作的性能。我们将介绍io_uring的工作原理,并解释它为什么在性能方面与传统接口相比具有明显优势。你将了解到io_uring的异步特性是如何实现的,以及它如何减少了对内核的系统调用次数。我们还将探讨io_uring在实际应用中的潜力和使用场景,以及如何利用它来优化你的应用程序。 这篇文章将带你深入探索io_uring用户态接口的神奇之处,它是一项引人注目的技术,能够显著提升IO操作的性能。我们将介绍io_uring的工作原理,并解释它为什么在性能方面与传统接口相比具有明显优势。你将了解到io_uring的异步特性是如何实现的,以及它如何减少了对内核的系统调用次数。我们还将探讨io_uring在实际应用中的潜力和使用场景,以及如何利用它来优化你的应用程序。
- 本文将带领你深入了解计时器的原理和应用场景,并详细介绍时间轮技术的革命性特点。文章首先解释了计时器的概念和重要性,以及在各种应用中的广泛应用,如任务调度、事件触发和性能监控等。接着,文章引入了时间轮作为一种创新的时间管理工具,其能够以环形结构高效地管理和触发定时任务。你将深入了解时间轮的工作原理、数据结构和相关算法,以及如何利用时间轮提高应用程序的性能和响应能力。 本文将带领你深入了解计时器的原理和应用场景,并详细介绍时间轮技术的革命性特点。文章首先解释了计时器的概念和重要性,以及在各种应用中的广泛应用,如任务调度、事件触发和性能监控等。接着,文章引入了时间轮作为一种创新的时间管理工具,其能够以环形结构高效地管理和触发定时任务。你将深入了解时间轮的工作原理、数据结构和相关算法,以及如何利用时间轮提高应用程序的性能和响应能力。
- 当涉及构建快速响应的I/O密集型应用时,io_uring技术展现出了其卓越的潜力。本文摘要将深入探讨如何充分利用io_uring的特性来优化应用程序性能。通过异步I/O操作和高效事件处理,io_uring为开发人员提供了一种强大工具,能够显著减少I/O等待时间并实现更高的吞吐量。 当涉及构建快速响应的I/O密集型应用时,io_uring技术展现出了其卓越的潜力。本文摘要将深入探讨如何充分利用io_uring的特性来优化应用程序性能。通过异步I/O操作和高效事件处理,io_uring为开发人员提供了一种强大工具,能够显著减少I/O等待时间并实现更高的吞吐量。
- VS1053是一款硬件编解码的音频芯片,提供SPI接口和IIS接口两种通信协议,这篇文章是介绍在Linux下如果模拟SPI时序来操作VS1053完成录音、播放音频歌曲功能。 VS1053是一款硬件编解码的音频芯片,提供SPI接口和IIS接口两种通信协议,这篇文章是介绍在Linux下如果模拟SPI时序来操作VS1053完成录音、播放音频歌曲功能。
- 1、nginx参数详解 1.1、nginx.conf 配置文件全览#---全局块开始----#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/ngin... 1、nginx参数详解 1.1、nginx.conf 配置文件全览#---全局块开始----#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/ngin...
- 前面两篇文章进行了uboot的移植,本篇进行Linux内核的移植。 前面两篇文章进行了uboot的移植,本篇进行Linux内核的移植。
- 上一篇已经对TF-A,U-BOOT和Kernel已经重新编译后,还是不能点亮屏幕。群里的谢小康给了我点提示,在此感谢他的帮助。找相关资料才知道,dtc不但可以单独把当个dts编译成dtb,还能把dtb还原成dts,不过转换后的dts和之前的dts的格式和代码不一样。之前的dts有依赖其他,所以代码量比较少,而转换后的dts能获取依赖的dts的代码所以代码量比较多。 重新刷系统后... 上一篇已经对TF-A,U-BOOT和Kernel已经重新编译后,还是不能点亮屏幕。群里的谢小康给了我点提示,在此感谢他的帮助。找相关资料才知道,dtc不但可以单独把当个dts编译成dtb,还能把dtb还原成dts,不过转换后的dts和之前的dts的格式和代码不一样。之前的dts有依赖其他,所以代码量比较少,而转换后的dts能获取依赖的dts的代码所以代码量比较多。 重新刷系统后...
- 上面一篇文章是使用《MYD-YA157C_Linux软件开发指南V2.1》遇到坑,折腾2个多星期,终于找到旧版《MYD-YA157C Linux 软件开发手册 V2.1-200610》这本教程指南讲得很详细,根据教程重新部署。为了好学习的环境一样,选择课程提供智慧物流课程资源清单资源包里面的MYiR-YA157C-V2-qt镜像。 1.1 简单将一下ubuntu18.04版本安... 上面一篇文章是使用《MYD-YA157C_Linux软件开发指南V2.1》遇到坑,折腾2个多星期,终于找到旧版《MYD-YA157C Linux 软件开发手册 V2.1-200610》这本教程指南讲得很详细,根据教程重新部署。为了好学习的环境一样,选择课程提供智慧物流课程资源清单资源包里面的MYiR-YA157C-V2-qt镜像。 1.1 简单将一下ubuntu18.04版本安...
- Linux 内核热补丁 linux 内核热补丁技术背景 update和upgrade的区别Linux upgrade (升级)升级是软件的最新版本。升级的频率比更新的频率低,并且通常以软件的重大改进,新功能,增强的功能和其他明显的更改。通常考虑到比较大的变化和更高的性能,必须升级操作系统。Linux update (更新)软件更新是补丁程序,并且可以充当您正在使用的系统的增强版本。通常,更... Linux 内核热补丁 linux 内核热补丁技术背景 update和upgrade的区别Linux upgrade (升级)升级是软件的最新版本。升级的频率比更新的频率低,并且通常以软件的重大改进,新功能,增强的功能和其他明显的更改。通常考虑到比较大的变化和更高的性能,必须升级操作系统。Linux update (更新)软件更新是补丁程序,并且可以充当您正在使用的系统的增强版本。通常,更...
- 模块是程序加载时被动态装载的,模块在装载后其存在于内存中同样存在一个内存基址,当我们需要操作这个模块时,通常第一步就是要得到该模块的内存基址,模块分为用户模块和内核模块,这里的用户模块指的是应用层进程运行后加载的模块,内核模块指的是内核中特定模块地址,本篇文章将实现一个获取驱动ntoskrnl.exe的基地址以及长度,此功能是驱动开发中尤其是安全软件开发中必不可少的一个功能。关于该程序的解释... 模块是程序加载时被动态装载的,模块在装载后其存在于内存中同样存在一个内存基址,当我们需要操作这个模块时,通常第一步就是要得到该模块的内存基址,模块分为用户模块和内核模块,这里的用户模块指的是应用层进程运行后加载的模块,内核模块指的是内核中特定模块地址,本篇文章将实现一个获取驱动ntoskrnl.exe的基地址以及长度,此功能是驱动开发中尤其是安全软件开发中必不可少的一个功能。关于该程序的解释...
- 在正常情况下,要想使用`GetProcAddress`函数,需要首先调用`LoadLibraryA`函数获取到`kernel32.dll`动态链接库的内存地址,接着在调用`GetProcAddress`函数时传入模块基址以及模块中函数名即可动态获取到特定函数的内存地址,但在有时这个函数会被保护起来,导致我们无法直接调用该函数获取到特定函数的内存地址,此时就需要自己编写实现`LoadLibrary` 在正常情况下,要想使用`GetProcAddress`函数,需要首先调用`LoadLibraryA`函数获取到`kernel32.dll`动态链接库的内存地址,接着在调用`GetProcAddress`函数时传入模块基址以及模块中函数名即可动态获取到特定函数的内存地址,但在有时这个函数会被保护起来,导致我们无法直接调用该函数获取到特定函数的内存地址,此时就需要自己编写实现`LoadLibrary`
- @[toc] nn.AdaptiveAvgPool2d功能:该函数与二维平均池化运算类似,区别主要体现在自适应上,对于任何输入大小,输出大小均为指定的H×W大小。nn.AdaptiveAvgPool2d(output_size)output_size:指定的输出大小,可以是元组(H,W),或者是单个的数,如果是单个的数,则表示输出的高和宽尺寸一样,output_size大小可以大于输入的图片... @[toc] nn.AdaptiveAvgPool2d功能:该函数与二维平均池化运算类似,区别主要体现在自适应上,对于任何输入大小,输出大小均为指定的H×W大小。nn.AdaptiveAvgPool2d(output_size)output_size:指定的输出大小,可以是元组(H,W),或者是单个的数,如果是单个的数,则表示输出的高和宽尺寸一样,output_size大小可以大于输入的图片...
- 主进程收到 SIGTERM 信号,之后又发生了什么事情,才让子进程们收到 SIGKILL 信号的呢?让我们看一下 kernel 源码吧。 主进程收到 SIGTERM 信号,之后又发生了什么事情,才让子进程们收到 SIGKILL 信号的呢?让我们看一下 kernel 源码吧。
- @toc 摘要本文通过对植物幼苗分类的实际例子来感受一下超大核的魅力所在。这篇文章能让你学到:通过对论文的解读,了解RepLKNet超大核的设计思想和架构。如何使用数据增强,包括transforms的增强、CutOut、MixUp、CutMix等增强手段?如何调用自定义的模型?如何使用混合精度训练?如何使用梯度裁剪防止梯度爆炸?如何使用DP多显卡训练?如何绘制loss和acc曲线?如何生成v... @toc 摘要本文通过对植物幼苗分类的实际例子来感受一下超大核的魅力所在。这篇文章能让你学到:通过对论文的解读,了解RepLKNet超大核的设计思想和架构。如何使用数据增强,包括transforms的增强、CutOut、MixUp、CutMix等增强手段?如何调用自定义的模型?如何使用混合精度训练?如何使用梯度裁剪防止梯度爆炸?如何使用DP多显卡训练?如何绘制loss和acc曲线?如何生成v...
上滑加载中
推荐直播
-
华为云云原生FinOps解决方案,为您释放云原生最大价值
2024/04/24 周三 16:30-18:00
Roc 华为云云原生DTSE技术布道师
还在对CCE集群成本评估感到束手无策?还在担心不合理的K8s集群资源申请和过度浪费?华为云容器服务CCE全新上线云原生FinOps中心,为用户提供多维度集群成本可视化,结合智能规格推荐、混部、超卖等成本优化手段,助力客户降本增效,释放云原生最大价值。
去报名 -
鲲鹏开发者创享日·江苏站暨数字技术创新应用峰会
2024/04/25 周四 09:30-16:00
鲲鹏专家团
这是华为推出的旨在和众多技术大牛、行业大咖一同探讨最前沿的技术思考,分享最纯粹的技术经验,进行最真实的动手体验,为开发者提供一个深度探讨与交流的平台。
即将直播 -
产教融合专家大讲堂·第①期《高校人才培养创新模式经验分享》
2024/04/25 周四 16:00-18:00
于晓东 上海杉达学院信息科学与技术学院副院长;崔宝才 天津电子信息职业技术学院电子与通信技术系主任
本期直播将与您一起探讨高校人才培养创新模式经验。
去报名
热门标签