该项目旨在提供一个接口较稳定的开发工具包,帮助开发者构建面向软件平台的功能结点/插件拓展。
以下是需注意的构建要求:
- cmake 作为项目构建管理工具
- c++17 (及以上) 作为指定c++标准
- zpc 作为高性能计算中间层(对接cuda、openmp、sycl2020(WIP)等后端)
- python3 (建议3.12+) 作为脚本语言
一个可长期维护的软件需要具备良好的可拓展性,具体可分为以下两方面:
- 类型可拓展性
- 行为(功能代码)可拓展性
跨二进制边界的拓展有这样几种形式:
- 动态库插件(c/c++开发)
- python package(directory、pyd等)
一方面,开发工具包自身的ABI稳定性通过局限在Stable ABI范围内api的使用来保障;另一方面,工具包所提供的多种抽象接口类型(NodeConcept, ContextConcept等)为软件平台的功能拓展提供便利。 以上设计旨在支持/允许开发者在软件内即时编写插件和热加载运行。
一套统一的编程接口有助于降低软件随时间迁移所需的开发维护成本。
基于该工具包开发的平台有着如下的开发设计:
- 软件层面可交互的数据类型约定提供对应的python绑定
- 核心功能模块,如高性能计算相关的开发,则借助zpc实现
- 计算后端的可拓展性,详见高性能计算
借助zpc实现。