FPGA 如何进入 AI 领域的思考

news2024/11/15 2:15:46

        FPGA在AI领域如何发力,如何抢碗饭吃?大多数提到是硬件加速,在AI工程里,完成数据前处理(加速)。大家很少提到AI模型的本身的推理过程,让FPGA成为AI模型的推理/算力芯片,这自然是 FPGA厂商们的梦想。否则,仅仅是加速,那就是个配角。

        Intel(ateral)和 AMD(Xlinx) 已做过大量的尝试,但是效果似乎并不好,这是为什么呢?我们仔细来看看原因。

        在详细解决部署之前,我们还是先从头讲起,看看重要的历史。

一:微软与FPGA

        FPGA 的加速应用,最有名的就是为微软 Bing 搜索引擎加速了,

        在第一个阶段,具体的做法是:

        在数据中心1632台服务,安装了 Intel 的 Stratix V系列的FPGA 几千张。
        1:将核心的文件排名 C++算法(3万行的文件排名) 卸载到 FPGA上 ,完成硬件加速。
        2:CPU 通过 PCIe 总线访问FPGA。可以通过网络访问远端的FPGA。这是一个基础设施。
        结果还是不错的,获得了95%吞吐量提升,达到了加速的目标。可以看出,它利用的是FPGA的并行运算能力,当然,排序算法可能变化,所以,也用到FPGA的可编程性。但从代码量上看,据说有上万行代码,这种用法不是小玩家都完成的,想想都头疼。

        到了第二阶段,形成的这么大规模的 FPGA集群,微软拿来做了其它尝试,提供深度神经网络的部署/推理。

        1:导出已训练好的模型的计算流程图。(深度学习的模型实际上也就是一系列的数据运算流程),模型的训练与传统做法没有什么不同,这里不讲。
        2:计算流图的流程可以进行分解,分解成若干的小图,方便后续可映射到单块FPGA运行。
因为目前具有的集群FPGA,我们可以把任务分派到不同FPGA。
        3:不适合 FPGA运行的部分映射到与FPGA相连的 CPU上。
        4:在FPGA上完成一个 IP软核 :DPU,用于承载第2步的任务,开发者通过指令级IP核调用,降低开发难度。
        注意,微软的FPGA硬件是一个集群,而不是单张FPGA卡。所以,有几个特点:
        1:运算中数据缓存,并没有使用DDR,而是将数据全部存在FPGA的片上高速RAM中,因为集群中有过上千张的FPGA卡,频率高达 600G,基本可以形成35T左右的处理带宽。这只有微软的这种情况才能实现。使用高速RAM,速度自然会更快。DDR是较慢的,因为需要通过接口不停的读取有消耗。
        2:微软自定义了 ms-fp-8, ms-fp-9 这两种低精度的浮点数,可以理解就是量化,通过调低精度,降低算力和存储要求。
        3:硬件工程师会开发和维护 NPU 软核和指令集,软件工程师基于NPU IP 和指令集进行应用开发。注意:这个指令集类似SIMD(GPU的指令集)。我们可以理解,就是在模仿GPU的做法。

        上面形成的这个脑波NPU,微软也在Bing中应用了(TuringPrototype,DeepScan) ,效果如何,没有资料提及。

        从上面的例子可以看出,微软对FPGA使用很深。     

二:AMD 的 ACAP

        ADM几年前推出的ACAP,往往被认为是用来应对 AI 浪潮的,我们来看看它到底是如何策略的。

Adapt Compute Accerlate Platform
        Adapt:可适应的,可适配的。
        Compute:仍然立足于运算。
        Accerlerate:主要用途是数据加速。
        Platform:提供的是一个平台,可以理解是面向一个工程的整体解决方案,而非局部。

        从字面上理解,除了数据加速,并看不出和AI有什么直接关系。

仔细看一下ACAP的结构,可以看出点内容:

1:芯片固化了一组 AI Engine(实际后续还出了一款 AI Engine ML )。内置RISC处理器,一个向量处理器。可以进行SIMD的定点和浮点并行计算。配有分布式内存和组存,每个AI Block之间可以DMA方式共享内存。这妥妥的就是GPU的做法。可以理解为一个为了做AI运算的ASIC芯片,类似Google的TPU。(当然,也有说法,一开始并不是专为AI设计的,我后面会说)

