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

14-28 剑和诗人2 - 高性能编程Bend和Mojo

14-28 剑和诗人2 - 高性能编程Bend和Mojo

介绍:

在不断发展的计算世界中,软件和硬件之间的界限变得越来越模糊。随着我们不断突破技术可能性的界限,对能够利用现代硬件功能的高效、可扩展的编程语言的需求从未如此迫切。

Bend和 Mojo是编程语言领域的两种新秀,它们有望弥合数学(算法的理论基础)和金属(执行这些算法的物理硬件)之间的鸿沟。

Bend:用于本机多线程的高级语言

乍一看,Bend 似乎只是在拥挤的编程语言领域中争夺关注的另一种语言。然而,它的独特之处在于,它结合了现代高级语言的易用性与 Apple Silicon 和 NVIDIA GPU 等尖端硬件平台上原生多线程的原始功能。

并行编程中最大的挑战之一是管理并发执行、同步和数据共享的复杂性。Bend 旨在通过提供 Python 程序员熟悉的高级抽象来缓解这些挑战,同时仍允许开发人员充分利用多核处理器和 GPU 的潜力。

Bend 的秘诀在于它能够将现代高级语言功能(如具有完全闭包的 lambda、无限制递归和分支、折叠和代数数据类型 (ADT))直接编译为本机多线程代码。这意味着开发人员可以使用熟悉的结构编写代码,而不必担心并行化和线程管理的低级细节。

在底层,Bend 编译为 HVM2,这是一个用 Rust 实现的线程安全运行时。此运行时管理 Bend 程序的执行,确保它们充分利用可用的硬件资源,同时保持线程安全性和正确性。

Bend 最令人兴奋的方面之一是其开源特性。Bend 和 HVM2 均可在 GitHub 上找到,开发人员可以为项目做出贡献、报告问题并提出新功能。这种协作方式不仅培育了一个充满活力的社区,而且还确保 Bend 不断发展并适应编程世界不断变化的需求。

Mojo:一种具有 CUDA 风格、类似 Python 的高性能计算语言

Bend 旨在为并行编程提供高级抽象,而 Mojo 则采用了不同的方法。Mojo 是一种 CUDA 风格的 Python 类语言,专为高性能计算任务而设计,例如手动编写现代神经网络加速代码。

CUDA(统一计算设备架构)是 NVIDIA 为其 GPU 开发的并行计算平台和编程模型。它允许开发人员利用 GPU 的强大并行处理能力来执行通用计算任务,使其成为需要大量数学计算的应用程序(例如机器学习和科学模拟)的理想选择。

Mojo 的语法深受 Python 的启发,因此熟悉这种流行语言的开发人员也可以使用它。然而,Mojo 的设计速度与 C 级速度相当,弥补了 Python 的生产力与 C 和 C++ 等低级语言的性能之间的差距。

Mojo 的一个主要功能是它能够让开发人员精确控制如何实现并行性。这种控制水平在编写现代神经网络加速代码时特别有用,因为优化性能至关重要。

Mojo 的设计理念围绕“内核”的概念展开,内核本质上是小型、高度优化的函数,可在 GPU 上并行运行。开发人员可以使用 Mojo 类似 Python 的语法编写这些内核,该语言的编译器将负责将其转换为 CUDA 代码,从而确保在 NVIDIA GPU 上高效执行。

与 Bend 一样,Mojo 也是一个开源项目,允许开发人员为其开发做出贡献并根据自己的特定需求进行定制。Mojo 功能的一个显著示例是在单个 Mojo 源文件中实现 Llama2 语言模型,展示了其处理复杂计算任务的潜力。

数学与金属的相互作用

Bend 和 Mojo 的核心在于数学和金属之间的基本相互作用。在这里,数学指的是算法和计算的理论基础,而金属则代表执行这些计算的物理硬件。

传统上,编程语言要么专注于提供高级抽象以简化编程的数学方面(例如 Python、Java),要么优先考虑低级控制和性能,更接近硬件(例如 C、C++、汇编)。然而,随着计算需求的不断增长,人们越来越需要能够在这两个极端之间取得平衡的语言。

Bend 和 Mojo 代表了两种不同的方法来弥合数学和金属之间的差距。Bend 旨在提供一种让开发人员感到熟悉的高级抽象,同时仍然利用本机多线程和并行处理的强大功能。另一方面,Mojo 采用了更低级的方法,让开发人员能够精确控制并行性,同时保持类似 Python 语法的生产力优势。

