张 昱

电  话:(0551)63603804

E- Mail:yuzhang@ustc.edu.cn

办公室:安徽省合肥市黄山路中国科大西校区科技实验楼西楼 615室、高新校区1号学科楼A554室

实验室:中国科大高新校区信智楼 B802室、1号学科楼A208室

个人主页:http://staff.ustc.edu.cn/~yuzhang 

研究组主页:http://s4plus.ustc.edu.cn/

主要研究方向:新兴编程系统与优化、智能无人系统与优化、软件与大数据分析、无人系统基础软件等


张昱,女,教授,博士生导师,中国计算机学会 (CCF) 杰出会员、CCF系统软件专委常务委员、教育专委常务委员;ACM会员、ACM 中国操作系统分会副主席、计算机科学教育分会常务理事;全国高等学校计算机教育研究会常务理事;教育部高等学校计算机类教学指导委员会(2018-2022)计算机系统专家委员会委员。华夏计算机科技英才班负责人。

2005年1月获中国科学技术大学计算机软件与理论博士学位。2010年10月—2011年10月在美国耶鲁大学计算机系进行访问研究。主持或参与科技部科技创新2030重大项目、国家自然科学基金、工信部项目、安徽省重点研发计划项目等纵向项目,主持完成华为、龙芯、阿里巴巴、蚂蚁金服、微软、Intel等企业创新合作项目。在学术期刊和国际会议上发表论文130余篇,获得国家发明专利授权14项、软件著作权6项,牵头制定安徽省地方标准1部,参与制定国家标准和ISO国际标准。出版编译原理和程序设计语言原理相关教材和配套参考书9本、合作翻译著作2本。


导师选题:

动态形状深度学习模型形状推理在深度学习模型中,当输入张量未给定时,一些张量的精确形状难以推断,制约了计算图编译优化的空间。为了充分利用图优化技术处理动态形状的模型,需要构建一个符号维度系统。该系统引入符号维度表示张量形状,并对动态维度之间的数学关系建模,进而设计一套针对符号维度和形状的约束求解与查询系统,以支持计算图优化中的模式匹配过程,降低匹配过程中的时间复杂度。当前已有一些针对动态形状深度学习模型的形状推理系统,如BladeDISC[1], PyTorch-2[2]等,但存在对某些复杂约束(如隐式广播维度)的描述能力较弱、符号匹配开销大等不足。本课题研究动态形状的描述、推理及符号匹配查询,提升深度学习编译技术的优化能力,涵盖系统调研、算法复现和优化。
     [1] Zhen Zheng, et al. BladeDISC: Optimizing Dynamic Shape Machine Learning   Workloads via Compiler Approach. Proc. ACM Manag. Data
2023.
     [2] Jason Ansel, et al. PyTorch 2: Faster Machine Learning Through Dynamic   Python Bytecode Transformation and Graph Compilation. ACM International   Conference on Architectural Support for Programming Languages and Operating   Systems (ASPLOS), 2024.
CodeSize 优化方法调研与实践Codesize优化是一种编译技术,旨在减少代码体积,特别适用于资源受限的系统(如嵌入式设备、移动设备[1]、云服务等)。减小代码体积有助于节省存储空间、提升传输效率和加快部署速度。常见的优化方法包括Function Merge[2]Branch Fusion[3]Loop Rolling[4]OutInlining[5]等。无论是静态语言(如 C/C++Rust)还是动态语言(如Python),都可以通过适当的编译器选项或/和工具进行Codesize优化,以满足内存和存储受限的场景需求。而对于受管语言(如GoJava),其二进制文件中包含大量运行时元数据(如stackmapsafe   point等占比超过了30%),传统优化手段效果有限。本课题将通过软件工程、编译优化、数据压缩等方法开展代码体积优化研究,涵盖调研、复现和实证分析,研究范围可涉及多种编程语言与应用场景。
     此外,全国大学生计算机系统能力大赛编译系统设计赛挑战赛道自
2023年起引入代码体积优化赛题,网址参见:https://compiler.educg.net/#/
[1] Milind Chabbi et al., An Experience with   Code-Size Optimization for Production iOS Mobile Applications, IEEE/ACM   International Symposium on Code Generation and Optimization (CGO), 2022.   
     [2] Rodrigo C.0.Recha et. al., Function Merging by Sequence Alignment,   IEEE/ACM International Symposium on Code Generation and Optimization (CGO),   2019.
     [3] Rodrigo C. 0. Rocha et. al., HyBF: A Hybrid Branch Fusion Sirategy for   Code Size Reduction, 32nd ACM SIGPLAN International Conference on Compiler Construction,   2023.
     [4] Rodrigo C.0.Rocha et. al., Loop Rolling for Code Size Reduction,   IEEE/ACM International Symposium on Code Generation and Optimization (CGO),   2022.
     [5] Girish Mururu, Diferential Outlining: Outlining Similar Instructon   Sequences. 2023 LLVM Dev Mtg.
