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

Floorplanning with Graph Attention

Floorplanning with Graph Attention

DAC ’22

目录

  • Floorplanning with Graph Attention
    • 摘要
    • 1.简介
    • 2.相关工作
    • 3.问题公式化
    • 4. FLORA的方法
      • 4.1 解决方案概述
      • 4.2 C-谱聚类算法
    • 4.3 基于GAT的模型
      • 4.4 合成训练数据集生成

摘要

布图规划一直是一个关键的物理设计任务,具有很高的计算复杂度。它的主要目标是确定初始位置的宏和标准单元与优化的线长为给定的面积约束。本文介绍了Flora,一个基于图形注意力的布图规划器,学习电路连接性和物理线长之间的优化映射,并使用高效的模型推理产生芯片布图规划。植物群已与两个最先进的混合放置工具整合。使用学术基准和工业设计的实验研究表明,与最先进的混合尺寸放置器相比,Flora将放置运行时间提高了18%,平均线长减少了2%。

1.简介

在超大规模集成电路芯片的物理实现中,芯片布图规划一直是一项关键且具有挑战性的任务。它影响到关键的下游优化目标,其中布局线长是最重要的一个。与仅放置宏的传统布图规划不同,现代版本输入混合宏块和标准单元的网表,并放置它们,以便针对给定区域约束优化物理线长,这与时序和可布线性密切相关[10]。即使在经典公式[14]中也被证明是NP难的,芯片布图规划难以使用算法方法有效地解决。缺乏有效的自动化工具,大多数专家设计师他们采取手动方式完成这项工作,通常需要数月的紧张工作[13]。为了提高生产力,Google开发了一种基于深度强化学习的平面规划器[13]。采用成功的AlphaGo系统中使用的方法,它将布局规划视为一系列移动,每个移动都在芯片上放置一个宏。当所有的宏被放置时,下游的物理实现阶段使用商业工具进行,并且计算最终的奖励。与AlphaGo类似,这个最终奖励被反向传播到序列中的每个情况和动作,并基于这些奖励训练评估网络和策略网络。在TPU设计上,它报告了比人类专家更好的结果,由系统在6小时内生成。

我们的工作受到了Google工作的极大启发,我们同意深度学习是解决芯片布局问题的一种有前途的方法。另一方面,我们在芯片布局规划上使用强化学习是相当保守的,因为将任务分解为一系列移动,每个移动只放置一个块,使工作复杂化。与围棋游戏完全不同的是,在围棋游戏中,玩家只能在对方未知的下一步棋之前走一步棋,芯片设计师预先拥有电路网表的完整连接信息,并且很少需要在顺序过程中一次一个块地进行布图规划。在现实中,考虑到电路的整体视图,专家设计师通常将电路划分为越来越精细的子电路,并且每次同时将一个级别的所有子电路放置在芯片上,优化它们之间的数据流。本质上,它是一次建立粗略的布图规划的过程,其中从子电路连接到物理位置的映射是优化的。

在这项工作中,我们追求一个图形注意力网络(GAT)为基础的方法芯片布局。根据“在人类直觉发挥作用的地方,神经网络可能获胜”的一般经验法则,我们方法的主要思想是利用GAT [16]来获得对子电路连接性的整体理解,并学习子电路连接性和物理线长之间的优化映射,然后通过有效的模型推理解码电路块的物理位置。所得到的布局,然后用于驱动下游的混合大小的布局任务。本文旨在回答以下研究问题。

(1)如何在电路连接性和物理线长之间建立优化的映射?我们建议使用基于GAT的方法。所提出的模型包括共享的基于GAT的编码器,随后是两个任务特定的自动编码器,以学习电路连接性和物理线长之间的优化映射,并生成宏和标准单元的物理位置,即,芯片布局,然后驱动下游布局任务。

(2)如何在不需要大的真实世界数据集的情况下训练基于GAT的布图规划器?现实世界的最佳布图规划是具有挑战性的。**我们提出了一种方法来生成一个合成的训练数据集来训练GAT模型。**在数据集中,电路连通性和物理线长之间的映射被保证是最优的。此外,它还提供了广泛的统计连接分布,以确保经过训练的模型在现实世界的设计中得到很好的推广。