2:提供了片上网络(NoC),提供高速的数据传输能力。将数据传输与运算做了分离。其实这很重要,因为运算速度并不是单由算力决定,还有数据传输能力和速度。

3:FPGA中的CLB架构变化,单个CLB中 LUT数量变大。还有一些其它变化,这可以提升运算性能(减少芯片后端实现时的走线压力),但好像和AI没啥关系。

4:如此复杂的芯片结构,采用了SSI技术(堆叠)来完成加工生产。

5:推出Vitis开发工具链,其中包括了收购的深鉴公司的 DNNDK(包含了模型的深度压缩,量化,剪枝功能)。并内置了一些深度模型,但据可靠人士反馈,真实可用的,很少(官方model zoom中的可用模型不多,也不包括transformer,并且更多要使用ML版本)。

我们曾经想用VCK5000的卡部署 Llamma的vicume模型,但发现根本就不支持。

所以,综上所述,ACAP 对于AI 有野心,但没有啥效果。我最近一次去参加了AMD线下的技术大会,会上对于AIE的介绍,基本上都用用来解决DSP的问题。基本上是基于Vitis的API编程,而不是AI编程。

三:AI模型需要近似处理

        对于AI模型(深度学习模型)推理的影响因素,最容易想到的是算力(计算复杂度),性能(推理准确度),存储(模型的大小)。不加处理,直接拿来用,基本上是不可能的。

        做为一个实际的项目/产品,除了上面三个因素外,还有一些其它方面需要考虑:实时性(吞吐最),功耗(耗电,发热降温),成本…… 因为推理的场景会很多,比如:数据中心,基站,自动驾驶,摄像头……

        我们把对AI模型的处理称为近似处理,它可以在几乎不损失精度的情况下,减少计算复杂度,存储量。近似处理的方法很明确,我之前文章也提到了。量化,剪枝,深度压缩。

        为什么要提这几种处理?因为这些处理实际上适合 FPGA 和 ASIC(Google的TPU,华为的昇腾,RK的SOC(NPU)),它实际上是将AI模型部署到特定硬件的关键。

3.1:低精度定点代替浮点

        这里不再细述,简单说就是将模型中的权重的激活函数输出进行精度降低(具体的方法,我之前有一篇文章有提到)。可参见:深度学习的量化和剪枝_深度学习中的剪枝-CSDN博客

        另外,FPGA中的DSP有较多的不同精度运算的支持,使得FPGA相比ASIC和GPU有更灵活的优势。

3.2:网络剪枝

        去掉网络结构中多余的神经元或者连接。深鉴科技就是凭借相关的论文,成功将自已卖给了Xilinx。

        注意:剪枝往往会将密集型网络转换成稀疏网络。这刚好也是FPGA合适的(不合适GPU)。

3.3:深度压缩

        其实,这并不是一种单独技术,是多种处理的集成。一般分为三个步骤:

        1:迭代剪枝,去掉低权重网络分支。

        2:权值量化和共享。共用相同权重(保持索引),保存时减少了位宽。

        3:采用霍夫曼编码,对非均匀的权重进行进一步无损压缩。

        深度压缩主要是降低了模型大小,减少内存使用。尽量少使用片外内存,提升性能。

四:FPGA大厂的AI尝试

        好了,我们来看看领先的FPGA厂商都做了一些什么。

4.1:在FPGA 中 提供 DPU IP

         使用逻辑单元来完成 AI 运算,当然,更多情况使用的是DSP + RAM + 外部DDR。但这些会封装成一个IP 给到用户使用。

        典型应用就是Xilinx vivado 提供的 DPU IP。

4.2:添加芯片与FPGA异构集成

        使用SSI,EMIB等方式将其它ASiC芯片与FPGA进行集成(合封)。异构系统可以将FPGA和ASIC 芯片的优势进行互补。工具也使用ASIC芯片自带的生态。

        比如:Xilinx 的 AIE 就是一颗ASIC 芯片。

4.3:开发语言

        直接使用RTL的开发语言,易用性太差。于是:

        OpenCL:FPGA的高层次开发语言。这是跨平台的高层次开发语言,Intel , Xilinx都支持

        OpenVINO:Intel 发布的深度学习开发套件。它与Intel其它平台兼容。