LLM 辅助的程序缺陷检测与修复程序缺陷检测与修复是软件开发的关键环节,旨在保证系统的可靠性、稳定性和安全性。随着软件规模和复杂性的增加,手动发现和修复程序缺陷变得愈发困难,不仅耗时费力,还容易出现遗漏。虽然自动化工具提升了开发效率,但在处理复杂代码结构和多样化场景时仍有局限。大模型(LLM, Large Language Model)通过预训练展现了强大的代码理解和生成能力,具有识别代码中缺陷并提供修复建议的潜能 [1 - 5]。然而,大模型在辅助编码、缺陷检测与修复方面面临着以下问题:1)代码上下文感知能力不足,难以获取特定代码库的相关信息;2)处理大型代码库时,受限于 token 数量,难以全面理解代码引用关系和背景信息。本课题旨在结合传统程序分析技术,提升大模型的代码上下文感知能力,增强其在缺陷检测与修复中的效果,助力提高软件开发效率和质量。
[1] Wen C, Cai Y, Zhang B, et al. Automatically   Inspecting Thousands of Static Bug Warnings with Large Language Model: How   Far Are We?[J]. ACM Transactions on Knowledge Discovery from Data, 2024,   18(7): 1-34.
     [2] Zhang J, Wang C, Li A, et al. An Empirical Study of Automated   Vulnerability Localization with Large Language Models[J]. arXiv preprint   arXiv:2404.00287, 2024.
     [3] Bouzenia I, Devanbu P, Pradel M. Repairagent: An autonomous, llm-based   agent for program repair[J]. arXiv preprint arXiv:2403.17134, 2024.
     [4] Pearce H, Tan B, Ahmad B, et al. Examining zero-shot vulnerability   repair with large language models[C]//2023 IEEE Symposium on Security and   Privacy (SP). IEEE, 2023: 2339-2356.
     [5] Li H, Hao Y, Zhai Y, et al. Enhancing Static Analysis for Practical Bug   Detection: An LLM-Integrated Approach[J]. Proceedings of the ACM on   Programming Languages, 2024, 8(OOPSLA1): 474-499.
AI 辅助的类型推断在动态类型语言如JavaScriptPython中,类型信息仅在运行时才能完全确定,导致这些语言的程序需要依赖虚拟机解释执行或即时编译,性能通常低于静态编译类语言。然而,随着互联网技术的发展,动态语言的执行性能需求日益提高。一种可行的优化手段是通过静态编译提前处理,但类型信息的缺乏成为主要障碍。传统基于程序分析的类型推断在高度动态的语言如JavaScript上难以取得理想效果,并且现有的静态类型推断工具(如针对JavaScriptFlowHegel等)大多用于类型检查,而非性能优化。近年来,AI 技术的进步为此问题带来了新的解决思路,AI 辅助的类型推断已成功应用于 Python [2],展现出其理解程序语义的能力。本课题旨在结合传统的程序分析方法,引入AI辅助类型推断,提升动态语言的类型推断效果,从而为动态类型语言的静态编译优化提供新的路径。
[1] Hackett B, Guo S. Fast and precise hybrid   type inference for JavaScript[J]. ACM SIGPLAN Notices, 2012, 47(6):   239-250.
     [2] Peng Y, Wang C, Wang W, et al. Generative type inference for   python[C]//2023 38th IEEE/ACM International Conference on Automated Software   Engineering (ASE). IEEE, 2023: 988-999