拟议的平面规划器,称为Flora,已与两个最先进的混合大小的放置工具结合4,7],这将是公开发布的合成数据集沿着。使用ISPD 2005基准测试和实际行业设计的实验研究表明,与最先进的混合尺寸放置器相比,植物群始终将放置运行时间提高了18%,平均线长减少了2%。使用学术基准和工业设计也验证了所提出的基于GAT的方法的泛化能力。本文的其余部分组织如下。第2节总结了相关工作。第3节描述了问题公式化。第4节介绍了拟议的方法。第5节展示了实验结果。我们在第6节中结束本文。

2.相关工作

布局规划是NP难问题,其确定大型物理模块(例如,嵌入式存储器、知识产权(IP)核、标准单元簇),并且能够早期估计互连线长[1]。研究人员提出了各种表示方案[14]和优化算法[9]。布图规划的早期工作集中在宏包装上,并将放置标准单元的任务留给下游放置器,这可能限制物理设计的优化空间[8]。最近的工作解决了宏和标准单元格的放置问题,同时作为一个混合大小的放置任务[12]。

最先进的混合尺寸放置器包括ePlace [11],RePlAce [4]和DREAMPlace [7],其将混合尺寸放置问题表述为约束非线性优化问题。目标函数由凸线长函数和加权非凸密度函数组成。芯片布局是一个由无线感应力和密度感应力共同驱动的迭代优化过程。研究表明,这些方法产生高质量的解决方案,但需要很长的迭代时间。

最近,谷歌开发了一种基于深度强化学习的平面规划器[13]。它按顺序放置宏并迭代计算奖励,然后反向传播以训练策略网络。它报告了比人类专家更好和更快的TPU设计结果。然而,有了完整的电路预先提供网表信息,基于强化学习的顺序优化过程可能不必要地使工作复杂化。受电路专家如何创建和优化芯片布局的启发,我们采用基于GAT的方法来学习从电路连接到具有优化线长的块物理位置的映射。

3.问题公式化

平面布置图实例可以被建模为具有对象集合的超图 G = ( C , E ) G=(C,E) G=(CE)(即,𝐶𝐺宏和聚集的标准单元)由超边连接。芯片布图规划的主要目标可以用公式表示为最小化总线长 W ( c ) W(c) Wc,同时遵守密度约束 p ( c ) p(c) p(c)
\min_cf(c)=W(c)\quad s.t.\quad\rho(c)
布图规划的总线长可以被估计为所有连接的对象之间的线长的总和,其在等式(2)中定义。
在这里插入图片描述
其中, e i j e_{ij} eij和, d i j d_{ij} dij分别表示对象 i i i j j j之间的连接数和距离, A i j A_{ij} Aij是邻接矩阵,如果对象 i i i j j j连接,则 A i j = 1 A_{ij}= 1 Aij=1否则为0。对于给定的电路网表, e e e a a a是已知的。根据等式2,布图规划的目标是计算连接对象之间的最佳距离 d d d。因此,布图规划的本质是构建互连和物理距离之间的优化映射,然后引导下游任务优化并产生最终的芯片布局。

4. FLORA的方法

即所提出的基于GAT的布图规划器。它首先描述了整体算法流程,然后介绍了植物群的关键组件,包括聚类,基于GAT的模型和合成训练数据集生成。

4.1 解决方案概述

图1描述了FLORA的整体算法流程。给定一个电路网表表示为一个加权的无向超图,植物群分区的网表成子电路簇使用建议的C-谱聚类算法。划分的子电路超图,包括宏和标准单元的集群,被送入基于GAT的模型,以生成芯片布局,然后送入下游的放置器,以产生最终的芯片布局。GAT模型使用合成数据集进行训练,而不需要真实世界的芯片设计。该数据集涵盖了广泛的电路连接性分布,以确保所提出的基于GAT的布图规划器的泛化。

4.2 C-谱聚类算法