两种语言各有优缺点,选择哪种语言取决于手头项目的具体要求。对于优先考虑易于开发和快速原型设计的应用程序,Bend 可能是更好的选择,它允许开发人员编写并行代码而不必担心底层细节。另一方面,对于需要对并行性进行细粒度控制的性能关键型应用程序,Mojo 的 CUDA 风格方法可能更合适。

无论选择哪种语言,其基本原理都是相同的:通过有效地弥合数学和金属之间的差距,开发人员可以解锁新的计算能力和效率水平,为复杂问题的创新解决方案铺平道路。

Bend 与 Mojo:

弯曲:

  • 高级现代语言特性,如 lambda、闭包、递归、模式匹配
  • 将这些高级构造直接编译为本机多线程代码
  • 语法和特性受到 Python 的启发,为许多开发人员所熟悉
# Bend example: Parallel map with lambda
values = [1, 2, 3, 4, 5]
squares = values.map(lambda x: x * x)
# Closure and recursion example
def factorial(n):if n == 0:return 1else:return n * factorial(n-1)
  • 在底层,Bend 编译为 HVM2 — Rust 中的线程安全运行时
  • HVM2 管理并行执行、同步和数据共享
  • 开源,编译器和运行时可在 GitHub 上获取

魔力:

  • 类似 Python 的语法,但专为高性能计算而设计
  • 专为 NVIDIA GPU 上的 CUDA 编程量身定制
  • 与 Bend 相比,对并行性的控制级别较低
# Mojo example: CUDA kernel for vector addition
@kernel
def vector_add(a, b, c):i = cuda.grid(1)if i < c.size:c[i] = a[i] + b[i]
  • 能够直接在代码中定义 CUDA 内核
  • 精确控制如何在 GPU 上实现并行性
  • 适用于手工编码现代神经网络加速
# Mojo example: Llama2 model in a single file
with gpu_alloc(model.size) as model_weights:...for layer in model.layers:...@kerneldef compute_attention(...)...
  • 比 Bend 低级,更接近“金属”(硬件)
  • 以 C 级速度执行以获得最佳性能
  • 开源,有 Llama2 实现的示例

因此,Bend 为并行编程提供了高级 Pythonic 抽象,将现代语言功能编译为本机多线程。另一方面,Mojo 是一种低级 CUDA 风格的语言,旨在精确控制 GPU 并行性和高性能计算任务(如神经网络加速)。选择取决于生产力与低级控制,以及应用程序的性能要求。

并行编程的未来

Bend 和 Mojo 等语言的出现清楚地表明,编程的未来在于并行处理和充分利用现代硬件的潜力。随着对计算密集型应用程序的需求不断增长,对能够利用 GPU、多核处理器和其他并行架构的高效且可扩展的编程语言的需求将变得越来越重要。

预计 Bend 和 Mojo 等并行编程语言将产生重大影响的一个领域是人工智能/机器学习领域。这些学科严重依赖计算密集型任务,例如训练大型神经网络和处理大量数据。通过利用现代硬件提供的并行性,Bend 和 Mojo 等语言可以加速人工智能和机器学习应用程序的开发和部署,从而缩短训练时间、提高推理效率,并提高解决更大、更复杂问题的能力。

并行编程语言可能发挥关键作用的另一个领域是科学计算和高性能计算 (HPC) 应用。计算流体动力学、分子建模和气候模拟等领域通常需要大量计算能力来解决复杂的数学模型并处理大量数据。通过利用并行处理能力,Bend 和 Mojo 等语言可以帮助加速这些计算,使研究人员和科学家能够更快地获得见解并做出发现。

然而,采用并行编程语言并非没有挑战。开发人员需要适应解决问题和算法设计的新思维方式,因为传统的顺序编程范式可能不再足够。此外,掌握并行编程的细微差别以及理解并行架构和硬件的复杂性可能存在学习曲线。

此外,并行编程语言的开发是一个持续的过程,可能存在与语言设计、性能优化以及与现有软件生态系统的兼容性相关的挑战。语言设计者、硬件制造商和开发者社区之间的合作对于应对这些挑战以及确保并行编程语言不断发展并满足现代计算的需求至关重要。