4.4:提升可变精度的DSP

        Intel 的FPGA 提供可变精度的DSP,可以接受多种量化模型,提升运算速度。

五:FPGA部署AI模型的实验

        并不能拿到国内比较好的ASIC的AI芯片(或者NPU),我们就拿 华为海思的 Hi3559AV 200 和SS927,Google端侧的TPU,以及RK的芯片为例 ,做一下比较。

       我们从 能效比,成本,生态几方面来比较:

5.1 FPGA 的优势?

        RK:

CPUNPUMIPIISPPCIe
RK35664核A551 TOPS @ INT82.5G * 48MGen2*1
RK3588

4核 A55

4枋 A76

6 T2.5G * 416MGen3*4

        TPU / Coral:

                4 TOPS @ INT8,价格:20美金   功耗:2W

        Hi3559 AV 200 / SS927:

                2.5 Tops 价格:百元人民币

        AMD/Xilinx:

 从上面的数据对比,可以看出:一地鸡毛啊

        从算力,功耗,成本上看,FPGA 都完全不占优势。相同算力,FPGA需要10倍的成本,汗。

        从生态上看,GPU > NPU(ASIC)  > FPGA ,因为拿最有名的 AMD的 Vitis AI 来看,基本没有什么成功的项目,因此极少有人使用(Model zoonm里面的模型也非常少),基本没有生态。

        据Xilinx内部人说:AIE设计之初就不是针对AI的,而是针对ME(通讯相关的信号处理),类似DSP的PipeLine计算,所以,在后续往AI上转时,硬件架构支撑本身就不好,对神经网络这种多层运算支持不好,因为需要不停的从DDR取缓存的数据,这会导致AIE效率不高。后续新增了一个 ML 版本(添加了运算枋间的片上内存),但是,到了 AMD时代,公司的重点转到 CPU,基本把FPGA的 AIE 给完全取消了(在中国地区的ACAP 的 AI 支持团队全部裁了)。

        所以,简单分析,可得出结论,单从技术指标上看,FPGA在AI领域没什么优势

5.2:FPGA 与 AI的融合方案

        什么AI融合,这里只是随便想的一个并不很恰当的名词,大概意思就是,FPGA不要作为AI的主芯片,只是在合适的AI项目中参与,融合,比如:对于需要实时的AI场景,在成本允许的情况下,不仅可以用FPGA解决数据预处理,还可以进一步用FPGA 卸载掉部分 AI 推理的功能,达成场景进一步优化性能的目标。

        如何理解上面的AI 融合 方案?

        1:使用FPGA(DSP)来完成AI推理。软核

        软IP,提供灵活通用的算子,或者定制算子,在FPGA中部署 CNN,LSTM,Transformer等AI 深度学习模型。

        DSP因为支持多种精度运算(FP32,FP16,INT16,INT8),所以,对于量化后的模型有一定的优势。整体算力可以从 0.3 —— 50 TOP要@ INT8(2KK的FPGA芯片)

        2:在需要直接与多种接口取数,且需要快速推理时,使用FPGA

        丰富的硬件可编程SIO,UIO,GT,支持PCIe,MIPI,以太网,LVDS等接口接入。

        利用FPGA的接口多,速度快,吞吐量大的优势。为AI推理提供数据通路。

        如:直接从感应器获取数据,通过FPGA丰富,高速的接口,直接获取数据,进行推理。

        3:需要实时性高,需要ns级的数据预处理和后处理,完成系统同步。

        这种场景,如果要做简单的AI运算,可以使用FPGA来完成,充分利用 可编程逻辑和片上存储。

        同步处理:高精度时钟级并行处理,完成数据预处理以及时间同步,为AI推理降低部分运算负载。见 下5。

        4:注意,和微软的方案不同,片上存储一般无法完成AI的运算所需,一定需要借助DDR。需要有DDR接口和外置DDR。

        5:处理完成后,可以再交给 重度的AI推理给到  SoC(NPU),继续处理。

        6:应用领域:工业自动化,医疗,电力,汽车,音视频处理,高性能计算……

        以上的方案,有一些牵强,受限于应用场景,应该并不能广泛应用。我们理解为一种软核IP的应用方案。完全使用FPGA来完成部分AI推理的功能。缺点很明显,成本(开发成本和实际芯片的成本)。

     5.3:行业的发展

        除了大力发展 GPU,国内也还有一些同行在致力于专用的 AI 芯片以及与FPGA的整合。

        公司H :某国内知名企业,实际上已经生产了较强算力的 AISC (AI推理)芯片,可以达到20T以上的算力(并不是上文提及的芯片),此芯片资料很少,并不作为单芯片销售,只支持模组(板卡)集成芯片,国内一些特种行业有很多在使用。因该该司有不错的AI开发生态,可以说,是国内最有潜力的AI芯片大厂。

        公司F:某低调 FPGA 企业,已经自研了 专用AI芯片多年(5 - 6年了吧),现在已经可以生产出 20 T以上算力的芯片,而且因为该公司有FPGA,已经将该芯片做为硬核  IP 植入自有最新的某款FPGA(功能自带,根据用户是否选择而开启)。相对已经比较成熟,一些特种行业已经在使用。因为完全不公开,没有大规模使用,工具链无法评判,只是据说是可用的。自然谈不上什么生态,作为特种行业的应用,基本已经足够,也具有很强的领先优势。

        公司R:某 多年 MCU,SoC厂商,最新的SoC内置了 NPU,差不多有6T算力,能满足不少应用(包括小型的大模型)。但是可理解为集成产品,因为该司芯片自研能力一般。一些有高要求的特种行业并不敢使用。但目前用户较多,成本很低,加上有简单的工具链可用,也是一支潜力股。之前我参加过它们的生态大会,差不多有5000人参加,生态链还是相当不错的。