GO 跨语言调用的透明绑定生成现代软件开发日益多语言化,即软件系统通常由多种编程语言实现。前端常用如 PythonGo   等语言以提高开发效率,而后端则倾向于使用高效的系统编程语言如 C/C++。例如,Go   语言因其高效开发和原生支持高并发而广泛应用于云原生和微服务领域。由于大量现存的 C/C++ 代码和高性能库,Go 中通过   CGO 机制(跨语言调用)与 C 代码互操作仍然至关重要。现有的一些半自动绑定生成工具(如   c-for-goSWIG)可以利用 CGO 生成 C 代码库的绑定,但它们通常仅考虑 C 库的 API   和使用约定,而不符合 Go 的开发习惯。例如,生成的绑定代码可能要求开发者手动调用内存回收函数,且无法满足特定 Go API 的需求。一个例子是 Go 官方社区为了满足加解密库 crypto    FIPS 认证需求,通过 CGO 透明地替换其内部实现为 C  boringSSL(即 boringCrypto),实现了无缝功能和性能提升。为解决这一问题,CGORewritter[1]提出了一种半自动代码生成方式,定义了透明绑定代码生成所面临的挑战,并实现了简单的原型。本课题将进一步探索如何在同时考虑Go API以及C   API的情况下,自动或半自动地为特定的Go   API生成透明绑定代码。
[1] Boyao Ding, Yu Zhang*, Jinbao Chen, Mingzhe   Hu and Qingwei Li. CGORewritter: A better way to use C library in Go (ERA).   30th IEEE International Conference on Software Analysis, Evolution and   Reengineering (SANER). Macao, China, March 21-24, 2023. DOI:   10.1109/SANER56733.2023.00072
基于模式匹配的量子计算的模式描述在量子计算中,量子线路在执行过程中受到噪声影响,导致正确性逐渐下降,因此编译优化变得重要。目前,借鉴经典编译的模式匹配方法已被广泛应用于主流量子编译框架,如 Qiskit    t|ket>,该方法具有应用无关性和硬件无关性,适应了量子技术的快速演进。然而,现有的模式匹配算法面临一些挑战,尤其是量子线路的模式匹配被证明为 NP 完全问题,研究者们主要集中于设计启发式算法以提升匹配效率。自动生成和验证量子线路模式被认为是提高匹配效率的关键,但当前的模式描述主要集中在量子线路的结构,无法有效匹配没有明确结构但有特殊语义的线路。同时,缺乏信息传递机制导致各次匹配过程间无法共享信息,从而影响匹配效率。因此,设计更有效的量子线路模式描述格式是一个重要研究方向。本课题旨在结合经典编译优化技术,提升量子线路编译过程的效率,特别是针对实时编译算法(如 VQE)和在线编译算法的实现,为量子计算的实际应用性能提供新思路。
[1] Raban Iten, Romain Moyard, Tony Metger,   David Sutter, and Stefan Woerner. Exact and practical pattern matching for   quantum circuit optimization. ACM Transactions on Quantum Computing, 3(1),   Jan 2022.
     [2] Mingyu Chen, Yu Zhang*, Yongshang Li, Zhen Wang, Jun Li, Xiangyang Li.   QCIR: Pattern Matching Based Universal Quantum Circuit Optimization   Framework. 41st International Conference on Computer-Aided Design (ICCAD).   San Diego, California, USA, 2022.
面向WebView场景的JavaScript执行引擎的软硬件协同设计WebView是一种可嵌入AndroidiOS应用的视图控件,用于显示网页内容。然而,在加载网页时,JavaScript的执行通常是性能的主要瓶颈,尤其在复杂交互和动态内容中。作为动态类型语言,JavaScript在运行时需要频繁进行类型检查和动态解释,尽管这为开发者提供了灵活性,但也带来了性能负担。JavaScript引擎通常使用即时编译(JIT)技术,将部分代码转化为机器码执行,但由于动态性和程序复杂性,这些优化常常基于假设,导致生成的代码需要插入大量检查,以防假设失效,而这些检查又会影响性能。Parravicini等人通过将去优化的检查设计为专门的硬件指令,有效减少了解释器和JIT编译器的开销,从而提升了JavaScript的执行效率。本课题将关注软硬件协同设计对JavaScript执行性能的影响,特别是在WebView场景中如何利用硬件加速技术提升JavaScript的解释和编译效率。
[1] Parravicini A, Mueller R. The Cost of   Speculation: Revisiting Overheads in the V8 JavaScript Engine. 2021 IEEE   International Symposium on Workload Characterization (IISWC). IEEE, 2021:   13-23.
AI 辅助的编译策略决策在现代编译器中,为了优化程序性能,通常会提供数百甚至上千种不同的优化选项。这些优化并不是简单地执行一遍就能获得最佳性能。优化选项之间的组合、阈值选择(如内联优化时的函数大小或复杂度阈值),以及针对不同应用程序的优化策略都需要仔细决策,以实现更好的性能。编译器调优技术旨在通过调整编译器的配置和优化策略,以生成更高效的机器代码,从而提升程序的运行性能或减少资源消耗。然而,这些调优往往针对特定程序进行,并且要消耗大量的资源进行搜索,这使得它仅在有限场景下才有应用价值。本课题旨在将AI技术引入到编译器调优中,辅助编译策略决策,从而使编译器调优能够在更广泛的场景下发挥使用。
[1] Compiler Autotuning through Multiple-phase   Learning. ACM Transactions on Software Engineering and Methodology,   33(4):1-38, 2024.