本节描述所提出的c-谱聚类算法。先前的工作表明,谱聚类可以有效地最小化簇间加权连接,但运行时间较长。大规模的图形[15]。提出的c-谱聚类算法的目的是利用谱聚类的好处,但避免其高计算成本,通过自底向上的超边缘粗化。
在这里插入图片描述
所提出的c-谱聚类算法在Alg.1.第1-2行描述了自底向上的超边缘粗化过程。由于具有高连通性权重的对象需要紧密地放置在芯片上,粗化过程基于超边缘权重执行自底向上聚类,从而减小图的规模并减轻谱聚类的计算成本。具体地,给定在无向超图中描述的电路网表,超边粗化过程首先基于边权重以非递增顺序对超边进行排序。𝐸𝐶𝐺按照排序顺序,由同一超边连接的对象将合并到一个簇中。该过程继续,直到达到集群总数方面的预定义界限。

粗化过程的输出,即,一个规模小得多的超图,然后被送入谱聚类(第3-4行)。我们采用基于谱的聚类方法[15]。我们首先计算图的拉普拉斯矩阵,并计算对应于的第二小特征值的特征向量。然后,我们对特征向量进行排序,并通过查找排序后的特征向量的最大 k − 1 k− 1 k1间隙将对象划分为簇。我们还应用Lanczos算法[5]来提高特征值和特征向量的计算效率。最后,我们提取宏作为单个集群,以平衡每个集群内的细胞的总面积。

4.3 基于GAT的模型

本节介绍了所提出的用于布图规划生成的基于GAT的模型,该模型具有电路连接性和物理线长之间的优化映射。架构如图1所示,该模型包含三个关键组件,包括一个共享编码器和两个特定于任务的自动编码器,分别称为Dtask-model和Ltask-model。共享编码器对电路网表信息进行编码。用GAT [16]嵌入。Dtask模型旨在学习嵌入,以建立电路连接性和布局图中连接对象之间的物理线长之间的优化映射。Dtask-model的嵌入与Ltask-model的嵌入级联,然后馈送到Ltask-model解码器以生成对象物理位置或芯片布局。

在这里插入图片描述
共享GAT编码器。到共享GAT编码器的输入是由c谱聚类生成的聚类级网表(参见图1)。第4.2节),表示为由对象集合 V V V和邻接矩阵 A A A定义的图 G = ( V , A ) G=(V,A) G=(V,A)。每个对象具有表示连接性分布的 N N N维特征向量。设 F ∈ R N ∗ N F∈R^{N*N} FRNN是包含所有对象的特征向量作为行的特征矩阵。邻接矩阵 A A A中的元素表示是否有链接,有为1,没有为0。
共享的基于GAT的编码器通过聚合来自其本地邻居的消息来学习每个对象的新表示,称为第一级对象嵌入 e f ∈ R N ∗ M e^f∈R^{N*M} efRNM,其中,M是每个对象中新特征的维度。然后将 e f e^f ef传递给Dtask-model和Ltask-model,以完成以下具体任务。

