期刊文献+
共找到3,159篇文章
< 1 2 158 >
每页显示 20 50 100
基于内存保护键值的细粒度访存监控
1
作者 王睿伯 吴振伟 +3 位作者 张文喆 邬会军 张于舒晴 卢凯 《计算机工程与科学》 CSCD 北大核心 2024年第1期21-27,共7页
基于内存保护键值硬件扩展,提出了一种轻量化且细粒度的页保护机制。突破了传统页保护方法仅支持页粒度访存监控的技术局限,实现了能够拦截每个访存操作的细粒度页保护机制。充分利用内存保护键值提供的用户态线程局部页访问权限控制,... 基于内存保护键值硬件扩展,提出了一种轻量化且细粒度的页保护机制。突破了传统页保护方法仅支持页粒度访存监控的技术局限,实现了能够拦截每个访存操作的细粒度页保护机制。充分利用内存保护键值提供的用户态线程局部页访问权限控制,性能开销相比传统页保护的降低了30%以上。通过融合细粒度页保护与编译插桩,弥补了传统编译插桩方法无法覆盖程序中不可重编译部分的局限性。 展开更多
关键词 访存监控 内存保护键值 页保护 编译插桩
下载PDF
编译技术与编译器设计专题前言
2
作者 冯晓兵 郝丹 +1 位作者 高耀清 左志强 《软件学报》 EI CSCD 北大核心 2024年第6期2583-2584,共2页
编译器作为重要的基础软件,是连接上层应用与底层系统的桥梁,在整个计算机系统软件栈中具有举足轻重的作用.编译技术与编译器设计,一方面作为国家亟待增强和突破的研究领域,迫切需要开展独立自主的科研与创新,另一方面一系列崭新领域的... 编译器作为重要的基础软件,是连接上层应用与底层系统的桥梁,在整个计算机系统软件栈中具有举足轻重的作用.编译技术与编译器设计,一方面作为国家亟待增强和突破的研究领域,迫切需要开展独立自主的科研与创新,另一方面一系列崭新领域的应用需求(如人工智能、异构计算、云计算等)也不断催生新的编译技术创新与突破.因此,编译技术与编译器设计一直是国内外学者的关注点和研究热点.本专题聚焦编译优化、编译器设计、以及编译器可信与安全等基础性问题,重点关注在相关研究领域具有创新性、突破性的高水平研究成果,探讨编译基础理论、关键技术以及编译器研发过程中关于系统设计原理、架构、经验等方面的实质性进展,及其在我国基础软件产业中的应用前景. 展开更多
关键词 编译技术 计算机系统软件 编译器 人工智能 编译优化 异构计算 云计算 软件产业
下载PDF
一种基于指令MKS的自动向量化代价模型
3
作者 王震 聂凯 韩林 《计算机科学》 CSCD 北大核心 2024年第4期78-85,共8页
自动向量化代价模型是编译器进行自动向量化优化时的重要组成部分,其作用是评估代码在应用向量化转换后能否获得性能提升。当代价模型不准确时,编译器会应用负收益的向量化转换,从而降低程序的执行效率。针对GCC编译器默认代价模型的不... 自动向量化代价模型是编译器进行自动向量化优化时的重要组成部分,其作用是评估代码在应用向量化转换后能否获得性能提升。当代价模型不准确时,编译器会应用负收益的向量化转换,从而降低程序的执行效率。针对GCC编译器默认代价模型的不精确问题,以Intel Xeon Silver 4214R CPU为平台,提出了一种基于指令MKS的自动向量化代价模型。该模型充分考虑了指令的机器模式、运算类型以及运算强度等,并使用梯度下降算法自动搜索不同指令类型的近似代价。在SPEC2006以及SPEC2017上进行了单线程测试,实验结果表明,该模型能够减少收益评估错误的情况。与默认代价模型生成的向量程序相比,GCC编译器添加MKS代价模型后,在SPEC2006课题上最高获得了4.72%的提速,在SPEC2017课题上最高获得了7.08%的提速。 展开更多
关键词 GCC编译器 自动向量化 代价模型 收益评估 梯度下降
下载PDF
基于计算思维的任务驱动教学法研究——以“编译原理”为例
4
作者 陈洪生 吴亮 吴春辉 《无线互联科技》 2024年第11期93-96,共4页
计算思维是以计算能力和思维能力为基础的一种思维方式。它是每个人需要具备的基本技能,也是人类求解问题的一条途径。任务驱动教学法就是将课程的教学内容设置成与其紧密结合而富有趣味性和挑战性的任务。文章介绍的教学法就是将计算... 计算思维是以计算能力和思维能力为基础的一种思维方式。它是每个人需要具备的基本技能,也是人类求解问题的一条途径。任务驱动教学法就是将课程的教学内容设置成与其紧密结合而富有趣味性和挑战性的任务。文章介绍的教学法就是将计算思维和任务驱动教学法相结合。它不但可以更好地培养学生的思维模式,激发学生的学习积极性,还能达到较好的教学效果。 展开更多
关键词 计算思维 思维方式 任务驱动式 编译原理课程
下载PDF
swLLVM:面向神威新一代超级计算机的优化编译器
5
作者 沈莉 周文浩 +5 位作者 王飞 肖谦 武文浩 张鲁飞 安虹 漆锋滨 《软件学报》 EI CSCD 北大核心 2024年第5期2359-2378,共20页
异构众核架构具有超高的能效比,已成为超级计算机体系结构的重要发展方向.然而,异构系统的复杂性给应用开发和优化提出了更高要求,其在发展过程中面临好用性和可编程性等众多技术挑战.我国自主研制的神威新一代超级计算机采用了国产申... 异构众核架构具有超高的能效比,已成为超级计算机体系结构的重要发展方向.然而,异构系统的复杂性给应用开发和优化提出了更高要求,其在发展过程中面临好用性和可编程性等众多技术挑战.我国自主研制的神威新一代超级计算机采用了国产申威异构众核处理器SW26010Pro.为了发挥新一代众核处理器的性能优势,支撑新兴科学计算应用的开发和优化,设计并实现面向SW26010Pro平台的优化编译器swLLVM.该编译器支持Athread和SDAA双模态异构编程模型,提供多级存储层次描述及向量操作扩展,并且针对SW26010Pro架构特点实现控制流向量化、基于代价的节点合并以及针对多级存储层次的编译优化.测试结果表明,所设计并实现的编译优化效果显著,其中,控制流向量化和节点合并优化的平均加速比分别为1.23和1.11,而访存相关优化最高可获得2.49倍的性能提升.最后,使用SPEC CPU2006标准测试集从多个维度对swLLVM进行了综合评估,相较于SWGCC的相同优化级别,swLLVM整型课题性能平均下降0.12%,浮点型课题性能平均提升9.04%,整体性能平均提升5.25%,编译速度平均提升79.1%,代码尺寸平均减少1.15%. 展开更多
关键词 异构众核 编译系统 编程模型 存储层次 向量化 节点合并 访存优化
下载PDF
面向飞腾迈创DSP的自主软件栈设计
6
作者 时洋 陈照云 +3 位作者 孙海燕 王耀华 文梅 扈啸 《计算机工程与科学》 CSCD 北大核心 2024年第6期968-976,共9页
飞腾迈创DSP是国防科技大学计算机学院为了突破卡脖子技术,解决我国相关重点领域内芯片长久受制于人的现实问题而自主设计的高性能数字信号处理器。由于该系列芯片采用全自主设计的指令集,无法兼容已有的软件,一套自主完备且高效的软件... 飞腾迈创DSP是国防科技大学计算机学院为了突破卡脖子技术,解决我国相关重点领域内芯片长久受制于人的现实问题而自主设计的高性能数字信号处理器。由于该系列芯片采用全自主设计的指令集,无法兼容已有的软件,一套自主完备且高效的软件栈是决定飞腾迈创DSP生命力的关键。基于团队长期以来的持续工作,系统阐述了飞腾迈创DSP软件栈的设计原则与层次化架构,重点介绍了包括支持层、编译层以及工具层在内的相关软件工具的创新功能、实现方法以及性能。同时,结合用户的反馈与团队的思考,还讨论了飞腾迈创DSP软件栈未来需要探索的相关问题。 展开更多
关键词 DSP 软件栈 编译器 调试器 自主芯片
下载PDF
位宽感知的寄存器绑定算法
7
作者 高猛 赵家程 +1 位作者 崔慧敏 冯晓兵 《软件学报》 EI CSCD 北大核心 2024年第6期2631-2647,共17页
寄存器绑定是高层次综合中的一个基础优化问题,主要目标是在保证电路功能的同时最小化寄存器资源的使用.传统的方法尝试将编译器的寄存器分配算法应用于寄存器绑定中,但却忽略了分配问题与绑定问题的差异性,因此在绑定过程中引入了额外... 寄存器绑定是高层次综合中的一个基础优化问题,主要目标是在保证电路功能的同时最小化寄存器资源的使用.传统的方法尝试将编译器的寄存器分配算法应用于寄存器绑定中,但却忽略了分配问题与绑定问题的差异性,因此在绑定过程中引入了额外的资源约束,或采用了不适合电路设计的编译优化技巧,从而导致资源浪费.为解决这些问题,将寄存器绑定问题转化为连续多重着色问题,并提出一种基于位宽与顶点度结合的启发式求解方法.所提方法通过对变量的位宽和活跃区间等信息的细粒度刻画和建模,能够进一步优化寄存器资源的开销,同时无需插入额外的指令.将该算法与两种典型算法进行比较,实验结果表明,所提算法在MiBench测试集的96.72%的测试用例中达到理论最优解,比其他两种方法分别提高31.5%和25.1%;在Rosetta测试集的所有测试用例中均表现为最优解,比其他两种方法分别提高7.41%和7.39%. 展开更多
关键词 高层次综合 寄存器绑定 资源共享
下载PDF
AutoConfig:面向深度学习编译优化的自动配置机制
8
作者 张洪滨 周旭林 +2 位作者 邢明杰 武延军 赵琛 《软件学报》 EI CSCD 北大核心 2024年第6期2668-2686,共19页
随着深度学习模型和硬件架构的快速发展,深度学习编译器已经被广泛应用.目前,深度学习模型的编译优化和调优的方法主要依赖基于高性能算子库的手动调优和基于搜索的自动调优策略.然而,面对多变的目标算子和多种硬件平台的适配需求,高性... 随着深度学习模型和硬件架构的快速发展,深度学习编译器已经被广泛应用.目前,深度学习模型的编译优化和调优的方法主要依赖基于高性能算子库的手动调优和基于搜索的自动调优策略.然而,面对多变的目标算子和多种硬件平台的适配需求,高性能算子库往往需要为各种架构进行多次重复实现.此外,现有的自动调优方案也面临着搜索开销大和缺乏可解释性的挑战.为了解决上述问题,提出AutoConfig,一种面向深度学习编译优化的自动配置机制.针对不同的深度学习计算负载和特定的硬件平台,AutoConfig可以构建具备可解释性的优化算法分析模型,采用静态信息提取和动态开销测量的方法进行综合分析,并基于分析结果利用可配置的代码生成技术自动完成算法选择和调优.AutoConfig创新性地将优化分析模型与可配置的代码生成策略相结合,不仅能保证性能加速效果,还能减少重复开发的开销,同时可以简化调优过程.在此基础上,进一步将AutoConfig集成到深度学习编译器Buddy Compiler中,对矩阵乘法和卷积的多种优化算法建立分析模型,并将自动配置的代码生成策略应用在多种SIMD硬件平台上进行评估.实验结果可验证AutoConfig在代码生成策略中完成参数配置和算法选择的有效性.与经过手动或自动优化的代码相比,由AutoConfig生成的代码可达到相似的执行性能,并且无需承担手动调优的重复实现开销和自动调优的搜索开销. 展开更多
关键词 深度学习编译器 编译优化 代码生成 自动配置机制
下载PDF
面向RISC-V适配开发的x86 built-in函数转换方法
9
作者 丁志远 朱家鑫 +1 位作者 吴国全 王伟 《广西大学学报(自然科学版)》 CAS 北大核心 2024年第3期620-636,共17页
新兴架构RISC-V的生态建设需要将其他架构函数或软件包向RISC-V架构迁移适配。在研究GCC特定架构适配的built-in函数向RISC-V架构迁移时,提出一套x86到RISC-V的built-in函数转换方法,对于非扩展指令集(属非向量类型)built-in函数,采用RI... 新兴架构RISC-V的生态建设需要将其他架构函数或软件包向RISC-V架构迁移适配。在研究GCC特定架构适配的built-in函数向RISC-V架构迁移时,提出一套x86到RISC-V的built-in函数转换方法,对于非扩展指令集(属非向量类型)built-in函数,采用RISC-V架构下相同功能的built-in或标准库函数替代;对于SSE扩展指令集built-in函数,建立数据类型映射和向量函数操作映射实现向RISC-V架构向量扩展函数或标准库函数的迁移,其中RVV函数迁移方式占比67%。实验结果表明:方法迁移的程序功能正确,方法有效。本文方法对其他扩展指令集built-in函数的迁移提供了指导,且与现有工作相比,更易扩展、覆盖面更广。 展开更多
关键词 函数迁移 built-in函数 指令扩展集 RISC-V迁移
下载PDF
DBI-Go:动态插桩定位Go二进制的非法内存引用
10
作者 陈金宝 张昱 +1 位作者 李清伟 丁伯尧 《软件学报》 EI CSCD 北大核心 2024年第6期2585-2607,共23页
Go语言,也称Golang,由于其语法简单、原生支持并发、自动内存管理等特性,近年受到很多开发者的欢迎.Go语言期望开发者不必了解变量或对象是分配在栈上还是在堆中,而由Go编译器的逃逸分析来决定分配位置,再由Go垃圾收集器自动回收无用的... Go语言,也称Golang,由于其语法简单、原生支持并发、自动内存管理等特性,近年受到很多开发者的欢迎.Go语言期望开发者不必了解变量或对象是分配在栈上还是在堆中,而由Go编译器的逃逸分析来决定分配位置,再由Go垃圾收集器自动回收无用的堆对象.Go的逃逸分析必须正确决定对象的分配位置以保证内存状态的正确性.然而,目前Go社区中逃逸相关问题频发,潜在导致程序崩溃等致命问题,而目前对该方面的研究缺失.为有效检测编译器生成的代码是否存在可能引起运行时崩溃的非法内存引用,填补研究空白,对Go程序执行进行抽象建模,并提出两条判定写入违例的规则.基于这两条规则,克服Go二进制中高层语义缺失、运行时信息不便获取等挑战,设计一个轻量化的分析工具DBI-Go.DBI-Go采用静态分析加动态二进制插桩的分析方式,基于动态二进制分析框架Pin来实现,可以识别Go二进制中违例的store指令.实验结果表明,DBI-Go可以检测出Go社区中所有已知的逃逸相关Issues;DBI-Go还发现一个目前Go社区未知的问题,该问题已经得到确认.在实际项目上的应用则表明DBI-Go可以帮助开发人员找出逃逸算法的错误.测试结果还表明DBI-Go采取的措施可以有效降低误报率且在93.3%的情况下带来的额外运行时开销小于原先的2倍.同时,DBI-Go无需修改Go的编译运行时,可以适配不同版本的Go,有较高的适用性. 展开更多
关键词 二进制分析 动态二进制插桩 静态分析 GO 编译器测试 逃逸分析
下载PDF
面向国产高性能加速器的LLVM编译器设计及优化
11
作者 宋强 唐俊龙 +4 位作者 陈照云 时洋 谭期轩 肖紫阳 邹望辉 《计算机工程》 CAS CSCD 北大核心 2024年第4期321-331,共11页
国防科技大学自主研制的高性能加速器采用中央处理器(CPU)+通用数字信号处理器(GPDSP)的片上异构融合架构,使用超长指令集(VLIW)+单指令多数据流(SIMD)的向量化结构的GPDSP是峰值性能主要支撑的加速核。主流编译器在密集的数据计算指令... 国防科技大学自主研制的高性能加速器采用中央处理器(CPU)+通用数字信号处理器(GPDSP)的片上异构融合架构,使用超长指令集(VLIW)+单指令多数据流(SIMD)的向量化结构的GPDSP是峰值性能主要支撑的加速核。主流编译器在密集的数据计算指令排布、为指令静态分配硬件执行单元、GPDSP特有的向量指令等方面不能很好地支持高性能加速器。基于低级虚拟器(LLVM)编译框架,在前寄存器分配调度阶段,结合峰值寄存器压力感知方法(PERP)、蚁群优化(ACO)算法与GPDSP结构特点,优化代价模型,设计支持寄存器压力感知的指令调度模块;在后寄存器分配阶段提出支持静态功能单元分配的指令调度策略,通过冲突检测机制保证功能单元分配的正确性,为指令并行执行提供软件基础;在后端封装一系列丰富且规整的向量指令接口,实现对GPDSP向量指令的支持。实验结果表明,所提出的LLVM编译架构优化方法从功能和性能上实现了对GPDSP的良好支撑,GCC testsuite测试整体性能平均加速比为4.539,SPEC CPU 2017浮点测试整体性能平均加速比为4.49,SPEC CPU 2017整型测试整体性能平均加速比为3.24,使用向量接口的向量程序实现了平均97.1%的性能提升率。 展开更多
关键词 通用数字信号处理器 低级虚拟器 编译器 指令调度 向量指令接口
下载PDF
DDoop:基于差分式Datalog求解的增量指针分析框架
12
作者 沈天琪 王熙灶 +1 位作者 宾向荣 卜磊 《软件学报》 EI CSCD 北大核心 2024年第6期2608-2630,共23页
指针分析是对软件进行编译优化、错误检测的核心基础技术之一.现有经典指针分析框架,如Doop,会将待分析程序和分析算法转化成Datalog评估问题并进行求解,如程序规模较大,单次求解分析时间开销较大.在程序频繁变更发布的情况下,相关程序... 指针分析是对软件进行编译优化、错误检测的核心基础技术之一.现有经典指针分析框架,如Doop,会将待分析程序和分析算法转化成Datalog评估问题并进行求解,如程序规模较大,单次求解分析时间开销较大.在程序频繁变更发布的情况下,相关程序分析的开销更是难以负担.近年来,增量分析作为一种在代码频繁变更场景下有效复用已有分析结果提升分析效率的技术受到了越来越多的关注.然而,目前的增量指针分析技术通常针对特定算法设计,支持的指针分析选项有限,其可用性也受到较大限制.针对上述问题,设计并实现一种基于差分式Datalog求解的增量指针分析框架DDoop(Differential Doop).DDoop实现增量输入事实生成技术与增量分析规则自动化重写技术,将多版本程序增量分析问题表达为差分Datalog评估问题,从而可以充分利用成熟的差分式Datalog求解引擎,如DDlog,来实现端到端的增量指针分析,并最大化兼容复用Doop中已有的指针分析实现,提供透明的增量化支持.在广泛应用的真实世界程序上对DDoop进行实验评估,实验结果显示DDoop相较于非增量的Doop框架具有显著的性能优势,同时高度兼容Doop中已有的各种指针分析规则. 展开更多
关键词 指针分析 增量分析 Datalog引擎 增量计算 差分式Datalog
下载PDF
二进制翻译技术综述
13
作者 谢汶兵 田雪 +3 位作者 漆锋滨 武成岗 王俊 罗巧玲 《软件学报》 EI CSCD 北大核心 2024年第6期2687-2723,共37页
随着信息技术的快速发展,涌现出各种新型处理器体系结构.新的体系结构出现为处理器多样化发展带来机遇的同时也提出了巨大挑战,需要兼容运行已有软件,确保较为丰富的软件生态群.但要在短期内从源码编译构建大量生态软件并非易事,二进制... 随着信息技术的快速发展,涌现出各种新型处理器体系结构.新的体系结构出现为处理器多样化发展带来机遇的同时也提出了巨大挑战,需要兼容运行已有软件,确保较为丰富的软件生态群.但要在短期内从源码编译构建大量生态软件并非易事,二进制翻译作为一种直接从二进制层面迁移可执行代码技术,支持跨平台软件兼容运行,既扩大了软件生态群,又有效降低了应用程序与硬件之间的耦合度.近年来,二进制翻译技术研究取得了较大进展.为总结现有成果并分析存在的不足,首先介绍二进制翻译技术的分类以及典型的二进制翻译系统,之后从指令翻译方法、关键问题研究、优化技术等方面分别进行分析总结,接着阐述二进制翻译技术的核心应用领域,最后对二进制翻译技术的潜在研究方向进行展望. 展开更多
关键词 二进制翻译 翻译效率 等价变换 软件迁移 多融合优化
下载PDF
面向DCU的LDS访存向量化优化 被引量:1
14
作者 杨思驰 赵荣彩 +1 位作者 韩林 王洪生 《计算机工程》 CAS CSCD 北大核心 2024年第2期206-213,共8页
在深度计算器(DCU)中,本地数据共享(LDS)是相较于全局内存延迟更低、带宽更高的关键存储部件。随着异构程序对LDS的使用越来越频繁,LDS访存效率低下成为限制异构程序性能的重要因素。此外,LDS访问过程中存在bank冲突的特性,使LDS的访问... 在深度计算器(DCU)中,本地数据共享(LDS)是相较于全局内存延迟更低、带宽更高的关键存储部件。随着异构程序对LDS的使用越来越频繁,LDS访存效率低下成为限制异构程序性能的重要因素。此外,LDS访问过程中存在bank冲突的特性,使LDS的访问应遵循一定原则才能高效利用,当线程间的数据访问呈现重叠的访存特征时,访问向量化指令会因此产生延迟。针对此问题,提出面向DCU的LDS访存向量化优化方法。通过实现连续数据访问的向量化,减少LDS的访问次数,降低访存耗时,由此提高程序访存效率。在此基础上,通过设计访存特征的判断方法,提出能够有效解决数据重叠的LDS访存向量化方法,实现一种面向国产通用加速器的LDS高效访存技术,确保向量化方法对访存效率的有效提升。实验结果表明:在使用LDS的异构程序中,LDS访存向量化实现后程序性能平均提升了22.6%,验证了所提方法的有效性;同时,向量化方法能够实现LDS线程间访存数据重叠问题的优化,使异构程序得到平均30%的性能提升。 展开更多
关键词 深度计算器 本地数据共享 访存向量化 访存特征 bank冲突
下载PDF
面向全分布式智能建筑系统应用程序的并行化编译方法
15
作者 陈文杰 杨启亮 +4 位作者 姜子炎 邢建春 周启臻 邹荣伟 冯博伟 《软件学报》 EI CSCD 北大核心 2024年第6期2724-2752,共29页
群体智能系统通过邻居个体的信息交互实现群体级别的应用任务,具有良好的鲁棒性和灵活性.与此同时,大多数开发人员难以对分布式、并行的个体交互机制进行描述.一些高级语言允许用户以串行思维方式、从系统全局角度来编程并行的群体智能... 群体智能系统通过邻居个体的信息交互实现群体级别的应用任务,具有良好的鲁棒性和灵活性.与此同时,大多数开发人员难以对分布式、并行的个体交互机制进行描述.一些高级语言允许用户以串行思维方式、从系统全局角度来编程并行的群体智能计算任务,而无需考虑通信协议、数据分布等底层交互细节.但面向用户、全局声明式的群体智能系统应用程序与个体并行执行逻辑存在的巨大语义差距,使得编译过程复杂进而导致应用程序开发效率不高.提出一个编译系统及其支撑工具,支持将高级的群体智能系统应用程序转换为安全、高效的分布式实现.所提编译系统通过并行信息识别,计算划分,交互信息生成技术,将面向系统全局、串行编程的群体智能应用程序编译为面向个体独立执行的并行目标代码,从而使用户不必了解个体间的复杂交互机制.设计一种标准化中间表示,将复杂群体智能计算任务转换为群体智能算子和输入输出变量组合而成的标准化语义模块序列,其以独立于平台的形式表示源程序信息,屏蔽目标硬件平台的异构性.在一个群体智能系统案例平台中部署和测试所提编译系统,结果表明该系统能够有效将群体智能应用程序编译为平台可执行的目标代码并提升应用程序开发效率,其生成的代码在一系列基准测试中具有比现有编译器更好的性能. 展开更多
关键词 群体智能 应用程序 编译系统 并行化编译
下载PDF
“编译原理”课程教学改革探索
16
作者 曹瑜 《计算机应用文摘》 2024年第13期14-15,19,共3页
“编译原理”不仅是计算机专业的主干课程之一,还是一门对基础理论与实际应用要求非常高的课程。然而,目前不少院校开设的“编译原理”课程内容难度大,导致学生学习时感到迷茫。基于此,应对“编译原理”课程教学进行改革,以解决教育过... “编译原理”不仅是计算机专业的主干课程之一,还是一门对基础理论与实际应用要求非常高的课程。然而,目前不少院校开设的“编译原理”课程内容难度大,导致学生学习时感到迷茫。基于此,应对“编译原理”课程教学进行改革,以解决教育过程中理论与实践脱节的问题,进而充分调动学生的学习积极性。 展开更多
关键词 编译原理 教学方法 实践性课程
下载PDF
申威众核处理器访存与通信融合编译优化
17
作者 方燕飞 李雁冰 +2 位作者 董恩铭 王云飞 刘齐 《软件学报》 EI CSCD 北大核心 2024年第6期2648-2667,共20页
申威众核片上多级存储层次是缓解众核“访存墙”的重要结构.完全由软件管理的SPM结构和片上RMA通信机制给应用性能提升带来很多机会,但也给应用程序开发优化与移植提出了很大挑战.为充分挖掘片上存储层次特点提升应用程序性能,同时减轻... 申威众核片上多级存储层次是缓解众核“访存墙”的重要结构.完全由软件管理的SPM结构和片上RMA通信机制给应用性能提升带来很多机会,但也给应用程序开发优化与移植提出了很大挑战.为充分挖掘片上存储层次特点提升应用程序性能,同时减轻用户编程优化负担,提出一种多级存储层次访存与通信融合的编译优化方法.该方法首先设计融合编译指示,将程序高层信息传递给编译器.其次构建编译优化收益模型并设计启发式循环优化方案迭代求解框架,并由编译器完成循环优化方案的求解和优化代码的变换.通过编译生成的DMA和RMA批量数据传输操作,将较低存储层次空间中高访问延迟的核心数据批量缓冲进低访问延迟的更高存储层次空间中.在3个典型测试用例上进行优化实验测试与分析,结果表明所提出的优化在性能上与手工优化相当,较未优化版程序性能有显著提升. 展开更多
关键词 申威众核处理器 多级存储层次 RMA通信 并行语言 编译优化
下载PDF
高健壮性二进制应用程序裁剪
18
作者 丁铎 孙聪 郑涛 《计算机科学》 CSCD 北大核心 2024年第10期208-217,共10页
应用程序的常用功能仅占其所有功能的小部分。冗余功能代码造成应用程序攻击面扩大,从而增大代码重用攻击风险。二进制程序裁剪能够在分析应用程序二进制的基础上,识别并删除程序冗余代码,减小程序攻击面。现有二进制裁剪方法依赖人工... 应用程序的常用功能仅占其所有功能的小部分。冗余功能代码造成应用程序攻击面扩大,从而增大代码重用攻击风险。二进制程序裁剪能够在分析应用程序二进制的基础上,识别并删除程序冗余代码,减小程序攻击面。现有二进制裁剪方法依赖人工构造的输入产生初始控制流,并依赖启发式方法扩展控制流图,导致方法健壮性和可扩展性受限。文中提出并实现了一种高健壮性二进制应用程序裁剪方法(RBdeb),使用黑盒模糊测试技术获取具有更高健壮性的合法执行轨迹集合,基于图同构算法自动分类相似库函数,提出的路径发现算法从初始执行轨迹构成的二进制控制流子图出发,扩展二进制控制流路径和同类库函数调用,生成高健壮性的裁剪结果二进制文件。实验结果表明,相比现有方案,RBdeb具有更高的路径覆盖率和裁剪后二进制健壮性,路径发现算法和库分类方法具有更强的可扩展性,所提方法能够裁剪大规模实际应用程序。 展开更多
关键词 程序裁剪 二进制分析 模糊测试 二进制重写 程序分析
下载PDF
基于QEMU的SIMD指令替换浮点指令框架
19
作者 刘登峰 李东亚 +2 位作者 柴志雷 周浩杰 丁海峰 《湖南大学学报(自然科学版)》 EI CAS CSCD 北大核心 2024年第8期70-77,共8页
现在,几乎每个处理器架构都已经加入了对SIMD(single instruction multiple data)指令的支持,SIMD指令能同时对一组数据执行相同的操作,通过数据并行来提高处理器的处理性能.但是大部分动态二进制翻译器忽略了本地SIMD指令的利用,而是... 现在,几乎每个处理器架构都已经加入了对SIMD(single instruction multiple data)指令的支持,SIMD指令能同时对一组数据执行相同的操作,通过数据并行来提高处理器的处理性能.但是大部分动态二进制翻译器忽略了本地SIMD指令的利用,而是以软件语言实现来模拟浮点计算.本文提出了一种基于QEMU翻译系统的FP-QEMU框架,FP-QEMU框架采用SIMD指令来优化替换浮点计算指令,并在X86和ARM平台上完成了完整的浮点实现.该框架可以识别动态二进制翻译系统中的浮点计算优化机会并利用SIMD指令来提升系统翻译的性能.采用SPEC 2006作为测试基准,实验表明相比QEMU,FP-QEMU跨平台的ARM应用在X86计算机上运行的最高加速比可达51.5%,平均加速比达到37.42%. 展开更多
关键词 SIMD QEMU 动态二进制翻译 浮点计算
下载PDF
C-CORE:Clustering by Code Representation to Prioritize Test Cases in Compiler Testing
20
作者 Wei Zhou Xincong Jiang Chuan Qin 《Computer Modeling in Engineering & Sciences》 SCIE EI 2024年第5期2069-2093,共25页
Edge devices,due to their limited computational and storage resources,often require the use of compilers for program optimization.Therefore,ensuring the security and reliability of these compilers is of paramount impo... Edge devices,due to their limited computational and storage resources,often require the use of compilers for program optimization.Therefore,ensuring the security and reliability of these compilers is of paramount importance in the emerging field of edge AI.One widely used testing method for this purpose is fuzz testing,which detects bugs by inputting random test cases into the target program.However,this process consumes significant time and resources.To improve the efficiency of compiler fuzz testing,it is common practice to utilize test case prioritization techniques.Some researchers use machine learning to predict the code coverage of test cases,aiming to maximize the test capability for the target compiler by increasing the overall predicted coverage of the test cases.Nevertheless,these methods can only forecast the code coverage of the compiler at a specific optimization level,potentially missing many optimization-related bugs.In this paper,we introduce C-CORE(short for Clustering by Code Representation),the first framework to prioritize test cases according to their code representations,which are derived directly from the source codes.This approach avoids being limited to specific compiler states and extends to a broader range of compiler bugs.Specifically,we first train a scaled pre-trained programming language model to capture as many common features as possible from the test cases generated by a fuzzer.Using this pre-trained model,we then train two downstream models:one for predicting the likelihood of triggering a bug and another for identifying code representations associated with bugs.Subsequently,we cluster the test cases according to their code representations and select the highest-scoring test case from each cluster as the high-quality test case.This reduction in redundant testing cases leads to time savings.Comprehensive evaluation results reveal that code representations are better at distinguishing test capabilities,and C-CORE significantly enhances testing efficiency.Across four datasets,C-CORE increases the average of the percentage of faults detected(APFD)value by 0.16 to 0.31 and reduces test time by over 50% in 46% of cases.When compared to the best results from approaches using predicted code coverage,C-CORE improves the APFD value by 1.1% to 12.3% and achieves an overall time-saving of 159.1%. 展开更多
关键词 Compiler testing test case prioritization code representation
下载PDF
上一页 1 2 158 下一页 到第
使用帮助 返回顶部