结论

在不断发展的计算世界中,对性能和效率的追求是一股永恒的驱动力。Bend 和 Mojo 是并行编程语言领域的两个令人兴奋的新秀,它们各自都提供了独特的方法来弥合算法的理论基础与执行算法的物理硬件之间的差距。

Bend 的高级抽象和与原生多线程的无缝集成使其成为寻求在生产力和性能之间取得平衡的开发人员的理想选择。它能够将现代语言功能直接编译为 Apple Silicon 和 NVIDIA GPU 上的并行代码,为高效和可扩展的计算开辟了新的可能性。

另一方面,Mojo 则迎合了需要精确控制并行性并希望利用 NVIDIA GPU 的原始功能完成计算密集型任务的开发人员的需求。其 CUDA 风格、类似 Python 的语法使其可供广泛的开发人员使用,同时其对性能和优化的关注确保它可以应对最艰巨的计算挑战。

随着对计算密集型应用程序的需求不断增长,Bend 和 Mojo 等并行编程语言的重要性只会增加。通过利用并行处理能力并利用现代硬件的功能,这些语言有可能释放出新的计算能力和效率水平,为从人工智能和机器学习到科学计算和高性能计算等各个领域的复杂问题的创新解决方案铺平道路。

虽然采用并行编程语言本身也存在一些挑战,但其潜在的好处也不容忽视。通过采用这些新工具和技术,开发人员可以站在创新的前沿,并在塑造计算的未来方面发挥关键作用。

展望未来,数学与金属之间的相互作用显然将继续成为计算发展的驱动力。Bend 和 Mojo 等语言代表了这一旅程中令人兴奋的进步,它们弥合了理论与实践之间的差距,并使开发人员能够充分利用现代硬件的潜力。

通过协作和开源方法,这些语言有可能重塑我们对编程的思考方式,并开创计算能力和效率的新时代。

相关文章:

14-28 剑和诗人2 - 高性能编程Bend和Mojo

介绍&#xff1a; 在不断发展的计算世界中&#xff0c;软件和硬件之间的界限变得越来越模糊。随着我们不断突破技术可能性的界限&#xff0c;对能够利用现代硬件功能的高效、可扩展的编程语言的需求从未如此迫切。 Bend和 Mojo是编程语言领域的两种新秀&#xff0c;它们有望弥…...

Stable Diffusion:最全详细图解

Stable Diffusion&#xff0c;作为一种革命性的图像生成模型&#xff0c;自发布以来便因其卓越的生成质量和高效的计算性能而受到广泛关注。不同于以往的生成模型&#xff0c;Stable Diffusion在生成图像的过程中&#xff0c;采用了独特的扩散过程&#xff0c;结合深度学习技术…...

Apache Seata分布式事务之Seata-Client原理及流程详解

本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 前言 在分布式系统中&#xff0c;分布式事务是一个必须要解决的问题&#xff0c;目前使用较多…...

Linux wget报未找到命令

wget报未找到命令需要安装wget 1、下载wget安装文件&#xff0c;本次于华为云资源镜像下载 地址&#xff1a;https://mirrors.huaweicloud.com/centos-vault/7.8.2003/os/x86_64/Packages/ 2、下载后上传到安装服务器/install_package&#xff0c;执行命令安装 rpm -ivh /i…...

38条Web测试经验分享

1. 页面链接检查 每一个链接是否都有对应的页面&#xff0c;并且页面之间切换正确。可以使用一些工具&#xff0c;如LinkBotPro、File-AIDCS、HTML Link Validater、Xenu等工具。 LinkBotPro不支持中文&#xff0c;中文字符显示为乱码&#xff1b;HTML Link Validater只能测…...

TCP报文校验和(checksum)计算

一. 原理 将TCP相关内容&#xff08;TCP伪头部TCP头部TCP内容&#xff09;转换成16比特的字符&#xff0c;然后进行累加&#xff0c;最后结果进行取反。TCP伪头部是固定的&#xff0c;下文有相关代码展示。 二. 源码 源码 #include <stdio.h> #include <stdlib.h&…...

【ue5】虚幻5同时开多个项目

正常开ue5项目我是直接在桌面点击快捷方式进入 只会打开一个项目 如果再想打开一个项目需要进入epic 再点击启动就可以再开一个项目了...