Dtask-model.
它的目的是学习集群网表连接和物理线长之间的优化映射。该模型由一个GAT层和一个多层感知器(MLP)[6]组成,GAT层用于计算维距离嵌入 e d ∈ R N ∗ M e^d ∈ R^{N*M} edRNM,MLP将解码为连接对象 e d e^d ed的距离 D ∈ R N ∗ N D ∈ R^{N*N} DRNN。由于GAT可以为邻居分配不同的注意力,因此它能够学习对象之间的相关性,并将具有更多相关性的邻居编码为更接近新特征空间中的对象,从而使模型能够学习所有连接对象的互连和距离之间的映射。
Z d ∈ R N ∗ N Z^d ∈ R^{N*N} ZdRNN是包含距离信息的D任务模型的输出矩阵,我们定义了模型计算 Z d Z^d Zd如下:
在这里插入图片描述
其中 t ζ d : R M → R H t_{\zeta_{d}}:\mathbb{R}^{M}\rightarrow\mathbb{R}^{H} tζd:RMRH是一个GAT层,具有可学习的参数以计算距离嵌入 e d e^d ed。同时 A f θ d : R H → R N Af_{\theta_{d}}:\mathbb{R}^{H}\rightarrow\mathbb{R}^{N} Afθd:RHRN是具有可学习的参数乘以邻接矩阵 A A A解码来得到连接对象之间距离的MLP。该模型通过最小化地面真实值和预测值之间的均方损失(MSELoss)进行训练,如下所示:
在这里插入图片描述
Ltask-model.
其旨在生成芯片布图规划,即,宏和标准单元簇的位置。Ltask-model的架构类似于Dtask-model的架构,GAT层后面跟着MLP,定义如下:
在这里插入图片描述
其中, Z l Z^l Zl表示由Ltask模型预测的对象位置, t ζ l : R M → R T t_{\zeta_{l}}:\mathbb{R}^{M}\rightarrow\mathbb{R}^{T} tζl:RMRT是具有可学习参数 ζ l \zeta_{l} ζl的GAT层,用于计算位置嵌入 e l e^l el ⊕ \oplus 表示级联运算符,并且 f θ l : R T + H → R 2 f_{\theta_{l}}:\mathbb{R}^{T+H}\rightarrow\mathbb{R}^{2} fθl:RT+HR2是具有可学习参数 θ \theta θ的MLP,用于解码对象位置。特别是,为了建立对象的相对距离和绝对坐标之间的映射,我们将位置嵌入 e d e^d ed和距离嵌入 e c e^c ec作为位置嵌入,并将其馈送到下面的MLP层以生成对象分布。

该模型使用地面真实值和预测值 Z l Z^l Zl之间的MSELoss进行训练,如下所示:
在这里插入图片描述
通过组合来自Dtask模型和Ltask模型的损失函数,基于GAT的模型的最终损失函数定义如下:
在这里插入图片描述

4.4 合成训练数据集生成

现实世界的最佳平面布置很难获得。即使假设它们的最佳布局是已知的,有限数量的公共基准也远远不足以支持深度模型的训练。我们提出了一种方法来创建一个合成训练数据集来解决这个问题[3]。

合成训练数据集的创建需要保证每个创建的网表-布图规划对应包含电路连接性和物理线长之间的最佳映射。如第3节中所述,布图规划器的主要优化目标是最小化总线长,其可以被计算为等式2。我们可以从给定的集群网表中提取的关键特征是和,它们可以转换为连通性的统计分布,更具体地说,两个邻居之间的连接数分布和每个对象的邻居数分布。为了构建训练数据集,我们首先创建一个空的芯片区域,并将所有对象放置在该区域上。然后,我们计算了和在各种簇电路中的概率分布,可以分别表示为 P ( e ) P(e) P(e) P ( b ) P(b) P(b)。接下来,我们生成邻居的数量 B = ( b 1 , . b i , . . , b n ) P ( b ) B=(b_1,.b_i,..,b_n)~P(b) B=(b1.bi,..bn) P(b),并且连接数 E = ( e 1 , … , e i , … , e n ) , ∀ e i ∼ P ( e ) E=(e_{1},\ldots,e_{i},\ldots,e_{n}),\forall e_{i}\sim P(e) E=(e1,,ei,,en),eiP(e),其中 b i b_i bi表示对象的邻居数量,表示对象 i i i与其邻居 e i e_i ei之间的连接分布。我们将 e i ∈ E e_i∈E eiE按降序排序,并将更多的连接分配给距离更近的邻居。对象之间的连接的最终数量被设置为对象对的平均连接。然后,每个对象的坐标 O ( x , y ) O(x,y) O(x,y)可以被视为位置标签,每个连接的对象对之间的物理距离是距离标签。数据集的构造在Alg.2中描述。
在这里插入图片描述
在这里插入图片描述
因此,我们可以获得具有最佳布图规划解决方案的合成训练数据集(参见图1证明),同时确保统计连接分布的广泛覆盖,从而使训练模型在各种基准上得到很好的推广。定理4.1.在Alg.2是最佳的。

