Owl - OCaml科学计算
Owl是一个专门用于科学和工程计算的系统。该系统使用OCaml开发,采用MIT许可证。该项目由Liang Wang发起,目前由Jianxin Zhao领导。项目的历史可以在维基百科上查看。
安装
请按照教程安装Owl。
使命
我们的使命是推动高性能科学计算的前沿,为研究人员和行业程序员提供一个强大的框架,以编写简洁、快速和安全的分析代码。该系统旨在成为OCaml中计算密集型任务的事实标准工具。 Owl是OCaml中事实上的科学计算库。目前,我们的目标是在有限的时间和人力资源内积极维护并保持其稳定性。
当前的代码库设计简洁且自成一体。 我们鼓励任何想要基于Owl构建自己工具的人在Owlbarn组织中创建新的存储库。
Owl团队
为实现这一使命,我们正在组建一个Owl团队。任何有可能为社区做出足够贡献的人都可以申请成为团队成员。 团队成员应在质量和数量上为项目做出多项有价值且重要的贡献。 通常,一个提交者专注于项目的某个特定方面,并且是该领域的专家。 我们希望但不能保证团队成员能涵盖代码库的所有方面。
我们特别强调每个团队成员的责任。 每个人都应该对代码库的某些方面负责,例如某个模块或特定操作系统平台的维护。 团队成员及其负责的领域和责任将在此列出,并在Owl网站上公布。
对于愿意贡献的人,一些好的起点可能是:
- 参与问题讨论并帮助解决问题
- 修复文档,主要是通过修改源代码中的
.mli
文件,文档就是基于这些文件生成的 - 修复教程;代码可能无法运行,或内容可能无法正确显示
- 添加更多示例和测试
- 修复待办事项列表中列出的问题
- 提议修复/改进您在使用Owl过程中感兴趣的任何内容
- ...
当前团队成员:
- @jzstark:项目负责人。管理整体架构、路线图和技术愿景。社区沟通。制定研究议程。
- @ryanrhymes:潜在商业化、商业机会和资金寻求。
贡献准则
原则上,对代码库的任何更改都通过GitHub拉取请求(PR)进行。拉取请求必须由Owl团队中至少两名核心开发人员审核和批准。
团队成员负责处理与他们声称的领域相关的问题和PR,并负责修复因接受此类PR而导致的问题。
如果PR规模较大或涉及对代码结构的重大更新或更改,应提交一个问题供社区和团队成员讨论,然后由相应的团队成员和项目负责人决定。
如果某个问题或PR不属于任何团队成员的领域,响应将基于最大努力原则,无法保证响应时间。
社区
Owl社区基于OCaml Discourse和Owl Slack频道。鼓励社区中的所有参与者在项目管理基础设施内为新用户提供支持。寻求技术支持的人也应该认识到,项目内的所有支持活动都是自愿的,因此会在时间允许的情况下提供。
Owl代码结构
为了帮助潜在开发人员理解Owl的结构,我们在此简要描述其整体设计。更详细的描述可以在文档和Owl书籍中找到。
Owl为现代数值计算提供了一个基本数据结构:n维数组(Ndarray)。它基于数学、线性代数和统计函数,这些函数建立在OCaml和C函数及库之上。
与Ndarray共享相同接口集的是base
系统数据架构,它用纯OCaml实现。它也基于用OCaml实现的模块。然而,尽管它足以满足日常普通计算需求,但base版本的Ndarray并未实现一些像之前Owl版本Ndarray中的高级功能,其性能也可以理解地慢得多。
除了这两种类型的Ndarray,还有一种CGraph-Ndarray,可用于支持像TensorFlow v1那样的符号式计算。它有助于构建计算图和进行计算优化。 CGraph-Ndarray可以通过包装前两种类型的Ndarray中的任何一种来构建,这些Ndarray用于实际执行计算。 所有三种类型的Ndarray都可用于支持高级计算模块,包括算法微分、优化和神经网络。