OpenSM-QoS管理

news2025/2/26 14:29:52

目录

一、概述

二、完整QoS策略文件

三、简化QoS策略定义

四、策略文件语法规则

五、完整策略文件示例

六、简化的QoS策略

6.1 IPoIB

6.2 SDP

6.3 RDS

6.4 iSER

6.5 SRP

6.6 MPI

七、SL2VL映射和VL仲裁


缩写全拼中文
SMSubnet Manager子网管理器(实体)
SASubnet Administrator子网管理(接口)
QoSQuality of Service服务质量
PRPathRecord路由记录
MPRMultiPathRecord多播路由记录
ULPUpper Layer Protocol上层协议
SLService Level服务级别
VLVirtual Lanes虚通道
PKeyPartition Key分区键

一、概述

QoS的诉求来源于IB网络需要实现IB网络I/O的访问。由于多个应用程序和ULP共享同一组网,因此需要一种方法来控制它们对网络资源的使用。

基本诉求是给不同业务流提供的不同服务级别,以便可以执行策略,以此来控制组网资源的每个流利用率。

InfiniBand体系结构规范定义了几个支持QoS的硬件功能和管理接口:

多达15条虚通道(VL)以非阻塞方式承载流量:

  • 不同VL之间的流量仲裁由一个双优先级加权循环仲裁器执行。仲裁器可编程:1、具有一系列(VL,权重)对;2、在提供低优先级服务之前要处理的最大数量的高优先级信用证。
  • 数据包在其标头SL字段中携带范围为0到15的服务类别标记。
  • 每个交换机都可以根据可编程表VL=SL-to-VL-MAP(入端口、出端口、SL)将传入数据包的SL映射到特定的输出VL。
  • 子网管理员通过提供参数作为对PR/MPR查询的响应来控制每个通信流的参数。

OpenSM使能的时候,会去寻找QoS策略文件。默认路径为/usr/local/etc/opensm/qos-policy.conf。

当组网部署过程中,每一次扫描发现新的设备时,OpenSM都会解析QoS策略文件并把它部署上去,然后每一个客户端请求都会强制执行这个提供的QoS策略。此类请求的总体流程是:

  1. 当这个请求与定义的规则相匹配时,QoS级别的定义就找到了。
  2. 给定QoS级别,就在该级别施加的给定限制下执行路径搜索。

有两种方法去定义QoS策略。

  1. 全量策略,这个策略文件语法给管理者多种方式去匹配PR/MPR请求,然后强制对其实现QoS限制。
  2. 简单QoS策略,管理员可以在ULP以及ULP之上的应用来匹配各种 PR/MPR 请求。

虽然完整的策略语法非常灵活,但在许多情况下简化的 策略定义就足够了。

二、完整QoS策略文件

QoS策略文件包含以下部分:

1.端口组。

本节定义了零个或多个端口组,这些端口组可以通过以下匹配规则描述:

  • 端口GUID。
  • 端口名称,它是节点描述和IB端口号的组合。
  • PKey,这意味着子网中具有给定PKey的分区的所有端口都属于该端口组。
  • 分区名称,这意味着子网中具有特定分区名称的所有端口都属于此端口组。
  • 节点类型,可能的节点类型有:CA、SWITCH、ROUTER、ALL和SELF(SM的端口)

2.QoS设置

本节介绍如何在组网的各个节点上设置SL2VL和VL仲裁表。

但是,OpenSM目前不支持此功能。

SL2VL和VLArb表应在OpenSM选项文件中配置。(默认位置-/usr/local/etc/opensm/opensm.conf)

3.QoS级别

每个QoS级别定义SL和一些可选字段:

  • MTU限制
  • 速率限制
  • PKey公司
  • 数据包生存周期

当执行路径搜索时,必须按照QoS级别参数施加的限制进行搜索。必须定义一个DEFAULT QoS级别,PR/MPR查询匹配不上任何策略时应用。类似于任何其他QoS级别,它也可以由任何匹配规则显式引用。