此外,合成数据集应在电路连接性方面提供广泛的覆盖范围,以确保训练模型的泛化。如图2所示,两个关键特征和的分布在不同的基准测试中(用不同的颜色表示)有很大的不同。在这项工作中,合成数据集的连通性统计数据充分覆盖了学术基准,例如,ISPD2005和实际行业设计,可以进一步扩展以适应具有不同连接统计数据的新设计。

相关文章:

Floorplanning with Graph Attention

Floorplanning with Graph Attention DAC ’22 目录 Floorplanning with Graph Attention摘要1.简介2.相关工作3.问题公式化4. FLORA的方法4.1 解决方案概述4.2 C-谱聚类算法 4.3 基于GAT的模型4.4 合成训练数据集生成 摘要 布图规划一直是一个关键的物理设计任务&#xff0…...

centos7 配置coreboot编译环境 以及编译问题解决

需要的配置 (有的资源在国外可能需要翻墙) 操作系统: centos7.9 参考文章 coreboot源码分析之编译和运行coreboot - 知乎 //coreboot编译总说明 https://www.coreboot.org/Build_HOWTO#Requirements https://poe.com/ChatGPT 注意: 因为github不稳定 所以gitee为主 1. 下载…...

大型语言模型:RoBERTa — 一种鲁棒优化的 BERT 方法

一、介绍 BERT模型的出现导致了NLP的重大进展。BERT的架构源自Transformer,在各种下游任务上实现了最先进的结果:语言建模,下一句预测,问答,NER标记等。 大型语言模型:BERT — 来自变压器的双向编码器表示 …...

解析navicate数据库密码