六:思考

        FPGA的设计局限,懂的都懂,它设计之初就是为了做ASIC原型验证的。然后用于一些数据预处理,图像视频处理,协议转换等场景,主打一个快周期,运算快,可编程。和AI运算需要的并行运算并非一条路子。

        另外,在量大情况下,FPGA的成本高于ASIC,如果应用于一个用量非常大的场景(百万),加上性能肯定略低于ASIC,一定是不合适的,FPGA的终点是ASIC。

        对于,深度学习模型推理,这是一个相对固定,用量极大的场景,并不适合使用FPGA来完成。对于上面提到的FPGA AI +的方案,如果有办法将两颗芯片合封到一起,或者通过一个协议异构配合,也是可以替代 AI+方案的。(AI+方案注定规模小,无生态,属于定制项目型)

        所以,我认为 Xilinx 的技术方案本身是没有问题的,目前没做起来,原因是没有将AIE当做一个独立的芯片来打造(投入太少),但野心太大,想与GPU(NVIDA)分庭抗礼。AIE 的定位是正确的,但是投入是不够的,它只是一个附庸。因为对于GPU/CPU,除了硬件,更重要的是还需要打造强大的生态,AMD肯定考虑过,所以有Vitis AI 这个产品,但是,骨子里的基因,并不具备这个能力,所以,只开了一个头。话说回来,NVIDA能够成功,也是有偶然因素的,因为GPU最早还是定位于显示,因为有了比特币,积累了一把财富,等到了AI的爆发。而老黄对于CUDA平台的建立,是非常超前的,提前做了很大的布局和投入。各种机缘巧合,加上天才的黄教主,才形成了NVIDA的强大的壁垒。

        Xilinx的策略,是让资方相信,它可以进入AI领域这个更大的市场,于是,以一个非常不错的价格将自已打包卖给了AMD。AMD试图沿着Xilinx的想法,继续尝试,但花了一段时间去市场验证,结果很不好,基本没有落地的AI项目(竟争不过GPU,甚至NPU的解决方案),主要问题从表面上看是工具链存在问题,实际上还是一个生态的问题。于是, AMD很快放弃了 Xilinx原有的思路,将 AIE 引入 PC市场,看起来,已经暂时放弃了 FPGA + AIE 的组合(在中国的支持团队基本全部撤掉了)。当然,这也可能是因为AMD本身就有GPU的产品和市场,两者是有冲突的。但不管怎么说,实际情况就是,AMD撤掉了原来的VITIS AI的开发团队/售前团队,转向Ryzen AI (基于CPU的开发平台)。

        既然自已做不到,能否找其它团队合作,买,买,买呢?很不幸,市场上并没有类似可以合作的企业, Google?太大了,人家不会理你。一些小的创业公司?没有生态,价值不大。

        那国内的FPGA厂商应该如何做呢?放弃?或者采用喝一口汤的融合方案(打个下手)?

        我的建议是:不能放弃,不要融合,寻求合作。

        第一步:AI 模型训练

        企业自身具有 AI 应用模型(主要是深度学习,神经网络模型的训练能力)的技术能力,这是根本,否则无法进行下面的步骤。至少有那么一两位资深人士。这是进入这个领域的前提。有了这样的人,才能能进入后面的步骤。不要小看这一点,这其实是很大难度的(因为人才跨领域的)。

        第二步:软核IP

        建立AI实验室,做一些预研的工作。预研的目标是完成2个目标。FPGA 的软IP(DPU)的简单尝试。注意,只是简单尝试,找到FPGA本身在AI运算上的特点,这个必须要掌所握,但是,这一定不是主要方向,但可以快速切入AI领域,用一两个外部项目,一方面打磨AI模型层的能力,而一方面的市场上形成可演示的产品。

