- 博客(74)
- 收藏
- 关注
原创 CMake软件迁移评估-分析软件包
CMake使用简单的平台和编译器独立的配置文件控制软件编译过程,并生成可在开发者选择的编译器环境中使用的本机 Makefile 和工作区。打开鲲鹏DevKit插件并登录鲲鹏DevKit工具,在左侧导航栏中里选择“应用迁移 > 软件迁移评估”,勾选“分析软件包”,单击“上传”上传待分析的x86 RPM包,目标操作系统选择CentOS 7.6,执行软件包迁移评估。在“/etc/profile”文件末尾新增以下字段,完成后按“ESC”,输入“:wq”,按“Enter”保存并退出。
2024-08-20 22:16:25
1044
原创 扫描分析netty-all-4.1.34-Final
打开鲲鹏DevKit插件并登录鲲鹏DevKit工具,在页面左侧选择“应用迁移”,单击“软件迁移评估”进入软件迁移评估任务,单击“分析软件包”,上传“netty-all-4.1.34-Final.jar”源码包。Netty包扫描结束后,会自动跳转至评估报告页面,Netty框架包的扫描报告如图2所示,此报告表明该JAR包中已存在于华为云镜像源中的鲲鹏Maven仓库中,用户可选择直接下载该JAR包进行使用。本实践使用鲲鹏DevKit应用迁移工具进行 软件迁移评估 ,帮助用户实现软件迁移前期分析需求。
2024-08-20 22:13:37
426
原创 ExaGear for Server
在guest环境中安装x86应用程序,guest 环境中查看到的路径如果是/path/to/binary,则实际路径是:/opt/exagear/images/ubuntu-<os_version>-x86_64/path/to/binary。比如,在guest环境中 nignx的路径为 /usr/sbin/nginx,在host 环境上的实际路径为/opt/exagear/images/ubuntu-<os_version>-x86_64/usr/sbin/nginx。
2024-08-20 22:11:24
847
原创 ExaGear概念
x86运行环境是ExaGear创建的一个包含所有标准库、实用程序、配置文件的x86应用执行环境,这确保了x86应用程序运行所需的基础设施组件的可用性。从技术角度讲,x86运行环境是一个特定的文件目录,包含了x86库、命令、实用程序和其它系统文件(见图2)。ExaGear是一款二进制指令动态翻译软件,运行在Arm64服务器上,通过将x86的指令在运行时翻译为Arm64指令并执行,使得绝大部分x86应用无需重新编译就可运行在Arm64服务器上,实现低成本、快速迁移x86应用到Arm64服务器。
2024-08-20 22:08:40
947
原创 Agith:openEuler 运维变更观测工具
虽然 Smith 探员是电影中的反派角色,但从运维工程师的视角来看,探员是 Matrix 系统中最优秀的运维工程师。Matrix 系统每时每刻有数十亿的流量接入,但是探员却可以感知轻微的变更异常,并通过最近的节点登入以处理故障(Kill Neo)。无论什么样的上层服务,从OS的视角来看无非5类行为:进程,内存,文件,网络,外设。传统方法输出的是运维人员的所有输入,组织为日志数据。但是只要在终端中启动这个服务,Agith 就可以获取该服务的所有行为,从而得到所依赖的各种资源,例如动态依赖库,配置文件等。
2024-08-15 03:42:51
636
原创 OpenCV原生支持openEuler
它提供了丰富的功能,包括图像处理,特征检测,目标识别,机器学习等,在计算机视觉领域,OpenCV凭借其强大的功能、性能和广泛的应用场景,已经建立起绝对的领导地位。openEuler将为开发者提供一个更为智能、高效的开发运行环境,推动操作系统与人工智能的深度融合,开启AI for OS的全新时代。接下来,OpenCV社区与openEuler社区将持续共同合作,确保OpenCV的特性和问题修复均在昇腾硬件和openEuler上进行高效验证,为用户提供更高质量更好性能的能力,促进计算机视觉技术的应用和发展。
2024-08-15 03:41:16
225
原创 iSulad 与 Kuasar 双剑合璧:让你单节点轻松运行 10w+ 个 WASM 沙箱
沙箱技术背景介绍不管是 VM、Container,还是 WASM 沙箱,它们本质都是利用了沙箱技术,实现将不信任程序隔离在沙箱环境中执行,避免影响其他应用和服务。沙箱技术大致可以分为两类[1]:基于隔离的沙箱:该类型的沙箱将应用的执行环境从操作系统环境中隔离出来,形成一个独立的执行环境。图 1 基于隔离的沙箱基于规则的沙箱:该类型的沙箱并不是完全关注对于应用程序的隔离,而是用规则的方式控制每个应用的权限,基于规则的沙箱之间可以分享操作系统的逻辑资源。图 2 基于规则的沙箱沙箱安全隔离能力对比分析图 3
2024-08-15 03:40:21
834
原创 创意信息旗下拓林思嵌入式操作系统通过openEuler社区OSV测评
近日,创意信息旗下成都拓林思软件有限公司(以下简称“成都拓林思”)自主研发的嵌入式操作系统TurboLinux Embedded携手四川鲲鹏&欧拉生态创新中心正式通过openEuler社区嵌入式系统技术兼容性测评,获得社区针对嵌入式系统的OSV产品兼容性认证,成都拓林思也成为业内首批通过该测评的企业。拓林思嵌入式操作系统(TurboLinux Embedded)是一款针对多种硬件架构的嵌入式操作系统,可以在瑞芯微、飞腾等多款芯片上运行,支持多款AI计算框架,支持多种运行环境,提供良好的性能和功能支持。
2024-08-15 03:38:00
300
原创 工商银行和复旦大学基于openEuler的全栈自主AI机密计算解决方案
作为长期推动数字化转型、持续关注 AI 技术在实际业务中的落地应用的国有大行,工商银行敏锐识别到了这一难题,在国家科技创新2023–“新一代人工智能”重大项目“数据安全与隐私保护下的机器学习技术”组织下,联合复旦大学、华为积极探索 AI 机密计算解决方案。高性能:基于鲲鹏 TEE-昇腾TEE 的异构安全通道技术,算力安全卸载到昇腾 NPU,结合复旦大学自研的动态推理等大规模异构算力加速技术,实现极致的安全和性能。全栈自主创新:基于国产化软、硬件,提供技术自主、供应链安全的国产化AI机密计算解决方案。
2024-08-15 03:36:25
247
原创 工商银行和复旦大学基于openEuler的全栈自主AI机密计算解决方案
作为长期推动数字化转型、持续关注 AI 技术在实际业务中的落地应用的国有大行,工商银行敏锐识别到了这一难题,在国家科技创新2023–“新一代人工智能”重大项目“数据安全与隐私保护下的机器学习技术”组织下,联合复旦大学、华为积极探索 AI 机密计算解决方案。高性能:基于鲲鹏 TEE-昇腾TEE 的异构安全通道技术,算力安全卸载到昇腾 NPU,结合复旦大学自研的动态推理等大规模异构算力加速技术,实现极致的安全和性能。全栈自主创新:基于国产化软、硬件,提供技术自主、供应链安全的国产化AI机密计算解决方案。
2024-08-15 03:34:43
333
原创 openEuler 22.03 LTS LoongArch 发布,龙架构进入社区主线,支持Everything和EPOL软件仓库
支持 Xfce、GNOME、Kiran 桌面环境。近日,openEuler 社区 LoongArch64 SIG 联合 Release SIG、QA SIG,共同完成了社区主线代码归一,CI/CD 工程整合工作,同时, openEuler 22.03 LTS 实现了对 LoongArch 的完整支持,并发布系统镜像,支持 Everything、EPOL 软件仓库中的所有软件(约 3.5 万个)。龙架构正式成为 openEuler 官方支持的芯片架构,是 openEuler 社区发展进程中的重要里程碑。
2024-08-15 03:33:46
363
原创 移动云的三款开源项目加入openEuler,助力社区繁荣发展
2023年12月15日,以“崛起数字时代 引领数智未来”为主题的操作系统大会&openEuler Summit 2023在北京召开,中国移动云能力中心张胜举代表移动云出席本次大会,开源3个创新项目并加入openEuler项目群:物联网消息组件(mqtt-proxy)、AMQP协议消息组件(amqp-proxy)和虚拟化性能检测分析工具(VMAnalyzer)。「协议支持」:支持MQTT V3.1.1协议,可连接各类物联网设备,基于Pub/Sub消息模型,支持一对多的消息收发方式。
2024-08-15 03:32:38
657
原创 恒生电子的创新之旅,携手openEuler走在金融科技前沿
就技术创新来说,恒生电子基于openEuler发布的金融行业企业级操作系统解决方案实现了Kernel优化、I/O优化、中断优化和网络优化等多种优化,特别针对大数据场景、低延迟场景进行了加持,通过定制化可以精准的满足金融行业的需求,“它在数据保护和网络安全方面的表现也非常出色,为我们提供了坚实的安全基础”。同时,我们也加强了系统的安全性,确保金融数据的安全和网络的安全性”。当然,openEuler能够如此快速地进步,离不开开源社区的支持,而开源也赋予了它定制化的能力,这也是恒生电子最为看重的部分。
2024-08-15 03:31:27
334
原创 云原生可观测洞察及openEuler社区实践
5]gala-gopher 详细能力介绍:https://gitee.com/openeuler/gala-docs/blob/master/demo/A-Ops%E5%8F%AF%E8%A7%82%E6%B5%8B%E8%83%BD%E5%8A%9B%EF%BC%88gala-gopher%EF%BC%89%E4%BB%8B%E7%BB%8D%EF%BC%8823.12%EF%BC%89.pdf。随着内核的发展,eBPF 逐步从最初的数据包过滤扩展到了网络、内核、安全、跟踪等。
2024-08-15 03:30:31
981
原创 【鲲鹏DevKit黑科技揭秘】HPC应用1人天精准调优,综合性能提升24%
鲲鹏平台多核多并发、易扩展等特点能够很好的满足风雷软件的高并行计算需求,并且鲲鹏开发套件DevKit提供的全场景性能调优能力、能够快速消除性能瓶颈,进一步提升风雷软件在鲲鹏上的运行性能。鲲鹏DevKit性能分析工具面向HPC场景提供了OpenMP/MPI专项分析能力:该功能可以采集风雷软件面向OpenMP/MPI应用的关键指标以及性能监测相关信息,精准获得串行及并行时间、较准的Top-Down指标、指令分布和内存带宽等信息,并针对异常信息给出优化建议,帮助技术人员精准、快速的完成调优。
2024-08-15 03:28:19
691
原创 我和容器有个约会:浅析HPC容器的前世今生
高性能计算应用属于交叉学科,专业性强,懂应用的不懂计算机,懂计算机的不懂应用是非常常见的现象,而且HPC算法晦涩难懂,架构设计复杂多样,导致调优难度普遍较高,2021年的图灵奖颁给了美国计算机科学家 Jack J. Dongarra,他是lapack、atlas等数学库的作者,因为他在数值算法和库方面做出了开创性的贡献,使得高性能计算软件能够跟上四十多年来的指数级硬件更新,说明业界普遍都在追求非常极致的性能、性价比与能耗比,仅是提高很少量的百分点都能为企业带来巨大的经济效益。请在评论区写出你的感受。
2024-08-15 03:25:10
851
原创 CPU与内存子系统性能调优
调优思路性能优化的思路如下:如果CPU的利用率不高,说明资源没有充分利用,可以通过工具(如strace)查看应用程序阻塞在哪里,一般为磁盘,网络或应用程序自己的业务逻辑有休眠或信号等待,这些优化措施在其它章节描述。如果CPU利用率高,可以选择更好的硬件,优化硬件的配置参数来适配业务场景,或者通过优化软件来降低CPU占用率。根据CPU的能力配置合适的内存条,建议内存满通道配置,发挥内存最大带宽:一颗鲲鹏920处理器的内存通道数为8,两颗鲲鹏920处理器的内存通道数为16;
2024-07-16 03:13:16
938
原创 网络子系统性能调优
调优思路本章主要是围绕优化网卡性能和利用网卡的能力分担CPU的压力来提升性能。在高并发的业务场景下,推荐使用两块网卡,减少跨片内存访问的次数。即将两块网卡分别绑定在服务器的不同CPU上,每个CPU只处理对应的网卡数据。高并发场景还可以为网卡选择x16的 PCIe 卡。二、介绍ethtool是一个Linux下功能强大的网络管理工具,目前几乎所有的网卡驱动程序都有对ethtool的支持,可以用于网卡状态/驱动版本信息查询、收发数据信息查询及能力配置以及网卡工作模式/链路速度等查询配置。
2024-07-16 03:10:47
615
原创 磁盘IO子系统性能调优
调优思路CPU的Cache、内存和磁盘之间的访问速度差异很大,当CPU计算所需要的数据并没有及时加载到内存或Cache中时,CPU将会浪费很多时间等待磁盘的读取。计算机系统通过cache、RAM、固态盘、磁盘等多级存储结构,并配合多种调度算法,来消除或缓解这种速度不对等的影响。但是缓存空间总是有限的,我们可以利用局部性原理,尽可能的将热点数据提前从磁盘中读取出来,降低CPU等待磁盘的时间浪费。因此我们的部分优化手段其实是围绕着如何更充分的利用Cache获得更好的IO性能。
2024-07-16 03:09:42
617
原创 JVM性能调优
调优思路JVM是Java Virtual Machine(Java虚拟机)的缩写,Java代码在不同平台上运行时不需要重新编译,Java语言使用JVM屏蔽了与具体平台相关的硬件指令差异,使得Java语言编译程序只需生成在JVM上运行的字节码,实现在多种平台上不加修改地运行。JVM包括即时编译(JIT)、内存管理(垃圾回收GC技术)和Runtime技术,其中GC调优是性能调优中应用最为广泛。
2024-07-16 03:08:25
806
原创 编译入门那些事儿(6):LLVM Metadata System
(1)uniqued:顾名思义,表示 Metadata 唯一,在 Metadata 中不会显式打印,如果和其它的 Metadata 相同,会被合并。1 的地方改成使用!LLVM Metadata 是 LLVM IR 中非常重要的一部分,它提供了丰富的信息,帮助开发人员更好地理解和优化 LLVM IR,因此 LLVM Metadata 在编译器中被广泛使用,特别是在调试和优化方面。(2)distinct:与 uniqued 相反,表示不唯一,不能和其他相同的合并,即上例中会生成新的!
2024-07-16 03:05:36
778
原创 编译入门那些事儿(2):LLVM TableGen 概述
尤其是在面对大量的信息记录的时候,用起来比较方便。通常来说,上述指令选择和指令调度需要TableGen生成对应的DAGISel.inc,寄存器分配需要TableGen生成对应的RegisterInfo.inc,Code Emission需要TableGen生成对应的MCCodeEmitter.inc。TableGen的用途是创建包含表的巨大的include文件,文件内容各个平台相互独立,为相关平台LLVM后端服务,如果没有LLVM后端使用创建的include文件,TableGen就没有真正的意义。
2024-07-16 03:04:28
945
原创 编译入门那些事儿(3):不透明指针
LLVM中的类型指针有具体的指针类型信息,这是源于LLVM类型系统最初设计时考虑要支持高层的优化,且指针的类型信息可以用于clang前端校验数据类型是否与IR匹配。类型指针携带的类型信息不是必须的,也不是一定准确的,而携带了类型信息后会引起大量无操作类型转换,导致很多资源损耗以及开发难度增大。很多时候假定指针类型相同,使用类型指针的场景会做隐式类型转换,而使用不透明指针的场景需要显式地做检查。(1)LLVM IR中的指针可以在不同类型间转换,类型指针不一定表示内存中的实际底层类型,不具备具体的语义。
2024-07-16 03:03:31
419
原创 安装时报指令错误的处理
在使用官网提供的镜像安装数据库,有时会遇到一些 “非法指令” “illegal instruction” 的问题,或者在一些本地搭建的虚拟机上,数据库启动失败,但是没有很明确的错误信息的问题。在编译脚本中 build\script\utils\make_compile.sh,删除掉所有的 -D__ARM_LSE , 重新打包数据库。该指令集的引用在 Makefile 里面,可以全局搜索 -mavx , 删掉如下编译选项里面加载-mavx 指令,然后重新打包构建即可。cpu 可以通过 lscpu 名称查看。
2024-07-16 03:02:28
1102
原创 【好文推荐】openGauss psycopg2 批量操作性能测试
测试版本本测试基于 openGauss 版本的 psycopg2 驱动。pg.90204pg.测试环境组件说明客户端Rocky Linux 8 虚拟机数据库网络本地回路网卡Python3.6.8测试接口接口名说明备注执行一个数据库操作,vars_list 列表中的所有参数会逐个被应用到query 中,每组参数都会单独封包发送给服务端。该函数主要用于更新数据库的命令,查询返回的任何结果集都将被丢弃。在其当前实现中,此方法并不比在循环中执行execute()快。
2024-07-16 03:00:51
751
原创 鲲鹏机密计算TrustZone应用容器化开发和部署指导
(1)现在就可以开始部署机密OS环境了,我们首先获取tzdriver源码,编译出加载机密OS的内核模块: tzdriver.ko (该章节已提前编译出该模块,开发者可直接加载,路径为:/home/HC/itrustee_sdk/test/CA/tzdriver/tzdriver.ko)(5)下载itrustee_sdk源码,编译出tee_upgrade.ko模块,该步骤已完成,该模块路径为/home/HC/itrustee_sdk/test/CA/tee_upgrade/,开发者可直接按步骤(6)操作。
2024-07-16 02:58:35
898
原创 编译器优化那些事儿(11):Code Size 优化综述
Code Size 优化技术,又叫做代码缩减优化技术,指在代码功能不改变的前提下,对其做变换以达到减少代码体积的目的。在编译器中,DCE 通常是在代码生成之前的一个阶段,它通过分析程序的控制流图和数据流图来确定哪些代码是“死代码”,即不会被执行的代码。相比于 -Os 选项,该选项会应用更加激进的代码缩减优化技术,通常会获得更好的代码体积优化效果,但同时会使得程序性能有大幅度下降,详细描述同样可以参考:https://clang.llvm.org/docs/CommandGuide/clang.html。
2024-07-16 02:55:54
796
原创 编译器优化那些事儿(12):LLVM 自动向量化
其中循环向量化关注循环迭代间的向量化机会,会使循环的迭代次数减少,单次迭代的计算数据量增大。SLP向量化的目的是结合同一循环迭代内的多个计算操作,将多条标量计算合并为一条向量计算,在减少计算指令执行次数的同时,减少Code Size和寄存器压力。自动向量化技术可以在中间代码层面,针对硬件的特性或用户的指示,对代码中的循环根据特定长度进行切分并将循环中的原标量计算操作替换为硬件支持的向量计算操作,发挥硬件的向量计算单元算力。对于示例循环的打印信息如下图。循环向量化扩展循环中的指令,转换的逻辑如下图所示。
2024-07-16 02:54:21
783
原创 【好文推荐】openGauss 5.0.0 数据库安全——全密态探究
示例:当KEY_PATH = “key_path_value”, 四个文件的名称分别为key_path_value.pub、key_path_value.pub.rand、 key_path_value.priv、 key_path_value.priv.rand。列name1:RSA_2048_256_CEK,列credit_card1:RSA_3072_256_CEK,列name2:RSA_2048_128_CEK,列credit_card2:RSA_3072_128_CEK,
2024-07-16 02:52:49
765
原创 【好文推荐】openGauss索引推荐功能测试
单索引推荐单索引推荐功能,目前支持select查询,看官方介绍类似oracle中的sql_tunning_adviser,不过只是推荐创建索引。根据sql优化原理,猜测应该时根据选择来推荐索引。’);(1 row)调用推荐函数的地方需要注意最后面几个分号与引号,有点费解。目前建议需要在t2表tablename创建索引。
2024-07-16 02:46:31
536
原创 【经验分享】openGauss容灾集群搭建
背景openGauss推出了容灾架构,相比之前的一个集群主从架构,而容灾架构是两个集群间的数据同步。为了更深入了解其原理,本文试图通过阅读gs_sdr命令相关的代码来学习下相关的各种操作。(1)容灾搭建过程可以参考:https://www.modb.pro/db/628767(2)vscode调试配置可以参考:https://www.modb.pro/db/658344(3)个人学习记录,理解不一定完全正确。如有错误,可指出一起探讨_环境准备(1)集群1信息。
2024-07-16 02:45:27
773
原创 GCC for openEuler介绍
前言本手册用于指导用户使用GCC for openEuler构建业务场景及相关注意事项。概述GCC for openEuler基于开源GCC-10.3版本(https://gcc.gnu.org,2021年4月发行)开发,并进行了优化和改进,实现软硬件深度协同优化,挖掘OpenMP、SVE向量化、数学库等领域极致性能,是一种Linux下针对鲲鹏920处理器的高性能编译器。
2024-06-18 17:49:26
1472
原创 二进制编译
x86运行环境是ExaGear创建的一个包含所有标准库、实用程序、配置文件的x86应用执行环境,这确保了x86应用程序运行所需的基础设施组件的可用性。从技术角度讲,x86运行环境是一个特定的文件目录,包含了x86库、命令、实用程序和其它系统文件(见图2)。xaGear是一款二进制指令动态翻译软件,运行在Arm64服务器上,通过将x86的指令在运行时翻译为Arm64指令并执行,使得绝大部分x86应用无需重新编译就可运行在Arm64服务器上,实现低成本、快速迁移x86应用到Arm64服务器。
2024-06-18 17:47:17
335
原创 鲲鹏920指令集简介---脚本移植案例
随着计算机技术的发展需要不断引入新的复杂的指令集,为支持这些新增的指令,计算机的体系结构会越来越复杂。然而,在CISC指令集的各种指令中,其使用频率却相差悬殊,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%,显然,这种结构是不太合理的。传统的CISC体系由于指令集庞大,指令长度不固定,指令执行周期有长有短,使指令译码和流水线的实现在硬件上非常复杂,给芯片的设计开发和成本的降低带来了极大困难。将指令长度固定,指令格式和寻址方式种类减少。
2024-06-18 17:45:12
721
原创 Greenplum
Greenplum是一个面向数据仓库应用的关系型数据库,因为有良好的体系结构,所以在数据存储、高并发、高可用、线性扩展、反应速度、易用性和性价比等方面有非常明显的优势。Greenplum是一种基于PostgreSQL的分布式数据库,其采用shared-nothing架构,主机、操作系统、内存、存储都是自我控制的,不存在共享。本质上讲Greenplum是一个关系型数据库集群,它实际上是由数个独立的数据库服务组合成的逻辑数据库。鲲鹏920 5250处理器。操作系统要求如表2所示。硬件要求如表1所示。
2024-06-18 17:43:17
844
原创 PostgreSQL
通过PITR(Point in Time Recovery)技术,可以对数据库进行一次全量备份后,该技术将备份时间点之后的WAL日志通过归档进行备份,使用数据库的全量备份再加上后面产生的WAL日志,即可把数据库向前推到全量备份后的任意一个时间点。在PostgreSQL数据库中,对表进行DELETE操作后,旧的数据并不会立即被删除,并且在更新数据时,也并不会在旧的数据上做更新,而是新生成一行数据。主要用于查询优化时的代价估算,包括一个表和索引进行了多少次的插入、更新、删除操作,磁盘块读写的次数、行的读次数。
2024-06-18 17:40:41
638
原创 OpenMP优化调研系列文章(5)
我们调研了使用手写代码完成上述两种优化的测试,发现在计算量足够大,或者是可以多次重复利用临时数组的时候,可以得到性能的优化。a、b数组为一维数组,元素个数为最大线程数,每个线程根据tid为数组索引访问a、b中不同元素,work函数参数传递方式为传递引用,函数体内存在大量对数组的写回操作,在这种情况下当线程数规模拓展到一定程度,数据一致性导致的Cache冲刷大大降低了Cache的命中率,一个有效的手段就是尽可能使用线程私有变量的读写代替对数组元素的读写。基于键涨落模型数值模拟的并行优化[3]
2024-06-13 17:36:46
490
原创 OpenMP优化调研系列文章(4)
在gather阶段,线程通过将共享标记数组自己的专属位置置0表示到达,团队中的线程需要在同步点等待所有线程都到达。这种优化是必要的,因为并行区域和串行区域之间的barrier通常会阻止死代码的消除来完全移除并行区域,仍会有fork-join的开销。该算法可以看作为扇入为f的树,f的值在不同的级别上可以不同,以保持同步树尽可能平衡。在集中式barrier中,所有线程都在写和读计数器的同一内存位置,导致内存访问的热点问题。构建一棵有多个节点的树,将并行的线程分为几个组,组内的线程共享一个计数器。
2024-06-13 17:35:35
877
原创 编译器优化那些事儿(8):指令调度概述
指令调度通过重排指令顺序,降低指令间依赖,提高程序的并行度,相应的,改变指令的执行时机也会改变指令所使用的寄存器的生命周期;可以知道,将指令调度问题和寄存器分配问题作为两个约束条件进行联合求解得到的解决方案是相对更优的,但由于无论是指令调度还是寄存器分配,都是很复杂的NP完全问题,综合考虑下,编译器一般会分别处理二者[1]。数据冒险可能产生数据流依赖。指令调度受到多方面的约束,如数据依赖约束、功能部件约束、寄存器约束等[3],在这些约束下,寻找到最优解,降低指令流水间的stall,就是指令调度的终极目标。
2024-06-13 17:34:05
1589
原创 毕昇JDK 8 KAEProvider 易用性增强介绍
以 AES 算法为例,openssl 软算性能比硬件加速高,目前 KAEProvider 实现的 AES 固定使用 openssl 软算,随着硬件升级以及硬件算法优化,当 AES 硬件加速效果比软算性能高时,用户使用 AES 进行加解密时无法切换到 KAE 硬件加速。不同引擎支持的硬件加速算法不同,kae 支持的算法[2]和 uadk 支持的算法[3]不一样,kae 引擎不支持 SHA256 算法,而 uadk_engine 引擎支持。kaeprovider.conf 文件不支持用户自定义路径。
2024-06-13 17:30:51
782
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人