【Python实战因果推断】23_倾向分3

目录 Propensity Score Matching Inverse Propensity Weighting Propensity Score Matching 另一种控制倾向得分的常用方法是匹配估计法。这种方法搜索具有相似可观测特征的单位对&#xff0c;并比较接受干预与未接受干预的单位的结果。如果您有数据科学背景&#xff0c;您可…...

Qt源码解析之QObject

省去大部分virtual和public方法后&#xff0c;Qobject主要剩下以下成员&#xff1a; //qobject.h class Q_CORE_EXPORT Qobject{Q_OBJECTQ_PROPERTY(QString objectName READ objectName WRITE setObjectName NOTIFY objectNameChanged)Q_DECLARE_PRIVATE(QObject) public:Q_I…...

【算法专题】模拟算法题

模拟算法题往往不涉及复杂的数据结构或算法&#xff0c;而是侧重于对特定情景的代码实现&#xff0c;关键在于理解题目所描述的情境&#xff0c;并能够将其转化为代码逻辑。所以我们在处理这种类型的题目时&#xff0c;最好要现在演草纸上把情况理清楚&#xff0c;再动手编写代…...

分库分表真的适合你的系统吗?

曾几何时&#xff0c;“并发高就分库&#xff0c;数据大就分表”已经成了处理 MySQL 数据增长问题的圣经。 面试官喜欢问&#xff0c;博主喜欢写&#xff0c;候选人也喜欢背&#xff0c;似乎已经形成了一个闭环。 但你有没有思考过&#xff0c;分库分表真的适合你的系统吗&am…...

9 redis,memcached,nginx网络组件

课程目标: 1.网络模块要处理哪些事情 2.reactor是怎么处理这些事情的 3.reactor怎么封装 4.网络模块与业务逻辑的关系 5.怎么优化reactor? io函数 函数调用 都有两个作用:io检测 是否就绪 io操作 1. int clientfd = accept(listenfd, &addr, &len); 检测 全连接队列…...

【MySQL】事务四大特性以及实现原理

事务四大特性 原子性&#xff08;Atomicity&#xff09; 事务中的所有操作要么全部完成&#xff0c;要么全部不执行。如果事务中的任何一步失败&#xff0c;整个事务都会被回滚&#xff0c;以保持数据的完整性。 一致性&#xff08;Consistency&#xff09; 事务应确保数据库…...

【控制Android.bp的编译】

1.首先Android.bp的语法是不支持if 条件语句的 2.查到可以用enabled来控制Android.bp中的模块是否参与编译&#xff0c;但是并不能实现动态的控制&#xff0c;比如你需要根据获取到的安卓版本来控制一个Android.bp是否编译&#xff0c;是无法做到的。enabled只能是固定的true或…...

【车载开发系列】J-Link/JFlash 简介与驱动安装方法

【车载开发系列】J-Link/JFlash 简介与驱动安装方法 【车载开发系列】J-Link/JFlash 简介与驱动安装方法 【车载开发系列】J-Link/JFlash 简介与驱动安装方法一. 软件介绍二. 下载安装包二. 开始安装三. 确认安装四. J-Flash的使用 一. 软件介绍 J-Link是SEGGER公司为支持仿真…...

207 课程表

题目 你这个学期必须选修 numCourses 门课程&#xff0c;记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出&#xff0c;其中 prerequisites[i] [ai, bi] &#xff0c;表示如果要学习课程 ai 则 必须 先学习课程 bi 。 …...

罗剑锋的C++实战笔记学习(一):const、智能指针、lambda表达式

1、const 1&#xff09;、常量 const一般的用法就是修饰变量、引用、指针&#xff0c;修饰之后它们就变成了常量&#xff0c;需要注意的是const并未区分出编译期常量和运行期常量&#xff0c;并且const只保证了运行时不直接被修改 一般的情况&#xff0c;const放在左边&…...

宁德时代天行发布,商用车超充时代来临

近日&#xff0c;宁德时代正式推出商用动力电池品牌——“宁德时代天行”&#xff0c;同时发布“宁德时代天行轻型商用车&#xff08;L&#xff09;-超充版”和“宁德时代天行轻型商用车&#xff08;L&#xff09;-长续航版”两款产品&#xff0c;可实现4C超充能力和500km的实况…...