软核IP的实现方法:

  • 设计与实现:通过 HDL(如 Verilog 或 VHDL)设计一个定制的软 IP 核,利用 FPGA 内部的 DSP 单元、BRAM、逻辑单元等资源实现深度学习的推理。主要包括卷积、矩阵乘法、激活函数等操作的硬件加速器。
  • 优化与调优:使用高层次综合(HLS)工具优化硬件架构,以实现更高效的运算单元布局。还可以通过流水线技术、并行计算等方法提高推理速度。

优点:

  • 灵活性高:可以根据具体需求灵活配置和优化计算资源,适合多种神经网络结构和应用场景。
  • 可定制化:软 IP 可以完全根据需求定制,适应性强,且能够在 FPGA 中进行快速迭代和升级。
  • 节省成本:无需额外的硬件投入,仅依赖 FPGA 本身资源,适合小批量或快速开发。

缺点:

  • 性能有限:相较于硬 IP 或专用芯片,软 IP 在计算密集型任务(如大规模深度学习推理)上的性能可能较弱,推理速度受 FPGA 资源限制。软核IP可以独立综合(固化在某个区域,提升性能和稳定设计),也可以和设计一起综合。
  • 开发复杂度高:需要深入的 FPGA 开发经验和对深度学习算法的理解,开发周期较长。   

        第三步:硬核IP或合封AI芯片

        建立AI实验室(如果有实力,可以和第二步并行),购买或自研 硬核 IP(实现深度学习模型的推理)。硬核IP一般需要在软件层面包装一个Macro IP。如果无法购买硬核IP,还可以找一款成熟的ASIC AI 芯片与FPGA合封,通过I/O进行调用。

硬核IP的实现方法:

  • 硬 IP 集成:使用预先设计和验证好的 DPU(Deep Learning Processing Unit)硬 IP,如 Xilinx 的 DPU,可以直接在 FPGA 中集成该硬件加速单元,用于高效执行深度学习模型推理。
  • 设计集成:通过设计工具(如 Vivado)将 DPU 硬 IP 集成到 FPGA 设计中,结合其他逻辑单元,实现完整的应用系统。

优点:

  • 高性能:DPU 硬 IP 是为深度学习推理专门优化的硬件,加速效果显著,性能优于纯软 IP 实现。
  • 开发难度低:由于 DPU 硬 IP 已经过优化和验证,开发者可以专注于系统集成和应用开发,减少了开发难度和时间。
  • 兼容性强:通常支持多种深度学习框架(如 TensorFlow、Caffe),能够直接部署已有模型。

缺点:

  • 灵活性受限:硬 IP 的配置较为固定,灵活性不如软 IP,难以针对特定应用进行深度定制。
  • 成本较高:引入硬 IP 可能会增加开发成本,特别是在需要许可费或资源消耗较大的情况下。

