没有合适的资源?快使用搜索试试~ 我知道了~
松散事务级模型的并行标准兼容SystemC仿真加布里埃尔·布斯诺引用此版本:加布里埃尔·布斯诺。并行标准兼容SystemC模拟松散定时事务级模型。计算与语言[CS.CL]。里昂大学,2020年。英语NNT:2020 LYSE 1315。电话:03364390HAL Id:tel-03364390https://theses.hal.science/tel-033643902021年10月4日提交HAL是一个多学科的开放获取档案馆,用于存放和传播科学研究文件,无论它们是否已这些文件可能来自法国或国外的教学和研究机构,或来自公共或私人研究中心。L’archive ouverte pluridisciplinaire订单里昂大学博士学位论文他的歌剧l’Université Claude Bernard LyonEcole DoctoraleN° 512InfoMathsSpécialité de doctorat:InformatiqueSoutenue publiquement le 18/12/2020,par:加布里埃尔·布斯诺Simulation parallèle et conform austandard SystemC de modèlestransactionnels à temps relanché陪审团组成如下:Guérin Lassous,IsabelleEscherseur des UniversitésClaude Bernard Lyon大学马拉宁奇高等教育研究所弗朗索瓦·佩舍大学索邦大学研究所特别报告员安德拉德格勒诺布尔-阿尔卑斯大学Université de California Examinateur Maillet-Contoz,LaurentResponsable Industriel意法半导体Claude Bernard Lyon 1 Directeur de thèse Sassolas,Tanguy Ingénieur-chercheur CEA Co-EncadrantVentroux,Nicolas Responsable Industriel Thales Co-Encadrant,受邀雷默西芒他给我一个名字,所有的细胞和所有的细胞,我都不知道这门课我非常感谢马修·莫伊,里昂第一大学的会议主持人,为了让我注意到首都的距离。 我非常感谢CEA的Tanguy Sassolas和Nicolas Ventroux,名单,为了实现长期的合作和长期的乐观,我没有任何怀疑,也没有任何怀疑。Un grand merci aussi à Florence Maraninchi de我也感谢我的支持者:LilianaAndrade、Rainer Dömer、Isabelle Guérin Lassous和Laurent Maillet-Contoz。但是,这一部分没有我的随行人员就不完整:我的工作是在各种各样的问题上进行转换的,技术和信息都很好,而且我可以为许多人提供帮助;我的朋友们,因为CEA和他们,我对三年来的戏剧都很欣赏;杰森在最后的几天里重新融入了我的生活;而我的家人和我的同伴,因为我从来没有想过我会在我的学校里度过一天,我一直都是这样的,我有理由相信今天的一切感谢CEA为三年的博士论文提供资金。35个人简历总音这是在SystemC的并行模拟上的端口特别是,她看到了一个家庭的模式,它的transactionnels到时间relanché。本文主要介绍了SystemC并行仿真的概念和实现。 Cenoyaupermetl ' e x é c u t i o np a r a l l è l ed em o d è l e sS y s t e m Cs t a n d a r d a p r è s a j o u t d ' a n n o t a t i o n s s p é c i f i q u e s .我 们 分 五 个 章 节 。 Le premier chapitre presente des conceptions généralesrelatives à SystemC ainsi qu'au parallelisme et à la concurrence en infor- matique.第二章提出了一个问题,这个问题是一个关于第三章是你的心脏。Il explique lesprocédés principaux mis en Üuvre pour permettre la simulation SystemC parallèle demodèles transactionnels à temps relâché.第四章介绍了第三章解释过程的实验。Cesexpérimentations mettent en valeur des limitations dans le cas de simulation delogiciels executés sous un système第五章和最后一章分析了这些观察结果的原因,并提出了具体的解决方案,这是一种经验评估。第一章在第一章中,介绍了在SystemC仿真环境下并行共存的并行性和并行性的一般概念。两种概念之间的相似性和相似性都很微妙,它们都是在计算机辅助下进行说明的 Le langage de description matérielle SystemC est ensuite presenté. 描 述 RTL(SystemC的缩写)的基本方法是对SystemC的离散元、模块、端口和“通道”的模拟。最后介绍了更多的事务描述。这两个新的“近似”和“释放”时间管理的精确性主要体现在现代化技术的标准中,即直接的接口记忆和分离时间Les procédésdécrippés dans ce professor6第二章第二章介绍了适用于SystemC模型仿真的常用加速技术的简要介绍。选择SystemC进程之间的并行化来进行仿真是合理的。 Les obstacles qui s'opposent spéci fiquement àl'évaluation parallèle de processes SystemC sont alors questiés. 特别是,Les problématiquesde“thread-safety”1 et d'atomicité des processes SystemC sont introduites au traversd'schemples. 在此,我们将对这一过程进行一次非原子性的评估。第二部分是SystemC并行仿真技术。 De nombreuses approches y sont reportées:simulation à temps synchronisé ou découplé, simulation accélérée sur GPU ousur matériel dédié,simulation distribuée ou centralisée,exécution reproductible ounon ou encore simulation RTL ou TLM.Il ressort de cette étude qu 'une uniqueapproche approche approche e approximation les modèles transactionnels àtemps relâché,specécialement ceux faisant usage du doucouplage temporel etdu protocole approximation.它使用了SCale1.0,一个与SystemC并行的模拟器,用于在此工作的出发点。 SCale 1.0 estdonc presenté de manière plus détaillée dans la fin du chapitre 2 et ses limitationsfont l'objet d'une analysis méticuleuse. Il en ressort que bien que présentant desmécanismes théoriquement e applicaces , ces derniers inapplicables avec denombreux logiciels simulés,en particulier ceux exécutés sous Linux.性能问题很重要。第三章这是SCale 2.0的缩写,是SCale 1.0的不可抗力。SCale 1.0的大量机制和类似的一般方法:在控制过程间相互作用和预处理原子性的同时,模拟存储访问的仪器。这一基本思想贯穿于整个过程,以确保在各个过程中相互作用,这表明存在着一种安全的评估,这种评估产生的结果是在各个过程中平行的。第一章对SCale 2.0下一个评价阶段的全球执行情况进行了描述:在某些情况下,对一个评价阶段的后续过程进行了平行评价;分析了在某些情况下,评价阶段的过程依赖性,并对出现的错误进行了纠正Lesprocédés appliqués lors de la phase parallèle spéci fiquement sont ensuitedétaillésen successant par la guarantie de non dependance entre lors de la phaseparallèle,une propriété fondamentale autorisant de nombreuses optimisations.Une1Lathread-safety designe le fait qu7××获取备忘录的授权政策或有问题的担保政策是,实施和执行一项单独的规定La phase parallèle peut être suivie因此,通过记忆进行互动的管理系统是一种通用的互动方式,这种互动方式被认为是一种类似于一种资源的方式,在大的意义上,是一种简单的、精确的、精确的方式,是一种针对性的记忆允许,部分,de supporter les interactions parinterruptions(timer,inter-processseur,etc.).第四章第四章是对第三章程序的实验分析。Le serveur pourvu de 36 cours hébertlesexpérimentations est décrit ainsi que le modèle simulé : une architecturesymétrique à memoire partagée pourvue de 1 à 32 cours RISC-V simulés parQEMU.本文介绍了Mobilenet的并行矩阵乘法、卷积神经元的轮廓检测和卷积神经元网络的基准baremetal2,以及 Parsec套件的基准Blackscholes和Swaptions的Linux附加版本基于SCale 2.0的实验性功能验证方案(基于一个基准)。 Il illustre la capacité deSCale 2.0 à produire toujours le même résultat lors de l'utilisation de la fonesty dereproduction de simulation. 尽管这一最后阶段并不活跃,但测试基准的结果提供了一个强大的可变性La suite du chapitre presente les performances de simulation o par SCale2.0.Des accélérations atteignant 15 face au noyau SystemC de référence et de 110face à SCale 1.03 sont observés.Les accélérations concernant les applications sous Linux sont en revanchenettement moins satisfaisants puisque toujours inférieurs à 4.这些结果在会议室进行了详细分析。这一分析符合多种因素的价值,即Linux的启动和终止模拟的并行化潜力很大。在一个伟大的名字的存在中2.在没有剥削制度支持的情况下,后勤部门不仅要执行物资3. SCALE 1.0版本中的性能测试说明了其在一个测试环境中的应用。注意,在本案例中,访问内存的频率是多个高级的,饱和的总量是仪器化的系统8×在到达后必须返回的地方。Ce constat révèle que malgré la cracité de SCale 2.0dans la majorité des situations,il existe des schémas第五章第五章和最后一章提出了第4章最后一部分中确定的问题的具体解决方案 Lapremière concerne les partie de la simulation faiblement parallelisables telles que leboot de Linux. Ces parties sont aussi souvent peu intéressantes pour l'utilisateur deSCale 2.0 qui cherche surtout à tester le logiciel qu'il a décripé et qui s'exécute sous Linux.Un système de variation de la precision de simulation est proposé. 它允许动态选择存储访问的模拟模式,并直接在QEMU中进行计算,而不依赖于SystemC模式。与此相 反 , 模 拟 结 果 并 不 十 分 相 似 , 但 模 拟 结 果 也 不 具 有 Ce mode de simulationséquentielle peu précise mais rapide et deterministe est particulièrement adapté àla simulation des parties du code du code sans intérêt directe pour l'utilisateur.第二个不可抗力原因是在某些模拟方和责任方中的合同违约的主要名称,这些当事方对全球履约情况恶化负有责任。L'étudede l'origine de ces con profits montre que lecode prove- nant du noyau Linux est responsable de la universe partie des con profits(e.g.,support des fautes memoire et gestion du système defichiers)。Ces controubles sont par nature di aceticile à anticiper et donc à éviter avec fabilité. Lasolution retinue consiste alors à ne pas paralléliser la simulation du codeappartenant au noyau Linux. 该 niveau de privilège des processeurs similés estutilisé à cet e cheet:dès quLa quasi totalité des concluits est alors évitée au prixSCale 2.0性 能的 新测 量方 法是基于这些最新技术的。 Des accélérationsLacomparaison avec SCale1.0 n’est pas possible, ce dernier ne supportant pas la simulation de systèmesexécutant9出版物• 文章:– Gabriel Busnot,Tanguy Sassolas,Nicolas Ventroux,Matthieu Moy. 标准兼容的并行SystemC模拟松散时间事务级模型。 ASP-DAC 2020- 第25届亚洲及南太平洋设计自动化会议,2020年1月,中国北京。pp.1-6. 电话:02416253– Gabriel Busnot,Tanguy Sassolas,Matthieu Moy,Nicolas Ventroux. 符合标准的并行SystemC模拟松散时间事务级模型:从裸金属到基于Linux的应用程序支持。VLSI– Amir Charif,Gabriel Busnot,Rania Mameesh,Tanguy Sassolas,Nicolas Ventroux.嵌入式计算系统的快速虚拟原型设计与探索。第11届快速仿真和性能评估研讨会:方 法和 工 具, 2019 年1 月 , 西班 牙 瓦朗 斯 。10.1145/3300189.3300192>.& lt;hal-02023805>• 专利:– 加布里埃尔·布斯诺,坦吉·萨索拉斯,尼古拉斯·文特鲁。模拟过程与niveau systèmeélectronique的可再现性相似,但与离散模拟的信息系统相似。FR1911332– 加布里埃尔·布斯诺,坦吉·萨索拉斯,马修·莫伊。模拟过程与niveau systèmeélectronique的可再现性相似,但与离散模拟的信息系统相似。FR2012150• 海报:– Gabriel Busnot,Tanguy Sassolas,Nicolas Ventroux,Matthieu Moy.运行Linux的多核平台的并行SystemC模拟。ACACES海报会议,2018年7月,意大利菲乌吉。内容导言. 131并行计算和SystemC仿真背景171.1一.导言. 181.2Concurrencyandconcurrency 181.2.1并发181.2.2使用协程对并发性进行细粒度控制1.2.3第二十一章1.2.4使用线程实现并行计算1.3SystemC建模与仿真概述261.3.1SoC设计流程中的虚拟原型261.3.2SystemC建模语言271.3.3SystemC模型的离散事件仿真1.4 TLM-2.01.4.1TLM:通信层的抽象331.4.2TLM 34中的编码样式2并行SystemC仿真:挑战和现有解决方案2.1并行系统C-TLM模拟:问题陈述402.1.1SystemC加速策略402.1.2自动化系统C 412.2现有办法442.2.1同步SystemC并行化472.2.2时间解耦502.2.3SCale 1.0:过程交互监控553LT-TLM并行仿真的建议解决方案633.1概览. 643.1.1简化型643.1.2一般执行流程653.1.3_instrOutline 673.2平行评估阶段683.2.1零重复并行Phase 68的优点3.2.2地址监控有限状态机(FSM)693.2.3正确的内存访问记录顺序741011内容3.2.4高效FSM复位753.2.5快速可扩展的FSM存储773.3连续评估阶段793.3.1选择顺序求值顺序803.3.2异步重复性分析................................................................................................813.3.3模拟回放853.3.4基于回滚的冲突恢复873.4对任何共享资源的泛化4对拟议的模拟技术的评估974.1实验设置和用例984.1.1主机984.1.2模拟建筑994.1.3模拟软件1004.1.4测试和测量协议1024.2功能验证1044.2.1案例研究:基于自旋锁的势垒1044.2.2实验功能验证1084.3在Baremetal和基于Linux的用例上的性能4.3.1Baremetal性能评估1094.3.2Linux性能评估1135全软件栈仿真挑战和解决方案1155.1导言. 1165.2基于Linux的Benchmark仿真性能研究。116 5.3快速顺序模式..................1195.3.1关注区域5.3.2可变精度1205.3.3动态调度策略1225.4基于CPU模式的取消调度..........................................................................................1235.4.1对照品研究1235.4.2顺序执行OS内核代码5.5最终SCale 2.0性能评估130结论135参考书目14313介绍这份手稿介绍了我在萨克雷(法国)原子能和替代能源委员会论文我是设计自动化架构实验室(LECA)的成员,这是一个在虚拟原型领域工作的实验室,也是ClaudeBernard Lyon 1大学的信息系统(LIP)的成员我的论文是我的Projet de Fin在我论文的前几个月,我一直在进行这个主题的工作,并将开发的功能集成到所呈现工作的最终版本中片上系统由于片上系统(SoC)的复杂性和上市时间的限制,电子系统级(ESL)设计和验证越来越具有挑战性SoC是一种先进的电子组件,它在单个芯片上集成了一个完整的计算系统。SoC可以在传统计算机不适合的所有地方找到,例如汽车,航空航天,智能手机,USB设备或物联网(IoT)设备。所有这些应用在功耗、面积、实时特性、效率、可靠性甚至电磁兼容性方面都存在很强的虽然常规计算机中央处理单元(CPU)由连接到外部主存储器和外围设备的一组相同的处理核心组成,但是SoC在单个芯片上嵌入各种常规处理核心(例如,大.小架构中的ARM皮质A7和A15)、存储器、通信模块(例如,蓝牙、Wi-Fi和蜂窝网络)、加速器(例如,图形处理单元(GPU)和编解码器)或安全设备(例如,安全的生物识别)。SoC架构的唯一限制是用于雕刻这些知识产权(IP)的制造过程以及硬件设计师可以接受的复杂性。沿着摩尔定律设定的道路,SoC的复杂性年复一年地达到前所未有的水平。随着数十亿晶体管芯片集成在入门级设备中,新的设计技术必须帮助架构师掌握这种复杂程度。因此,在本发明中,14内容电子设计自动化(EDA)工具致力于使架构师能够充分利用制造技术的每一次飞跃所带来的新的可能性。在这方面,抽象是战争的支柱。SoC现在提供了可配置的IP,这些IP被视为黑盒,可以以最小的代价丢弃在更大的设计这有助于显著缩短硬件设计周期。然而,硬件只是硬币的一面,另一面是软件随着多核架构的去民主化和硬件异构性,软件复杂性的增长甚至比硬件复杂性更快,这给软件开发人员带来了新的挑战此外,当功率和效率要求变得太高时,复杂性倾向于通过使用更简单的硬件(如非一致性高速缓存架构)而转移到软件因此,EDA工具还必须支持更快、更容易的软件开发工具。设计流程开发复杂的软件需要系统测试,这反过来又需要在其目标SoC上运行此软件。在开始软件开发之前等待经过验证的硬件是不可行的,特别是考虑到硬件开发也会利用软件团队的反馈因此,这两个过程必须通过采用硬件和软件协同设计工作流程同时进行行业标准的解决方案是虚拟样机(VP)。它包括组装设计中的SoC的软件模型,以构建能够运行针对该SoC的软件的为了使这种技术可行,VP必须满足以下要求:费用: 虚拟样机(VP)必须是廉价和快速的发展。速度:VP必须执行得足够快,以免减慢构建-测试-修复的软件开发周期。准确性:VP必须提供软件开发人员在早期开发阶段所需的足够准确的信息。VP必须提供与开发中的软件所导致的错误相关的有用信息。重复性: bug通常需要是可复制的,以便有效地修复。事务级建模(Transaction-Level Modeling,TLM)[Ayn 09]标准的开发就是为了满足这些要求。它是基于C++的SystemC [IEE12]硬件描述语言(HDL)的一部分。 TLM首先实现了互操作性,允许独立参与者以标准黑盒模型的形式提供其IP,15内容整合到一个更大的副总裁在事务级模型中,仅对组件行为建模,而寄存器传输级(RTL)模型也模拟组件内部这种差异在开发成本和速度方面为TLM模型提供了显著的优势它还以适度但不可避免的精度损失为代价大幅提高了速度-准确度权衡)。除了将调试器连接到模拟处理器的可能性之外,所有常规的C++调试技术都可以应用于TLM模型模拟。最后,TLM仿真依赖于SystemC标准对大多数HDL执行的协同例程语义,从而提供可重复性。尽管如此,最先进的仿真技术现在正在努力跟上现代硬件的复杂性,仿真速度往往会无情地缩小这是由Accellera [ScR]提供的标准SystemC仿真内核作为协例程的直接实现而被单线程化的直接结果在计算能力的提高依赖于越来越多的内核被安装到单个芯片中的时候,仿真技术不能再依赖于单核性能的提高来跟上SoC复杂性的增加。《手稿》的贡献和提纲本文致力于TLM模型的精确并行和标准兼容仿真特别是,并行仿真一定不能放弃协同例程语义,因为这将意味着更难建模和潜在的不可重现的错误。这项工作特别关注一种特定类型的TLM模型:松散时间模型。与其他类型的SystemC模型(RTL甚至近似定时TLM模型)相比,这些模型是最抽象的,但也是最快的两个数量级LT-TLM模型在并行模拟方面特别具有挑战性,这是本工作努力实现的目标。我们提出了SCale 2.0,一个标准兼容的并行SystemC内核,保证共同例程的语义保存和模拟再现性作为一个直接的后果。这项工作在SCale 1.0 [VS16]之后开始 我们支持任何TLM模型,包括使用直接存储器接口(Direct Memory Interface,简称DMA)协议的Loosely-Timed编码风格。 我们的技术的基础上轻量级共享资源访问监控有一个有限的开销,即使使用最快的指令集模拟器(ISS的)。第1章为理解当前工作奠定了必要的基础:并发和并行概念,并行编程的挑战和SystemC模拟原理。第2章揭示了并行SystemC仿真的挑战和文献中描述的现有解决方案特别是,SCale 1.0,本章详细介绍了本工作的起点内容16第3章公开了在[BSV+ 20]的ASP-DAC 2020会议上发布的SCale 2.0中实现的核心机制这些机制包括:一个轻量级的基于FSM的共享资源访问授权策略,防止大多数进程原子性违反并行评估期间;一个快速和高度可扩展的数据结构FSM实例存储;一个通用的进程级回滚系统,从进程原子性违反恢复;和一个确定性的模拟重放机制的错误再现。第4章介绍了实验装置,包括主机平台,仿真平台,功能验证基准,和性能基准。然后分析了实验结果:裸机基准测试在36核主机上显示出非常好的可扩展性,但基于Linux的基准测试在这一点上并不受支持。因此,第五章进一步分析了复杂客户操作系统仿真所带来的挑战,并介绍了额外的解决方案,包括:可变精度系统与自适应并行/顺序评估相结合,用于仿真快进;最后给出实验结果。本章中提出的解决方案和结果已提交给ASP-DAC 2020期刊,正在进行第二次审查。17第1并行计算和SystemC仿真背景1.1一.导言. 181.2Concurrency andconcurrency 181.2.1并发181.2.2使用协程对并发性进行细粒度控制1.2.3第二十一章1.2.4使用线程实现并行计算1.3SystemC建模与仿真概述261.3.1SoC设计流程中的虚拟原型261.3.2SystemC建模语言271.3.3SystemC模型的离散事件仿真1.4 TLM-2.01.4.1TLM:通信层的抽象331.4.2TLM 34中的编码样式并行计算和SystemC仿真背景181.1介绍在这一章中,对理解手稿其余部分所必需的概念被揭示出来。主要目标是说明这些概念,并帮助建立对它们的直觉本章并不打算详尽地讲解这些主题,而是试图尽可能地隐藏这些主题某些方面的复杂性。首先,解释本文档中使用的并发和并行的一般概念:它们是什么,它们的相似之处是什么,但最重要的是,是什么使它们不同,往往不兼容?算法方法首先用于介绍这些概念,然后介绍如何在编程实际应用程序时使用它们。然后,通过激励其使用的工业需求介绍了SystemC HDL接下来,通过一个简单的RTL用例来展示SystemC的基本原理。模块、端口、通道、进程和仿真内核都是在这一点上定义的。最后,TLM的抽象层次,这项工作的目标,以及解释和全球量子,两个标准的加速技术,我们努力支持我们的并行SystemC模拟内核。1.2并发与并行并发和并行是两个密切相关但又非常不同的概念本节旨在定义和区分它们,以更好地理解标准SystemC机制和本文的贡献:SystemC并行化。应该注意的是,本节中没有使用SystemC特定的概念。1.2.1并发在本节中,我们将进程1定义为一系列正在执行的相关指令。在计算机科学的上下文中,进程包括获取和执行编码指令的处理器(例如, x86或ARMv 8 [Int 19; ARM20])通常位于内存中,以执行相应的寄存器操作和内存访问。通常假设一个进程是孤立执行的,即不与其他进程交互。因此,当一个进程多次读取一个给定的内存位置而没有在其间写入它时,它可以期望一次又一次地读取相同的值相反,如果一个进程不是孤立运行的,那么意外的状态变化(例如,寄存器内容修改)可能会损害过程的有效性。当多个进程同时运行时,即它们同时进行时,会形式上,进程A(相应地进程B)在时间间隔TA(相应地TB)期间执行,则A和B在当且仅当TA<$TB/=T/时是并发的。特别是,如果在本节中,SystemC进程的意义上不使用1并行计算和SystemC仿真背景19如果进程A和B同时运行,这并不意味着A和B在任何时候都在同时进行因此,并发性可以通过进程多路复用在事务核处理器上实现,即通过交替执行几个进程,每个进程执行一小段时间。在实践中,在传统计算机系统中的许多地方都可以观察到并发性。在操作系统(OS)级别,数千个进程可以同时共存。操作系统的主要作用之一是保持所有这些进程相互隔离,同时让它们尽可能公平地共享可用的处理时间。 在程序级别,开发人员可以利用其系统和语言的并发能力来实现依赖于多个调用堆栈的控制流,如1.2.2节所述。 在硬件级别,多个处理单元可以并发甚至同时执行多个进程,如1.2.3节所述。1.2.2使用协程对并发进行细粒度控制并发性可以在程序级利用和控制,使用协同程序实现协作多任务。协程是一个独立的控制流程(即执行堆栈),由应用程序员恢复和挂起在每个线程中,当程序员挂起和恢复这些控制流时,它们一次一个地处于活动状态。当一个协程挂起自己时,我们说它屈服了。协同程序允许程序由多个任务组成,这些以合作的方式相互交互,也就是说,所有任务都知道彼此在做什么以及何时做。因为协程有自己的调用栈,也就是它自己的执行上下文,所以上下文和协程这两个术语经常可以替换。协同程序的使用通过算法1和2说明,算法1和2描述了Fibonacci序列生成的两种不同实现目标是一次生成一个斐波那契序列的数字,并在生成下一个值之前打印每个值:在一次打印所有值之前,不能将值存储在数组中,也就是说,值的生成和打印必须同时发生我们还假设斐波那契序列生成器是由外部源提供的,这意味着打印不能插入到斐波那契生成函数的中间。这种明显的人为约束代表了典型的SystemC用例:由不同供应商提供的几个复杂的IP模型作为黑盒,并由最终用户组装在一起。在算法1中,生成器是一个经典的函数,它返回一个值,没有参数。这意味着需要一种特定的机制来记住最后计算的值,以免一次又一次地返回相同的值在这里,斐波那契序列的两个值被存储而不是一个,以加速下一个值的计算。打印函数负责打印生成器返回的
下载后可阅读完整内容,剩余1页未读,立即下载
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- AirKiss技术详解:无线传递信息与智能家居连接
- Hibernate主键生成策略详解
- 操作系统实验:位示图法管理磁盘空闲空间
- JSON详解:数据交换的主流格式
- Win7安装Ubuntu双系统详细指南
- FPGA内部结构与工作原理探索
- 信用评分模型解析:WOE、IV与ROC
- 使用LVS+Keepalived构建高可用负载均衡集群
- 微信小程序驱动餐饮与服装业创新转型:便捷管理与低成本优势
- 机器学习入门指南:从基础到进阶
- 解决Win7 IIS配置错误500.22与0x80070032
- SQL-DFS:优化HDFS小文件存储的解决方案
- Hadoop、Hbase、Spark环境部署与主机配置详解
- Kisso:加密会话Cookie实现的单点登录SSO
- OpenCV读取与拼接多幅图像教程
- QT实战:轻松生成与解析JSON数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)