系统软件与软件安全

已被合并的 Pull Request

  • CPU 端内存复用支持MindSpore 在 CPU 后端为模型分配内存时,不考虑网络算子之间的内存重用。在 CPU 内存分配模块 sim_men_plan 中,它只是叠加网络输出/工作空间大小以获得网络所需的存储空间,这是一个巨大的浪费。目前 MindSpore 已经有通用的内存复用模块 mem_reuse 和 somas,而且在框架运行时 kernel_runtime 的默认实现已经支持。使用现有的内存复用模块只需要实现一个继承于 MemoryManager 的内存管理类 CPUMemoryManager,这个类大部分实现与已有的 CPU 内存管理类 CPUResourceManager 相同,只需进行简单修改即可。同时,在编译计算图时,会进行计算图算子执行顺序的 reorder,需要将其放到内存分配模块前使得内存复用模块能够根据算子执行顺序分配内存。本课题组据此为 MindSpore 的 CPU 后端添加了内存复用功能。MindSpore/mindspore Pull Request !10294 已被合并入主分支。 

  • SM2国密算法的优化密码学算法在作为区块链的核心组件,提供了hash计算,签名/验签,对称加密,非对称加密等能力。国产密码算法(国密算法)是指国家密码局认定的国产商用密码算法,XuperChain支持多种加密算法实现,包括国密算法。现有的国密算法基于纯Go语言实现,没有充分利用cpu指令集里面的特殊指令进行优化,在性能上低于Go标准库里面的对应算法实现,因此希望对现有的国密算法进行优化。通过对Go语言实现的国密算法的分析,利用循环展开、内存优化、向量化(AVX指令集)等优化方式,结合对Go语言编译运行时的理解,实现了对国密算法的优化,使SM2算法的性能提升了近5倍。目前针对xuperchain/crypto所提交的Pull RequestOptimize SM2 nearly 5 times by BoyaoDing · Pull Request #24 · xuperchain/crypto (github.com)已经被接受并合并入master分支。

  • DeepRec Allocator优化:加了GPU显存管理优化、内存分配策略生成自动化等功能。[Runtime] Add TensorPoolAllocatorGPU for GPU; [docs] Update TensorPoolAllocator doc and add vmem doc ; [Allocator] Automatically end memory allocation policy generation

  • MindSpore TransGAN模型复现:TransGAN是第一个仅使用Transformer模型实现了SOTA效果的对抗生成网络。我们在华为MindSpore深度学习框架(支持CPU和昇腾)中复现了该模型,提交在华为鹏城启智社区OpenModelZoo仓库中。提交Commit:OpenModelZoo/TransGAN: 第四届中国软件开源创新大赛·赛道二:任务挑战赛(模型王者挑战赛):TransGAN的mindspore实现 - TransGAN - OpenI - 启智AI开源社区

  • 使用Schema信息优化Cypher执行计划: 属性图数据库的Schema限制了属性图中点、边的标签、属性以及点和边的对应关系。但是Schema信息在图查询语言执行中的作用往往被忽视,我们首次提出了利用Schema信息对Cypher语言提供的模式图做特化、填补缺失信息的方法,这样可以避免许多非法的点和边的遍历,提升Cypher语句的执行速率该优化提交至Tugraph仓库,提交的Pull Request https://github.com/TuGraph-family/tugraph-db/commit/4c415cfbb12e36b2d3c6e7d563cb321e30732bd6 已经被接受并合并入mater分支,commit ID:4c415cf其中用户名seijiang为23级研究生徐柴俊

已被确认的 Bug Issues

  • Python/C 接口层异常处理错误:不同于 Python,C 本身没有异常机制,因此在 Python/C 接口层,一些外部函数接口 Python/C API 被用来在接口代码中抛出异常,但是这些异常不会像 Python 的异常机制一样立即终止当前的控制流,而是需要手动返回,不熟悉这种跨语言的编程模型可能带来很大的安全隐患。Pillow-issue-3966, NumPy-issue-16773 已被确认并修复。 

  • Python/C 接口层内存管理错误:C 提供显式的内存管理,而 Python 采用基于引用计数的垃圾收集,因此在 Python/C 接口层,除了 C 原生的内存分配器,一些外部函数接口 Python/C API 也可以被用来管理内存空间,这些不同的内存分配器也存在传统的内存泄漏、悬空引用等安全问题。Pillow-issue-4115 已被确认并修复。

  • Python/C 外部函数声明与实现不一致的错误:C 是静态类型语言,而 Python 是动态类型语言,Python 在声明外部函数时同样是没有显式类型的。对于无参外部函数,可以在声明时通过调用惯例的标记位指明,也可以在外部函数实现时直接不进行参数解析。这种声明上的冗余导致当两者不一致时,Python 无参外部函数可以接收任意类型的参数。NumPy-issue-18665Pillow-issue-5487 已被确认并修复。 


地址:安徽省合肥市蜀山区黄山路443号     电话:0551-63603804         

中国科学技术大学网络信息中心制作维护