4.QoS匹配规则(由QoS匹配规则表示)。

OpenSM接收到的每个PR/MPR查询都根据一组匹配规则进行匹配。按照QoS策略文件中出现的顺序扫描规则,例如第一个匹配优先。

每个规则都有一个QoS级别的名称。

默认QoS级别应用于与任何规则都匹配不上的查询。

查询可以通过以下方式进行匹配:

  • 源端口组(源端口是否为指定组的成员)
  • 目标端口组(与上述相同,仅适用于目标端口)
  • PKey
  • QoS等级
  • 服务ID

若要匹配某个匹配规则,PR/MPR查询必须匹配规则的所有条件。但是,并不是PR/MPR查询的所有字段都必须出现在匹配规则中。例如,如果规则只有一个条件——服务ID,那么它将匹配具有该服务ID的任何查询,而不考虑其他查询字段。但是,如果某个查询只有服务ID(这意味着这是PR/MPR组件掩码中唯一打开的位),则它将不匹配除服务ID之外还有其他匹配条件的任何规则。

三、简化QoS策略定义

简化QoS策略定义由qos-ulps单个部分表示的。与完整QoS策略类似,它有一个匹配规则及其QoS级别的列表,但在这种情况下,匹配规则只有一个标准-其目标是匹配某个ULP(或该ULP之上的某个应用程序)PR/MPR请求,而QoS级别只有一个约束-SL。

简化策略部分可以与完整策略一起出现在策略文件中,也可以作为独立的策略定义出现。

请参阅以下匹配规则条件的详细信息和列表。