硅纪元应用评测 | 弱智吧大战GPT4o和Claude 3.5 Sonnet

"硅纪元AI应用测评"栏目&#xff0c;深入解析和评测最新的人工智能应用&#xff0c;提供专业见解和实用建议。不论您是AI专家还是科技爱好者&#xff0c;都能找到权威、详尽的测评&#xff0c;帮助您在快速发展的AI领域中做出最佳选择。一起探索AI的真实潜力&#xf…...

注意力机制 attention Transformer 笔记

动手学深度学习 这里写自定义目录标题 注意力加性注意力缩放点积注意力多头注意力自注意力Transformer 注意力 注意力汇聚的输出为值的加权和 查询的长度为q&#xff0c;键的长度为k&#xff0c;值的长度为v。 q ∈ 1 q , k ∈ 1 k , v ∈ R 1 v {\bf{q}} \in {^{1 \times…...

开始尝试从0写一个项目--后端(二)

实现学生管理 新增学生 接口设计 请求路径&#xff1a;/admin/student 请求方法&#xff1a;POST 请求参数&#xff1a;请求头&#xff1a;Headers&#xff1a;"Content-Type": "application/json" 请求体&#xff1a;Body&#xff1a; id 学生id …...

【图解大数据技术】Hive、HBase

【图解大数据技术】Hive、HBase Hive数据仓库Hive的执行流程Hive架构数据导入Hive HBaseHBase简介HBase架构HBase的列式存储HBase建表流程HBase数据写入流程HBase数据读取流程 Hive Hive是基于Hadoop的一个数据仓库工具&#xff0c;Hive的数据存储在HDFS上&#xff0c;底层基于…...

composables 目录下的文件(web前端)

composables 目录通常用于存放可组合的函数或逻辑&#xff0c;这些函数或逻辑可以在不同的组件中复用。具体来说&#xff0c;composables 目录下的文件通常包含以下内容&#xff1a; 组合式函数 (Composable Functions)&#xff1a; 这些函数利用 Vue 3 的组合式 API&#xff0…...

使用Python绘制堆积柱形图

使用Python绘制堆积柱形图 堆积柱形图效果代码 堆积柱形图 堆积柱形图&#xff08;Stacked Bar Chart&#xff09;是一种数据可视化图表&#xff0c;用于显示不同类别的数值在某一变量上的累积情况。每一个柱状条显示多个子类别的数值&#xff0c;子类别的数值在柱状条上堆积在…...

DP:二维费用背包问题

文章目录 &#x1f3b5;二维费用背包问题&#x1f3b6;引言&#x1f3b6;问题定义&#x1f3b6;动态规划思想&#x1f3b6;状态定义和状态转移方程&#x1f3b6;初始条件和边界情况 &#x1f3b5;例题&#x1f3b6;1.一和零&#x1f3b6;2.盈利计划 &#x1f3b5;总结 &#x1…...

C语言标准库中的函数

由于C语言标准库中的函数非常多&#xff0c;我将按类别列出一些常见函数及其作用。请注意&#xff0c;这里不可能列出所有函数&#xff0c;但我会尽量覆盖主要的类别和函数。 ### 标准输入输出 - printf: 格式化输出到标准输出&#xff08;通常是屏幕&#xff09;。 - scanf: …...

Qt5.9.9 关于界面拖动导致QModbusRTU(QModbusTCP没有测试过)离线的问题

问题锁定 参考网友的思路&#xff1a; Qt5.9 Modbus request timeout 0x5异常解决 网友认为是Qt的bug&#xff0c; 我也认同&#xff1b;网友认为可以更新模块&#xff0c; 我也认同&#xff0c; 我也编译了Qt5.15.0的code并成功安装到Qt5.9.9中进行使用&#xff0c;界面拖…...

API的定义理解

前言 在程序员的日常工作中&#xff0c;“API”这个词在程序员的口中重复的次数&#xff0c;绝对是名列前茅的。 但是对刚开始工作的新人来说&#xff0c;API这个概念还是比较模糊。 确实&#xff0c;API这个概念是随着语义环境而不一样的&#xff0c;所以会让人迷惑。 下面…...

启航IT之旅:高考假期预习指南