在线运行地址:代码在线运行 - 在线工具 <?php class NavicatPassword {protected $version 0;protected $aesKey libcckeylibcckey;protected $aesIv libcciv libcciv ;protected $blowString 3DC5CA39;protected $blowKey null;protected $blowIv null;public func…...

mysql字段类型与oracle字段类型对应关系

MySQL与Oracle两种数据库在工作中&#xff0c;都是用的比较多的数据库&#xff0c;由于MySQL与Oracle在数据类型上有部分差异&#xff0c;在我们迁移数据库时&#xff0c;会遇上一定的麻烦&#xff0c;下面介绍MySQL与Oracle数据库数据类型的对应关系。 一、常见数据类型在MyS…...

linux 中 tar \ zip 解压错误后撤回

#zip zipinfo -1 path/xx.zip | xargs rm -rf#tar tar -tf xx.tar | xargs rm -rf...

对象图 UML从入门到放弃之四

1.劝退说明 对象图提供了系统在某个特定时刻的状态快照。这是一种有用的描述系统的方法&#xff0c;当系统的结构是动态构建起来而不是由其静态的类结构决定时&#xff0c;更是如此。不过&#xff0c;应该对画太多的对象图保持警惕。在大部分情况下&#xff0c;它们都可以从相应…...

FPGA实现HDMI输入转SDI视频输出,提供4套工程源码和技术支持

目录 1、前言免责声明 2、我目前已有的SDI编解码方案3、设计思路框架核模块解析设计框图IT6802解码芯片配置及采集ADV7611解码芯片配置及采集silicon9011解码芯片配置及采集纯verilog的HDMI 解码模块RGB888转YUV422SPMTE编码SDI模式图像缓存SPMTE SDIGTXGV8500 4、vivado工程1-…...

针对FTP的SSRF攻击

前言 ssrf中常用的协议有http&#xff0c;gopher等。但http协议在ssrf中的用处也仅限于访问内网页面&#xff0c;在可以crlf的情况下才有可能扩大攻击范围。gopher协议比较特殊&#xff0c;在部分环境下支持此协议&#xff0c;如&#xff1a;curl。但还有一些环境就不支持了&a…...

线性代数中涉及到的matlab命令-第一章:行列式

目录 1&#xff0c;逆序数 2&#xff0c;行列式定义和性质 2.1&#xff0c;常用特性及命令 2.2&#xff0c;求行列式 2.3&#xff0c;行列式的性质 2&#xff0c;行列式按行&#xff08;列&#xff09;展开 3&#xff0c;范德蒙德行列式 在学习线性代数过程中&#…...

QT编程,QT内存管理、信号与槽、

目录 一、QT工具 二、QT内存管理 三、信号与槽 1、信号与槽特点 2、信号 3、槽函数 4、连接 5、发送信号 6、取消连接 一、QT工具 1、Qt Designer&#xff1a;界面设计编辑工具 2、Qt Assistant: Qt技术文档浏览器 3、Qt Linguist: 国际化语言翻译工具 4、…...

springcloud之项目实战环境准备

写在前面 为了更好的学习springcloud&#xff0c;我们来一起开发一个实战项目&#xff0c;加深理解。 1&#xff1a;项目介绍 在开始项目实战之前先来做一个整体的项目介绍&#xff0c;从而能够让对项目的整体架构和模板有一个比较清晰的认知。 大家都知道双11&#xff0c;…...

Linux 部署 MinIO 分布式对象存储 配置为 typora 图床

前言 MinIO 是一款高性能的对象存储系统&#xff0c;它可以用于大规模的 AI/ML、数据湖和数据库工作负载。它的 API 与Amazon S3 云存储服务完全兼容&#xff0c;可以在任何云或本地基础设施上运行。MinIO 是开源软件&#xff0c;也提供商业许可和支持 MinIO 的特点有&#x…...

JVM Optimization Learning(四)

目录 一、调优 1、基础概念 2、什么是调优&#xff1f; 3、调优&#xff0c;从规划开始 4、调优案例 一、调优 1、基础概念 吞吐量&#xff1a;用户代码执行时间 /&#xff08;用户代码执行时间 垃圾回收时间&#xff09; 响应时间&#xff1a;STW越短&#xff0c;响应…...

新华三辅导笔记 2023/10/9-2023/10/13

新华三辅导笔记 一、需要用到的软件二、计算机网络概述1、计算机网络的定义和基本功能&#xff08;1&#xff09;什么是计算机网络&#xff08;2&#xff09;计算机网络的基本功能 2、&#xff08;1&#xff09;局域网、城域网和广域网&#xff08;范围划分&#xff09;&#x…...

边坡安全监测系统的功能优势

随着科技的进步&#xff0c;边坡安全监测系统在各种工程项目中发挥着越来越重要的作用。这款系统通过实时监测垂直、水平位移数据&#xff0c;以折线图的方式显示在监控平台中&#xff0c;为工程人员提供了直观、便捷的监控工具&#xff0c;从而能够及时掌握边坡稳定状况&#…...

【架构】研发高可用架构和系统设计经验

研发高可用架构和系统设计经验 从研发规范层面、应用服务层面、存储层面、产品层面、运维部署层面、异常应急层面这六大层面去剖析一个高可用的系统需要有哪些关键的设计和考虑。 一、高可用架构和系统设计思想 1.可用性和高可用概念 可用性是一个可以量化的指标,计算的公…...

Linux线程安全

线程安全 Linux线程互斥进程线程间的互斥相关背景概念互斥量mutex互斥量的接口互斥量实现原理探究 可重入VS线程安全概念常见的线程不安全的情况常见的线程安全的情况常见的不可重入的情况常见的可重入的情况可重入与线程安全联系可重入与线程安全区别 常见锁概念死锁死锁的四个…...

Windows安装Node.js

1、Node.js介绍 ①、Node.js简介 Node.js是一个开源的、跨平台的JavaScript运行环境&#xff0c;它允许开发者使用JavaScript语言来构建高性能的网络应用程序和服务器端应用。Node.js的核心特点包括&#xff1a; 1. 事件驱动: Node.js采用了事件驱动的编程模型&#xff0c;通…...

想要开发一款游戏, 需要注意什么?

开发一款游戏是一个复杂而令人兴奋的过程。游戏开发是指创建、设计、制作和发布电子游戏的过程。它涵盖了从最初的概念和创意阶段到最终的游戏发布和维护阶段的各个方面。 以下是一些需要注意的关键事项&#xff1a; 游戏概念和目标&#xff1a; 确定游戏开发的核心概念和目标…...

横向AlGaN/GaN基SBD结构及物理模型数据库的开发

GaN基功率器件凭借其临界电场高、电子饱和漂移速度大、热导率高等优良性能在大功率快充、充电桩、新能源汽车等领域具备广泛应用空间。为进一步助推半导体高频、高功率微电子器件的发展进程&#xff0c;天津赛米卡尔科技有限公司技术团队依托先进的半导体TCAD仿真平台成功开发出…...

使用安卓Termux+Hexo,手机也能轻松搭建个人博客网站

文章目录 前言1.安装 Hexo2.安装cpolar3.远程访问4.固定公网地址5.结语 前言 Hexo 是一个用 Nodejs 编写的快速、简洁且高效的博客框架。Hexo 使用 Markdown 解析文章&#xff0c;在几秒内&#xff0c;即可利用靓丽的主题生成静态网页。 下面介绍在Termux中安装个人hexo博客并…...

Spring在业务中常见的使用方式

目录 通过IOC实现策略模式 通过AOP实现拦截 通过Event异步解耦 通过Spring管理事务 通过IOC实现策略模式 很多时候&#xff0c;我们需要对不同的场景进行不同的业务逻辑处理举个例子&#xff0c;譬如不同的场景需要不同支付方式&#xff0c;普通的逻辑是使用if-else&#x…...

PyTorch 深度学习实战

文章目录 前言1. 环境安装1.Anaconda2.pytorch cuda 环境3.测试 前言 1. 环境安装 1.Anaconda 可以参考这里&#xff1a;Anaconda学习 2.pytorch cuda 环境 我是按照下面的博客一步步完成&#xff0c;亲测有效 Pytorch安装教程&#xff08;最全最详细版&#xff09; 我的…...

学生用RockyLinux9.2模板虚拟机说明

“RockyLinux9.2”模板虚拟机下载地址 链接&#xff1a;https://pan.baidu.com/s/1xcakszIQ7Kp9Nw_NA9Znlg?pwdqzmm 提取码&#xff1a;qzmm 1.模板机是基于“Rocky-9.2-x86_64-minimal.iso”安装 2.模板机是2023.10.10执行dnf update && dnf upgrade更新和升级软件…...

BUUCTF reverse3 1

先运行下 看来是输入正确的flag 使用DIE查看文件 看起来没有壳&#xff0c;直接IDA打开 shift F12查找字符串 一路跟踪 到汇编窗口后F5 这里对Destination和Str2进行比较&#xff0c;Str2有值那么Str2就是经过上面一系列处理之后得到的内容了 继续分析上面的代码 根据…...

关于webWorker未解问题

今天尝试学习webworker,尝试在vue3项目里面使用 使用的就是常规方法,使用worker-loader,加上在vue.config.js内部添加配置 使用完发现问题 如图所见,该worker仅仅配置点击后传输字符串"1",并在worker内部打印,发现打印不出来 但是仅仅只是将引入的文件换个名字 …...

自然语言处理(NLP)的开发框架

自然语言处理&#xff08;NLP&#xff09;领域有许多开源的框架和库&#xff0c;用于处理文本数据和构建NLP应用程序。以下是一些常见的NLP开源框架及其特点&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合…...

Spring Boot与Kubernetes结合:构建高可靠、高性能的微服务架构

Spring Boot和Kubernetes&#xff08;K8s&#xff09;是当今非常热门的技术&#xff0c;它们的结合可以帮助开发者更高效地构建、部署和管理应用程序。本文将详细介绍Spring Boot和Kubernetes的主要特点&#xff0c;以及它们结合使用的优势。 一、Spring Boot的特点 Spring B…...

Qt自带的日志重定向机制

//Qt5开始提供了日志上下文信息输出&#xff0c;比如输出当前打印消息所在的代码文件、行号、函数名等。 //如果是release还需要在pro中加上 DEFINES QT_MESSAGELOGCONTEXT 才能输出上下文&#xff0c;默认release关闭的。 //切记不要在日志钩子函数中再写qdebug之类的&#x…...