四、策略文件语法规则

  • 忽略空行。
  • 忽略前导和尾随空格,示例中的缩进只是为了提高可读性。
  • 注释以磅号(#)开头,以EOL结束。
  • 任何关键字都应该是行中第一个非空白的,除非是注释。
  • 表示节/小节开始的关键字需要匹配结束符关键字。
  • 必须有一个名为“DEFAULT”的QoS级别。
  • 策略文件的节/小节都是可选的。

五、完整策略文件示例

如前所述,策略文件的任何部分都是可选的,并且策略文件的唯一强制部分是默认QoS级别。

以下是最短策略文件的示例:

    qos-levels
        qos-level
            name: DEFAULT
            sl: 0
        end-qos-level
    end-qos-levels

缺少端口组部分,因为没有匹配规则,这意味着端口组不会被引用到任何地方,也不需要定义它们。由于此策略文件没有任何匹配规则,PR/MPR查询将不匹配任何规则,并且OpenSM将强制执行默认的QoS级别。

从本质上讲,上述示例相当于根本没有QoS策略文件。

以下示例显示了策略文件及其语法:

    #
    # See the comments in the following example.
    # They explain different keywords and their meaning.
    #
    port-groups

        port-group # using port GUIDs
            name: Storage
            # "use" is just a description that is used for logging
            #  Other than that, it is just a comment
            use: SRP Targets
            port-guid: 0x10000000000001, 0x10000000000005-0x1000000000FFFA
            port-guid: 0x1000000000FFFF
        end-port-group

        port-group
            name: Virtual Servers
            # The syntax of the port name is as follows:
            #   "node_description/Pnum".
            # node_description is compared to the NodeDescription of the node,
            # and "Pnum" is a port number on that node.
            port-name: vs1 HCA-1/P1, vs2 HCA-1/P1
        end-port-group

        # using partitions defined in the partition policy
        port-group
            name: Partitions
            partition: Part1
            pkey: 0x1234
        end-port-group

        # using node types: CA, ROUTER, SWITCH, SELF (for node that runs SM)
        # or ALL (for all the nodes in the subnet)
        port-group
            name: CAs and SM
            node-type: CA, SELF
        end-port-group

    end-port-groups

    qos-setup
        # This section of the policy file describes how to set up SL2VL and VL
        # Arbitration tables on various nodes in the fabric.
        # However, this is not supported in OpenSM currently - the section is
        # parsed and ignored. SL2VL and VLArb tables should be configured in the
        # OpenSM options file (by default - /usr/local/etc/opensm/opensm.conf).
    end-qos-setup

    qos-levels

        # Having a QoS Level named "DEFAULT" is a must - it is applied to
        # PR/MPR requests that didn't match any of the matching rules.
        qos-level
            name: DEFAULT
            use: default QoS Level
            sl: 0
        end-qos-level

        # the whole set: SL, MTU-Limit, Rate-Limit, PKey, Packet Lifetime
        qos-level
            name: WholeSet
            sl: 1
            mtu-limit: 4
            rate-limit: 5
            pkey: 0x1234
            packet-life: 8
        end-qos-level

    end-qos-levels

    # Match rules are scanned in order of their appearance in the policy file.
    # First matched rule takes precedence.
    qos-match-rules

        # matching by single criteria: QoS class
        qos-match-rule
            use: by QoS class
            qos-class: 7-9,11
            # Name of qos-level to apply to the matching PR/MPR
            qos-level-name: WholeSet
        end-qos-match-rule

        # show matching by destination group and service id
        qos-match-rule
            use: Storage targets
            destination: Storage
            service-id: 0x10000000000001, 0x10000000000008-0x10000000000FFF
            qos-level-name: WholeSet
        end-qos-match-rule

        qos-match-rule
            source: Storage
            use: match by source group only
            qos-level-name: DEFAULT
        end-qos-match-rule

        qos-match-rule
            use: match by all parameters
            qos-class: 7-9,11
            source: Virtual Servers
            destination: Storage
            service-id: 0x0000000000010000-0x000000000001FFFF
            pkey: 0x0F00-0x0FFF
            qos-level-name: WholeSet
        end-qos-match-rule

    end-qos-match-rules

六、简化的QoS策略

简化的QoS策略匹配规则是为匹配ULP(或ULP之上的一些应用程序)PR/MPR请求而定制的。本节列出了每个ULP(或每个应用程序)的匹配规则以及应在匹配的PR/MPR查询上强制执行的SL。

匹配规则包括:

  • 默认匹配规则
  • SDP
  • SDP应用,有特定的目标TCP/IP端口号范围。
  • SRP有特定的目的IB端口GUID
  • RDS
  • iSER
  • iSER应用,有特定的目标TCP/IP端口号范围。
  • IPoIB,默认PKey
  • IPoIB,有特定的PKey
  • 任何ULP/应用有特定Service ID
  • 任何ULP/应用有特定PKey
  • 任何ULP/应用有特定目的IB端口GUID
  • 任何ULP/应用有特定源IB端口GUID
  • 任何ULP/应用有特定源和目的IB端口GUID

由于策略文件的任何部分都是可选的,只要保留文件的基本规则(例如不引用不存在的端口组、具有默认QoS级别等),简化的策略部分(QoS ulps)就可以作为一个完整的QoS策略文件。

在这种情况下,最短的策略文件如下:

    qos-ulps
        default  : 0 #default SL
    end-qos-ulps

它相当于前面的最短策略文件示例,也相当于根本没有策略文件。

下面是一个简化的QoS策略示例,包含所有可能的关键字:

    qos-ulps
        default                       : 0 # default SL
        sdp, port-num 30000           : 0 # SL for application running on top
                                          # of SDP when a destination
                                          # TCP/IPport is 30000
        sdp, port-num 10000-20000     : 0
        sdp                           : 1 # default SL for any other
                                          # application running on top of SDP
        rds                           : 2 # SL for RDS traffic
        iser, port-num 900            : 0 # SL for iSER with a specific target
                                          # port
        iser                          : 3 # default SL for iSER
        ipoib, pkey 0x0001            : 0 # SL for IPoIB on partition with
                                          # pkey 0x0001
        ipoib                         : 4 # default IPoIB partition,
                                          # pkey=0x7FFF
        any, service-id 0x6234        : 6 # match any PR/MPR query with a
                                          # specific Service ID
        any, pkey 0x0ABC              : 6 # match any PR/MPR query with a
                                          # specific PKey
        srp, target-port-guid 0x1234  : 5 # SRP when SRP Target is located on
                                          # a specified IB port GUID
        any, target-port-guid 0x0ABC-0xFFFFF : 6 # match any PR/MPR query with
                                          # a specific target port GUID
        any, source-port-guid 0x5678  : 7 # match any PR/MPR query with
                                          # a specific source port
                                          # GUID
	any, source-target-port-guid 0x9abcd : 8 # match any PR/MPR query with
					  # a specific source or target port
					  # GUID
    end-qos-ulps

与完整的策略定义类似,PR/MPR查询的匹配是按照QoS策略文件中出现的顺序进行的,例如第一个匹配优先,但“默认”规则除外,该规则仅在查询与任何其他规则不匹配时应用。

QoS策略文件的所有其他部分优先于qos-ulps部分。也就是说,如果策略文件同时具有qos-match-rules和qos-ulps部分,则任何查询都将首先与qos-match-rules相匹配,并且只有在没有匹配的情况下,才与qos-ulps中的规则进行匹配。

请注意,这些匹配规则中的一些可能重叠,因此为了有效地使用简化的QoS定义,了解每个ULP是如何匹配的很重要:

6.1 IPoIB

IPoIB查询由PKey匹配。IPoIB分区的默认PKey为0x7fff,因此以下三个匹配规则是等效的:

    ipoib              : <SL>
    ipoib, pkey 0x7fff : <SL>
    any,   pkey 0x7fff : <SL>

6.2 SDP

SDP PR 查询是匹配Service ID. SDP的Service-ID是

0x000000000001PPPP, 其中PPPP是4个十六进制数字,用于保存要连接的远程TCP/IP端口号. 以下两个匹配规则是等效的:

    sdp                                                   : <SL>
    any, service-id 0x0000000000010000-0x000000000001ffff : <SL>

6.3 RDS

与SDP类似,RDS PR查询由Service ID匹配。RDS的Service ID是0x000000000106PPP,其中PPPP是4个十六进制数字,用于保存远程TCP/IP要连接的端口号。RDS的默认端口号为0x48CA,这使得默认服务ID 0x00000000010648CA。以下两条匹配规则是等效:

    rds                                : <SL>
    any, service-id 0x00000000010648CA : <SL>

6.4 iSER

与RDS类似,iSER查询由服务ID匹配,其中服务ID也是0x000000000106PPP。iSER的默认端口号为0x0CBC,这使得默认服务ID为0x0000000001060CBC。以下两个匹配规则是等效的:

    iser                               : <SL>
    any, service-id 0x0000000001060CBC : <SL>

6.5 SRP

SRP的服务ID因存储供应商而异,因此SRP查询与目标IB端口GUID匹配。以下两个匹配规则是等效的:

    srp, target-port-guid 0x1234  : <SL>
    any, target-port-guid 0x1234  : <SL>

请注意,上述任何ULP都可能在PR查询中包含目标端口GUID,因此为了使这些查询不被QoS管理器识别为SRP,SRP匹配规则(或仅引用目标端口GUID的任何匹配规则)应放在QoS ULPs匹配规则的末尾。

6.6 MPI

MPI的SL由MPI管理员手动配置。OpenSM没有在MPI流量上强制使用任何SL,这就是为什么它是唯一一个没有出现在qos-ulps部分中的ULP。

七、SL2VL映射和VL仲裁

OpenSM缓存选项文件有一组与QoS相关的配置参数,用于配置IB端口上的SL2VL映射和VL仲裁。

这些参数是:

- Max VLs: 子网上的最大VL数。

- High limit: VL仲裁表的高优先级组件的限制(IBA 7.6.9).

- VLArb low table: 低优先级VL仲裁表(IBA 7.6.9)模板.

- VLArb high table: 高优先级VL仲裁表(IBA 7.6.9)模板.

- SL2VL: SL2VL映射表(IBA 7.6.6)模板。它是对应于SL 0-15的VL的列表(注意,这里使用的VL15意味着丢弃该SL)。

对于各种目标类型,有单独的QoS配置参数集:

CA、路由器、交换机外部端口和交换机的增强端口0。这些参数的名称以“qos_<type>_”字符串为前缀。以下是当前支持的集合的完整列表:

qos_ca_—为ca设置的qos配置参数。

qos_rtr-为路由器设置的参数。

qos_sw0_-为交换机端口0设置的参数。

qos_swe_-为交换机的外部端口设置的参数。

以下是CA和交换机外部的典型默认值示例端口(在OpenSM初始化中硬编码):

    qos_ca_max_vls 15
    qos_ca_high_limit 0
    qos_ca_vlarb_high 0:4,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0
    qos_ca_vlarb_low 0:0,1:4,2:4,3:4,4:4,5:4,6:4,7:4,8:4,9:4,10:4,11:4,12:4,13:4,14:4
    qos_ca_sl2vl 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,7
    qos_swe_max_vls 15
    qos_swe_high_limit 0
    qos_swe_vlarb_high 0:4,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0
    qos_swe_vlarb_low 0:0,1:4,2:4,3:4,4:4,5:4,6:4,7:4,8:4,9:4,10:4,11:4,12:4,13:4,14:4
    qos_swe_sl2vl 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,7

VL仲裁表(高和低)是VL/权重对的列表。

每个列表条目包含一个VL数(0-14的值)和一个加权值(0-255的值),指示当该VL在仲裁中发生时可以从该VL发送的64字节单元(信用)的数量。权重为0表示应跳过此条目。如果为VL15或端口不支持或当前未配置的VL编程了列表条目,则端口可以跳过该条目或从任何支持的VL发送该条目。

注意,相同的VL可以在高优先级仲裁表或低优先级仲裁表中多次列出,而且,它可以在两个表中都列出。

高优先级VLArb表的限制(qos_<type>_high_limit)指示可以在没有机会发送低优先级分组的情况下发送的高优先级分组的数量。具体而言,可以发送的字节数是4K字节的high_limit倍。

high_limit值为255表示字节限制是无限制的。

注意:如果使用255值,则低优先级VL可能会被耗尽。值0表示在机会被给予低优先级表之前只能发送来自高优先级表的单个分组。

请记住,端口通常传输数据包大小等于MTU。

例如,对于4KB MTU,单个分组将需要64个信用,因此为了实现4KB MTU分组的有效VL仲裁,每个VL的加权值应该是64的倍数。

以下是子网上SL2VL和VL仲裁配置的示例:

    qos_ca_max_vls 15
    qos_ca_high_limit 6
    qos_ca_vlarb_high 0:4
    qos_ca_vlarb_low 0:0,1:64,2:128,3:192,4:0,5:64,6:64,7:64
    qos_ca_sl2vl 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,7

    qos_swe_max_vls 15
    qos_swe_high_limit 6
    qos_swe_vlarb_high 0:4
    qos_swe_vlarb_low 0:0,1:64,2:128,3:192,4:0,5:64,6:64,7:64
    qos_swe_sl2vl 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,7

在本例中,子网上配置了8个VL:VL0到VL7。VL0被定义为高优先级VL,并且在单个传输突发中被限制为6 x 4KB=24KB。这样的配置将适合需要低延迟并且在传输分组时使用小MTU的VL。其余的VL被定义为具有不同权重的低优先级VL,而VL4被有效地关闭。

参考资料:

1.OpenSM源码

2.QoS - Quality of Service - MLNX_OFED v5.6-1.0.3.3 - NVIDIA Networking Docs

3.NVIDIA MLNX-OS User Manual v3.10.6004

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1087615.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

精品Python的美食餐饮服务系统点餐订餐-可视化大屏

《[含文档PPT源码等]精品Python的美食餐饮服务系统的设计与实现-爬虫》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;python 使用框架&#xff1a;Django 前端技术&#x…

学习开发一个RISC-V上的操作系统(汪辰老师) — 一次RV32I加法指令的反汇编

前言 &#xff08;1&#xff09;此系列文章是跟着汪辰老师的RISC-V课程所记录的学习笔记。 &#xff08;2&#xff09;该课程相关代码gitee链接&#xff1b; &#xff08;3&#xff09;PLCT实验室实习生长期招聘&#xff1a;招聘信息链接 前置知识 RISC-V 汇编指令编码格式 &a…

智慧机场数字孪生大屏升级智慧出行全方位服务

在宁波栎社国际机场的信息中心大楼内&#xff0c;一块大屏幕上展示了一座“数字孪生”机场。通过点击屏幕上的各个板块&#xff0c;可以实时查看现场情况&#xff0c;一旦出现突发状况&#xff0c;还可以立即启动闭环处置流程…… &#xff08;图源自宁波机场&#xff09; 在数…

7-zip压缩包密码忘记了,怎么破解?

7z压缩包设置了密码&#xff0c;解压的时候就需要输入正确对密码才能顺利解压出文件&#xff0c;正常当我们解压文件或者删除密码的时候&#xff0c;虽然方法多&#xff0c;但是都需要输入正确的密码才能完成。忘记密码就无法进行操作。 那么&#xff0c;忘记了7z压缩包的密码…

LLM应用架构 LLM application architectures

在本课程的最后一部分&#xff0c;您将探讨构建基于LLM的应用程序的一些额外考虑因素。首先&#xff0c;让我们把迄今为止在本课程中所见的一切汇总起来&#xff0c;看看创建LLM驱动应用程序的基本组成部分。您需要几个关键组件来创建端到端的应用程序解决方案&#xff0c;从基…

个人财务预算系统BudgetBee

什么是 BudgetBee &#xff1f; BudgetBee 是一个个人财务预算系统。通过 BudgetBee&#xff0c;您可以轻松管理您的个人财务。它可以帮助您跟踪您的支出和收入&#xff0c;以便您可以减少支出并增加储蓄。 镜像下载 官方没有在 docker hub 上发布镜像&#xff0c;而是采用了自…

idea中导入eclipse的javaweb项目——tomact服务(保姆级别)

idea中导入eclipse的javaweb项目——tomact服务&#xff08;保姆级别&#xff09; 1. 导入项目2. Project Settings下的各种配置步骤2.1 检查/修改 jdk 的引入2.2 配置Modules-Dependencies2.2.1 删掉eclipse相关的多余配置2.2.2 删掉jar包2.2.3 添加tomcat的依赖 2.3 配置Libr…

Semi D2C 设计稿转代码框架

TL;DR Semi Design 是抖音前端团队开发的设计系统,包括 Semi UI 组件库,DSM 设计系统定制,D2C 设计稿转代码等方向。本文主要介绍 Semi D2C的能力边界,与其他方案的差异,探索历程,底层实现原理 / 难点。阅读时间 30-45min。可以做什么,不可以做什么? D2C 为 Design to…

ros协议的最佳解决方案

在网络通信中&#xff0c;ros&#xff08;点对点隧道协议&#xff09;是一种常用的VPN&#xff08;虚拟专用网络&#xff09;协议&#xff0c;用于建立安全的连接。然而&#xff0c;由于ros协议的漏洞和安全性问题&#xff0c;我们需要采取一些措施来加强其安全性。在本文中&am…

基于片段的分子生成网络 (FLAG)使用方法及案例测评

本文来源于中国科技大学计算机科学与技术学院刘淇教授课题组于2023年发表在ICLR2023上的文章《MOLECULE GENERATION FOR TARGET PROTEIN BINDING WITH STRUCTURAL MOTIFS》。 在本文中&#xff0c;作者提出了一个基于片段的分子生成网络&#xff0c;FLAG &#xff08;Fragment …

STM32 多功能按键中断

key1 开关实现led1亮灭,key2开关实现蜂鸣器开关,key3开关实现风扇开关 main.c #include "uart.h" #include "key_it.h" #include "led.h" int main() {char c;char *s;uart4_init();//串口初始化all_led_init();key_it_config();fengshan_init…

2023年中国脱皮芝麻生产工艺、产量及消费量分析[图]

白芝麻在一般的油脂生产中是不脱皮的&#xff0c;但是直接食用时最好进行脱皮处理。原因在于芝麻种皮或角质层中纤维和草酸盐含量&#xff08;2%~3%草酸钙螯合物&#xff09;较高&#xff0c;使得其油和粕不能作为人类的蛋白质资源&#xff0c;只能用作牛的饲料或肥料。因此&am…

MarkDown制作思维导图

MarkDown制作思维导图 很实用的markdown转xmind思维导图教程 1、markdown导出OPML文件 &#x1f4a1; Typora 导出&#xff0c;需要安装 Pandoc&#xff0c;安装后重启电脑即可导出 2、xmind选择导入OPML格式 &#x1f4a1; 思维导图markdown的标题生成&#xff0c;因此可能要…

【嵌入式】堆栈与单片机内存

堆栈 在片内RAM中&#xff0c;常常要指定一个专门的区域来存放某些特别的数据 它遵循顺序存取和后进先出(LIFO/FILO)的原则&#xff0c;这个RAM区叫堆栈。 其实堆栈就是单片机中的一些存储单元&#xff0c;这些存储单元被指定保存一些特殊信息&#xff0c;比如地址&#xff0…

自动驾驶学习笔记(三)——场景设计

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《2023星火培训【感知专项营】》免费课程—>传送门 文章目录 前言 场景设计平台 场景地图 场景基本…

颠覆出海营销,机器学习带来买量新变化

这几年出海营销的神话都是机器学习给的&#xff1a; 机器学习显著降低CPI、机器学习大幅提高下载量、机器学习低成本撬动大流量... 此前&#xff0c;用户增长每一步都高度依赖营销人员的运营经验&#xff1b;现在&#xff0c;机器学习正在完全颠覆买量模式拓展营销格局&#…

【线下沙龙】低成本高效率构建您的业务系统

全球企业都在向数字化迈进&#xff0c;但在各类行业调查中表明&#xff0c;只有不到20&#xff05;的前沿企业通过其数字化转型而获得了成功&#xff0c;大部分企业都将高昂的时间和成本花费在了数字化技术的实施和培训上面。很多企业在转型的过程中面临着众多挑战&#xff1a;…

pycharm中快速对比两个.py文件

在学习一个算法的时候&#xff0c;就想着自己再敲一遍代码&#xff0c;结果最后出现了一个莫名其妙的错误&#xff0c;想跟源文件对比一下到底是在哪除了错&#xff0c;之前我都是大致定位一个一个对比&#xff0c;想起来matlab可以快速查找出两个脚本文件(.m文件)的区别&#…

基于深度学习的“语义通信编解码技术”框架分类

目录 基于神经网络的语义提取基于神经网络的语义信源编码基于神经网络的语义信源信道联合编码基于神经网络的语义编码与数字调制联合设计参考文献 基于神经网络的语义提取 在现有的信源编码前端加上一个语义提取神经网络[53] &#xff0c;如图所示。语义提取神经网络的输入是原…

linux 安装python django pip 遇到的问题

Python解决SSL不可用问题 解决方案&#xff1a; 首先要明白python版本需要和openssl的版本需要相对匹配的&#xff0c;在Python3.7之后的版本&#xff0c;依赖的openssl&#xff0c;必须要是1.1或者1.0.2之后的版本&#xff0c;或者安装了2.6.4之后的libressl&#xff0c;linux…