合封实现方法:

  • 芯片合封:将成熟的 ASIC AI 芯片(如 TPU、NPU)与 FPGA 芯片封装在一起,利用高速 IO 接口实现两者之间的数据通信与协同处理。
  • 系统集成:通过设计专用的接口协议和数据路径,使 FPGA 控制系统能够高效地调用 AI 芯片进行深度学习推理任务。

优点:

  • 最高性能:ASIC AI 芯片通常为特定任务高度优化,性能强大,适合高吞吐量、低延迟的深度学习推理应用。
  • 工作负载分担:FPGA 负责系统控制与数据处理,AI 芯片专注于推理计算,两者协同工作可以充分发挥各自优势。
  • 可扩展性:这种方案适合需要大规模部署的应用,可以根据需要选择不同的 AI 芯片,升级容易。

缺点:

  • 成本最高:合封设计和生产成本高,同时需要处理复杂的集成和通信问题。
  • 开发复杂度高:需要处理两种不同架构的协调工作,涉及高速 IO 设计、协议设计等复杂问题。
  • 空间占用:合封可能增加整体芯片面积和功耗,尤其在资源受限的环境下可能受到限制。

    第四步:完成集成的开发工具链

        最终,还是要形成一个统一的自主产权的开发工具链。可能一部分是集成三方的。

          所以,综上所述,FPGA要进入AI赛道,通过合作是必须的,但也要对相关的技术要有一定的掌控。不然,也没法定义合作的产品。

        合作方,比如找到上面的H公司,F公司合作,等…… 

        但是,AI开发生态是关键,这往往也是合作的障碍,有生态的看不起你,没生态的,你看不起人家。但它是能否做成的关键。就好像现在没有人再去做PC 操作系统一样。如果好的生态确实不存在,那就寻求一个更好的开发工具链了。

        可见的 Cuda 这座大山就在那里,很难跨越,但如果只针对某一些行业和场景(FPGA有可替代性),只要AI模型的部署不要太困难,还是很有机会。

        FPGA在AI领域的定位,这个问题困扰我很久了,本文算是给自已一个答复。

        

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

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

相关文章

家校互动实现方案

目前,家校互动正成为最重要的校园场景之一。 大家都知道我主要做萤石的二次开发,这边也是给出了一个利用萤石开放平台的解决方案。 主要功能如下: 1.门禁管理,告警推送 2.可多人通过小程序看画面 3.电子班牌-父母微信一键通话…

第二代骁龙8平台手机nubia Z5拆解

这周末,除非外面下钞票,否则谁也拦不住我玩《黑神话悟空》(附:两款可以玩转悟空的显卡推荐) 天玑助力联发科力压高通~探秘MTK 5G旗舰智能手机SoC芯片——MT6989(天玑9300) 第二代骁龙8平台手机…

html+css+js网页设计 个人博客10个页面

htmlcssjs网页设计 个人博客10个页面 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&#xf…

图像基础(2)视频信号和图像数字化的理论

#灵感# 继续读书,主要是视频信号相关。 视频实际上是按时间轴排列的一组图像序列。模拟图像在空间位置上有连续性,每一个位置上光的强度变化也有连续性。 1、视频信号分为3类: 分量视频、复合视频、S-Video. 分量视频是将原始视频信号&am…

无人机的工业应用场景

一、监测与检查 电力巡检:工业无人机在电力巡检中发挥着重要作用,能够替代人工进行高空、高风险作业,提高电网巡视效率,降低运维成本。通过搭载高清相机、红外热成像等设备,无人机可以实时传输电力线路状态&#xff0…

开放式耳机哪个品牌的好用?热榜口碑开放式耳机测评集锦!

现在市面上的开放式耳机真的越来越多,但是开放式耳机哪个品牌好用呢?可能不了解开放式耳机的就会开始犯难了,所以到底该怎么样选择才能选出一款比较适合自己的开放式耳机呢?根据这个问题,我作为一名耳机测评师&#xf…

【操作系统】实验:文件系统

目录 一、实验目的 二、实验要求 三、实验步骤 四、核心代码 五、记录与处理 六、思考 七、完整报告和成果文件提取链接 一、实验目的 1、掌握文件系统的基本结构和文件系统的管理方法 2、加深对两级文件目录认识和理解 3、对文件操作的系统命令实质内容和执行过程深入…