标题&#xff1a;启航IT之旅&#xff1a;高考假期预习指南 随着高考的落幕&#xff0c;许多有志于IT领域的学子们即将踏上新的学习旅程。这个假期&#xff0c;是他们探索IT世界的黄金时期。本文将为准IT新生们提供一份全面的预习指南&#xff0c;帮助他们为未来的学习和职业生…...

HarmonyOS开发:循环渲染ForEach

需求&#xff1a; 创建多个列表组件&#xff0c;并实现点赞功能 语言&#xff1a; ArkTS 平台&#xff1a; DevEco Studio ForEach 接口描述 ForEach( arr: Array, itemGenerator: (item: Object, index: number) > void, keyGenerator?: (item: Object, index: number) &…...

构建工程化:多种不同的工程体系如何编写MakeFile

源码分析 核心MakeFile 这个 Makefile 是一个复杂的构建脚本&#xff0c;用于管理和构建一个大型项目。它包括多个目标、条件判断和递归调用 make 命令来处理多个子项目和子目录。让我们逐部分进行详细解析。 伪目标和变量定义 .PHONY: all clean install build test init.…...

聚焦从业人员疏散逃生避险意识能力提升,推动生产经营单位每年至少组织开展(疏散逃生演练,让全体从业人员熟知逃生通道、安全出口及应急处置要求,形成常态化机制。

聚焦从业人员疏散逃生避险意识能力提升&#xff0c;推动生产经营单位每年至少组织开展(疏散逃生演练&#xff0c;让全体从业人员熟知逃生通道、安全出口及应急处置要求&#xff0c;形成常态化机制。完整试题答案查看 A.三次B.两次C.一次 综合运用“四不两直”、明察暗访、 ()、…...

【手机取证】如何使用360加固助手给apk加固

文章关键词&#xff1a;手机取证、电子数据取证、数据恢复 一、前言 APP加固是对APP代码逻辑的一种保护。原理是将应用文件进行某种形式的转换&#xff0c;包括不限于隐藏&#xff0c;混淆&#xff0c;加密等操作&#xff0c;进一步保护软件的利益不受损坏&#xff0c;下面给…...

Vue的介绍

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

MySql数据库常用指令合集

MySql数据库常用指令合集 一、创建数据库db11.创建表 字段---表头 student_no,username,sex2.新增单条插入多条插入3.删除4.更新5.查询5.1.查询该表全部信息5.2.查询该表中username&#xff0c;并且要求名字为zhangsan性别女&#xff0c;还可以用&#xff08;or&#xff09; 6.…...

ArcGIS Pro SDK (七)编辑 13 注解

ArcGIS Pro SDK &#xff08;七&#xff09;编辑 13 注解 文章目录 ArcGIS Pro SDK &#xff08;七&#xff09;编辑 13 注解1 注释构建工具2 以编程方式启动编辑批注3 更新批注文本4 修改批注形状5 修改批注文本图形6 接地到网格 环境&#xff1a;Visual Studio 2022 .NET6 …...

模拟面试001-Java开发工程师+简历+问题+回答

模拟面试001-Java开发工程师简历问题回答 目录 模拟面试001-Java开发工程师简历问题回答面试简历面试官题问求职者回答1. 关于Java编程和技术栈2. 关于XX在线购物平台项目3. 关于XX企业资源规划系统项目4. 团队协作与项目管理5. 个人发展与职业规划 参考资料 面试简历 **个人信…...

微信小程序 ——入门介绍及简单的小程序编写

目录 一、小程序入门 1.1 什么是小程序 1.2 小程序的优点 1.3 小程序注册 1.4 安装开发工具 1.5 创建第一个小程序 二、小程序目录结构及入门案例 2.1 目录结构 2.2 入门案例 2.2.1 创建界面 2.2.2 设置标题 2.2.3 编写WXML文件 2.2.4 编写JS文件 2.2.5 编写WXSS…...

ubuntu20.04安装lio-sam

1、依赖功能包安装 sudo apt install ros-noetic-robot-state-publisher sudo apt-get install ros-noetic-robot-localization libmetis-dev 2、boost版本 boost版本查看&#xff1a;cat /usr/include/boost/version.hpp | grep "BOOST_LIB_VERSION" boost版本为1.…...

Kafka系列之Kafka知识超强总结

一、Kafka简介 Kafka是什么 Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff08;消息引擎系统&#xff09;&#xff0c;它可以处理消费者在网站中的所有动作流数据。 这种动作&#xff08;网页浏览&#xff0c; 搜索和其他用户的行动&#xff09;是在现代网络上的许多社…...

第32讲:K8S集群与Cephfs文件系统集成

文章目录 1.在K8S环境下RBD与Cephfs的使用对比2.Cephfs环境介绍3.在Ceph集群中为K8S创建单独Cephfs文件系统和认证用户3.1.创建一个K8S使用的Cephfs文件系统3.2.将创建的Cephfs文件系统挂载到本地路径3.3.创建K8S连接Ceph集群使用的认证用户 4.K8S PV存储卷使用Cephfs文件系统4…...

服务器数据恢复—DS5300存储raid5阵列数据恢复案例

服务器存储数据恢复环境&#xff1a; 某单位一台某品牌DS5300存储&#xff0c;1个机头4个扩展柜&#xff0c;50块硬盘组建2组RAID5磁盘阵列&#xff08;一组raid5阵列有27块成员盘&#xff0c;存放Oracle数据库文件&#xff1b;另外一组raid5阵列有23块成员盘&#xff09;。存储…...

使用Ubuntu 22.04安装Frappe-Bench【二】

系列文章目录 第一章 使用VMware创建Ubuntu 22.04【一】 文章目录 系列文章目录前言什么是Frappe-Bench&#xff1f;使用安装ERPNext能实现什么效果&#xff1f; 官网给了一个说明 一、使用Ubuntu 22.04安装Frappe-Bench一、安装要求二、安装命令三、 可能出现问题 总结 前言 …...

MySQL增删改查

1.创建数据库&#xff1a; 使用CREATE DATABASE语句 CREATE DATABASE school;show databases; 列出MySQL数据库管理系统的数据库列表 2.切换数据库&#xff1a; 使用USE语句选择要操作的数据库 USE school&#xff1b;select database (); 当前所在库mysql> select…...

Java跳出循环的四种方式

1、continue,break,return continue&#xff1a;跳出当前层循环的当前语句&#xff0c;执行当前层循环的下一条语句。   continue标签 break&#xff1a;跳出当前层循环。 break标签&#xff1a;多层循环时&#xff0c;跳到具体某层循环。 return&#xff1a;结束所有循环…...

直播预告|飞思实验室暑期公益培训7月10日正式开启,报名从速!

01 培训背景 很荣幸地向大家宣布&#xff1a;卓翼飞思实验室将于7月10日正式开启为期两个月的暑期公益培训&#xff01;本次培训为线上直播&#xff0c;由中南大学计算机学院特聘副教授&#xff0c;RflySim平台总研发负责人戴训华副教授主讲。 培训将基于“RflySim—智能无人…...

3-2 梯度与反向传播

3-2 梯度与反向传播 主目录点这里 梯度的含义 可以看到红色区域的变化率较大&#xff0c;梯度较大&#xff1b;绿色区域的变化率较小&#xff0c;梯度较小。 在二维情况下&#xff0c;梯度向量的方向指向函数增长最快的方向&#xff0c;而其大小表示增长的速率。 梯度的计算 …...

【qt】如何获取本机的IP地址?

需要用到这个类QHostInfo和pro里面添加network模块 用这个类的静态函数forName()来获取该主机名的信息 返回的就是这个类 这个QHostInfo类就包括主机的IP地址信息 用静态函数addresses()来获取 返回的是一个QHostAddress的容器 QList<QHostAddress>addrList hostIn…...

芯片的PPA-笔记

写在前面&#xff1a;这个仅记录自己对芯片PPA的一些思考&#xff0c;不一定正确&#xff0c;还请各位网友思辨的看待&#xff0c;欢迎大家谈谈自己的想法。 1 此次笔记的起因 记录的原因&#xff1a;自己在整理这段时间的功耗总结&#xff0c;又看到工艺对功耗的影响&#x…...

2024阿里巴巴全球数学竞赛决赛中的数列题解析(分析与方程方向第4题)

早点关注我&#xff0c;精彩不错过&#xff01; 上周给大家聊了一道有LLM背景的阿里数赛题&#xff0c;详情请戳&#xff1a; 2023阿里巴巴全球数学竞赛决赛中的LLM背景题解析&#xff08;应用与计算数学部分第2题&#xff09; 看起来大家还比较喜欢看这种具体问题求解和思路分…...