python例子:使用pygame实现五彩烟花

作品介绍 作品名称:使用pygame实现五彩烟花 开发环境:PyCharm 2023.3.4 python3.7 用到的库:pygame、random、sys、math 作品简介:该实例是一个使用 Pygame 库实现的烟花效果模拟程序。 实现过程 一、初始化Pygame pygame.…

如何在没有密码的情况下从 iPad 中删除 MDM?100% 工作

如果您遇到已使用远程管理锁恢复的 iPad 或 iPhone,您将需要远程管理器的登录信息。 从 iPad 中删除 MDM可能很困难,尤其是在您没有正确的权限的情况下。在寻求帮助时,许多客户访问 Apple 的官方论坛,却发现问题并不总是容易解决。…

java中的原子性

在Java中,原子性(Atomicity)是并发编程中的一个核心概念,指的是一个或多个操作在中间状态对其他线程不可见,且不可被线程调度机制中断的性质。一个原子操作要么全部执行成功,要么完全不执行,不会…

第136天:内网安全-横向移动资源约束委派

利用条件 首先是dc域控主机必须是win2012以上的主机 其次是域内有一个账户,可以同时登录两台主机 利用 jie 可以登录 win2008 也可以登录 win7 资源委派不需要设置委派,默认即可 实验复现 复现环境 通过网盘分享的文件:136-xiaodi.local…

天宝TBCTrimble Business Center中文版本下载安装使用介绍

天宝TBC:测绘之道,尽在其中 引言 昔日杜甫,忧国忧民,今朝我辈,测绘天下。天宝TBC,乃测绘之利器,助我等行走于山川河流之间,绘制天地之图。此文将以杜甫之笔,述说TBC之妙…

C_05_编译4阶段

c语言编译的4个阶段:预处理、 编译、 汇编、 链接 预处理阶段会在源代码中查找预编译指令,其中主要是头文件展开(include),宏定义(defind),选择性编译(ifdef)三种指令 预…

【ArcGIS/GeoScene Pro】离线许可归还不了

问题: 解决方案: 将一下项置空即可,让后重新获取许可信息

网络安全售前入门01——产品了解

目录 1.概述 2.常见网络安全产品 2.1下一代防火墙(NGFW) 3.后续 1.概述 为方便初入网络安全售前工作的小伙伴了解网安行业情况,我制作一系统售前入门(安全产品,安全服务,法律法规等)介绍&am…

AI创新,DataOps聚能 | 白鲸开源DTCC共话DataOps新篇章

近日,由IT168联合旗下ITPUB、ChinaUnix两大技术社区主办的第15届中国数据库技术大会(DTCC 2024)隆重召开。大会以“自研创新 数智未来”为主题,吸引了数百位行业专家和广大数据领域从业者共聚这场年度数据库技术交流盛宴&#xff…

vs2019 C++ 无法定位程序输入点于动态链接库

问题 一个项目一段时间没运行后,再运行报以下错误: 无法定位程序输入点??0lnferenceEngineExceptiondetailslnferenceEngine QEAAAEBV? b a s i c s t r i n g D U ? basic stringDU? basicstringDU?char traitsDstd v?$allocatorD2 stdHOZ 于动…

解决 python import 报错问题

需求问题描述 期望用Python写工具,转换excel内容合并到xml中,需要用到 openpyxl & lxml 库,因此需要安装。 import openpyxl 提示报错,但是没有像java代码的解决方案推荐,即无法直接导包。 分析记录 Note&#…

React antd 表格嵌套表格(可展开)

注意: 采用的是React antDsign 4.x版本 实现效果 代码实现 import { Space, Table } from antd; import React, { useRef } from react;const CheckList () > {const data [{id: 1,name: 张三,age: 18,content: [{id: 1-1,text: 我叫张三,},],},{id: 2,name:…

城管执法系统源码,城市管理综合执法监督系统,微服务架构,后端框架采用springboot ,支持二开

Java智慧城管系统源码 数字城管APP系统源码 城市管理综合执法监督系统源码,移动执法APP源码。 智慧城管系统开发技术: 技术架构: 微服务 开发语言: java 开发工具:idea、VSCode 前端框架:vueeleme…