大家好~
今年夏天,Julia中文社区将首次加入 开源软件供应链点亮计划——暑期2021,我们将会陆续在 这里 添加项目提案,欢迎大家关注并转发。
此外,如果你是Julia社区中某个项目的核心开发者,也欢迎你在该项目下提交你的提案,具体流程请直接联系我。
- 该项目的时间节点: 开源软件供应链点亮计划-开源之夏2023
- 学生参与该项目的一些常见问题: 开源软件供应链点亮计划-开源之夏2023
关于该项目有任何问题都可以在这里回帖讨论。
项目列表
1. Julia 官方文档翻译
目前Julia中文文档位于 GitHub - JuliaCN/JuliaZH.jl: Julia语言中文文档 ,从v1.3发布之后之后,该文档已经有一段时间没有更新了,本项目希望能将最新的英文文档在已有的基础上更新,同时完善自动化部署的流程。
项目产出要求
- 将Julia中文翻译文档更新至与英文v1.6同步
- 完善自动化部署流程
项目技术要求
- 熟悉文档翻译
- 对Julia编程感兴趣
项目主导师:刘金国jinguoliu@g.harvard.edu
项目联合导师:Jun Tianfind_my_way@foxmail.com
2. 基于可逆计算的稀疏矩阵求导
Sparse matrices are extensively used in scientific computing, however there is no automatic differentiation package in Julia yet to handle sparse matrix operations yet. This project will utilize the reversible embedded domain-specific language NiLang.jl to differentiate sparse matrix operations by re-writing the sparse functions in Julia base in a reversible style. We will port the generated backward rules to ChainRules.jl as an extension, where ChainRules.jl is the most popular Julia package providing backward rules for automatic differentiation packages. In fact, NiLang.jl has been proven to differentiate some sparse matrix operations efficiently: How to write a program differentiably - Nextjournal In this project, you are supposed to systematically rewrite the sparse matrix functions in Julia base, which can be challenging but definitely doable. Meanwhile, you will have a chance to learn a reversible programming language!
项目产出要求
- 一个开源的Julia软件包
- 超过80的Test coverage
- 一个简单的展示用例子
项目技术要求
- 覆盖基础稀疏矩阵函数的微分规则
- Julia 语言
项目主导师:刘金国jinguoliu@g.harvard.edu
项目联合导师:陈久宁johnnychen94@hotmail.com
3. 添加高性能图像处理算法
organization.Images.jl 是 Julia 下的一个图像处理工具箱,目前它提供了一些底层的图像处理支持来满足开发者的需求,不过目前还依然存在很多图像处理细分领域的算法没有得到复现。根据工作量及难度的不同,项目申请者需要提供一至三个图像处理算法的复现及对应的优化工作,并将其添加到 JuliaImages 组织下。
项目产出要求
- 实现新的图像处理算法
- 与其他框架的算法进行性能比较
项目技术要求
- 了解图像处理算法
- 对性能优化有一定了解
- 了解 Julia 语言
项目主导师:陈久宁johnnychen94@hotmail.com
4. 完善 ImageMagick 的 Julia 接口
ImageMagick is a widely used low-level image io and processing library, it also has its Julia frontend ImageMagick.jl, which is used widely in the entire Julia ecosystem. However, ImageMagick.jl project is not under well-maintained; it lacks of the necessary documentation and has few test coverage. The applicant needs to revisit and upgrade the ImageMagick.jl codebase so as to 1) fix legacy ImageMagick.jl issues 2) improve the reliability and 3) port more ImageMagick features to ImageMagick.jl. A complete reference documentation for ImageMagick.jl is also needed.
项目产出要求
- more test coverage
- fix legacy issues
- add documentation
- (optional) port more functionalities
项目技术要求
- familiar with Linux, C, and cross-compiling
- knows Julia
项目主导师:陈久宁johnnychen94@hotmail.com
5. Wide-range JuliaImages demos and missing functionalities
For new or occasional users, JuliaImages would benefit from a large collection of complete worked examples organized by topic. While the current documentation contains many “mini-demos,” they are scattered; an organized page would help users quickly find what they need. We have set up a landing page, but many more demos are needed. Scikit-image is one potential model.
项目产出要求
- add more demos
- (Preferred) new missing functionalities
- (Optional) improve the demo build tool
项目技术要求
- familiar with Julia and JuliaImages
- Good technical written in English
项目主导师:陈久宁johnnychen94@hotmail.com
6. Implement Multi-Agent Reinforcement Learning Algorithms in Julia
强化学习领域的一些最新进展引领了人工智能的许多突破,一部分最新的深度强化学习算法已经在ReinforcementLearning.jl库中实现。不过在多智能体方面,目前只实现了一些CFR相关的算法。我们希望有更多的实现,包括MADDPG,COMA,NFSP, PSRO等。
项目产出要求
- At least two experiments are expected to be added into ReinforcementLearningZoo.jl.
- The experiment of each algorithm can be run on GPU.
- A technical report on how it is implemented and example usage.
项目技术要求
- Basic understanding of Julia and Flux.jl.
- Some basic knowledge in Reinforcement Learning.
项目主导师:Jun Tianfind_my_way@foxmail.com
7. General improvement to Julia-C interoperability tools
Clang.jl is a Julia language interface for libclang: the stable, C-exported interface to the LLVM/Clang compiler. It also hosts related tools built on top of libclang functionality, one of which is the binding generator. This generator is for auto-generating C library bindings for Julia language from a set of C/C++ headers. It has been refactored recently for adding cross-platform support. This project aims at providing a better user experience on generating bindings for different platforms, improving the support for handling more C declarations and adding more high-level Julia interfaces to the libclang API.
项目产出要求
- Add support for C
vararg
functions - Add support for dumping Julia documentation from C comments
- Add support for auto-detecting dependent macros in the system headers
- Add support for CompilationDatabase a.k.a extracting compile flags from compile_commands.json
- Improve the support for C
bitfield
structs - Design and implement a more user-friendly configuration API (especially for cross-platform configuration)
- Update the generator scripts in the downstream packages
- Other misc. improvements in functionality
项目技术要求
- Good understanding of Julia AST
- Good understanding of Clang AST
- Good understanding of cross-compiling
项目社区导师:Yupei Qi
导师联系方式:qiyupei@gmail.com
8. 扩展ReinforcementLearning.jl中的离线强化学习相关算法
离线强化学习领域的一些最新进展正在将强化学习变得更加数据驱动,从而可以利用有监督机器学习领域的一些成熟方案。目前为止,ReinforcementLearning.jl中仅仅提供了最基础的Behavior Cloning算法,我们希望看到更多离线强化学习算法被囊括进来,如BCQ和CQL等。除此之外,为了加速离线强化学习的研究,我们希望能构建一个新的包,将更多基本离线强化学习数据集加入其中,如 https://github.com/deepmind/deepmind-research/tree/master/rl_unplugged 此外,额外的一个任务是优化已有的连续动作空间算法。
项目产出要求
- 创建一个新的包,将各种不同类型的离线强化学习数据集包含其中
- 优化已有的连续动作空间相关算法,同时添加更多的实验
- 新增两到三个离线强化学习算法并撰写技术报告
项目技术要求
- 了解基本的离线强化学习算法
- 熟悉Julia相关的语法,以及常见的包,如Flux.jl和CUDA.jl
项目主导师:Jun Tianfind_my_way@foxmail.com
9. Parser generator targeting Julia
Julia语言中的parsing任务通常是手工的。然而,以更小的时间和精力来制造parser是可行的。一个广泛使用的选项是parser generator,它利用声明式编程的优势,从简洁的规范中生成(可能后端无关的)的parser,并消除那些对parser开发者来说没有必要的工作。我们考虑为Julia实现一个parser generator,尤其注意拥有用户友好的报错、时间高效的生成程序以及强大的解析能力。
项目产出要求
- A Julia package that provides parser generator/一个提供parser generator的Julia程序库
- Corresponding improvements to large Julia projects(e.g., Yao.jl) that requires parsers/对parser的大型julia项目在相关方面做出改善
项目技术要求
- Basic knowledge about parsers
- Julia language skill
- Understanding about Backus-normal Form
- It could be better to have knowledge about packrat parsing, parser combinators, LL/LR parsers
- It could be better to understand pattern matching and algebraic data types
项目社区导师:赵王宏楦
导师联系方式:twshere@outlook.com
项目联合导师:罗秀哲me@rogerluo.dev
10. Redesign and Polish Yao Website
Improve whole website banner 1. Documenter currently do not support custom banner, implement this feature request based on previous hacks. (is it possible to have custom banner on top? · Issue #1132 · JuliaDocs/Documenter.jl · GitHub). Improve Tutorial CI pipeline 1. polish Pluto notebook layout on our tutorial website, replace the implementation with native . Improve Documentation pipeline 1. move all documentation & website to one repo 2. implement CI to auto build documentation from component packages on tagged version and master/main branch Improve Website Style 1. improve CSS to have more consistent style. 2. improve large screen experience (https://github.com/JuliaDocs/Documenter.jl/issues/1563)
项目产出要求
- A more user-friendly website for Yao
- Improved pipelines for CI and Documentation
项目技术要求
- Julia
- HTML/CSS/Javascript
项目社区导师:赵宸
导师联系方式:zhaochen17@mails.ucas.ac.cn
项目联合导师:罗秀哲me@rogerluo.dev
11. Basic Quantum Circuit Emulation Subroutine
Implement the code generator with multithreading and CUDA kernel for the tiny kernel DSL. And we will further explore these high performance computing tasks as well as compiler engineering in Julia language from this project.
项目产出要求
- an open-source Julia package
- tests with code coverage > 80%
- practical examples
项目技术要求
- basic knowledge on computer architecture, such as the concept of CPU cache, RAM, SIMD and CUDA
项目社区导师:赵宸
导师联系方式:zhaochen17@mails.ucas.ac.cn
项目联合导师:罗秀哲me@rogerluo.dev
12. 整合 Yao 与 Julia 的其他量子计算软件包
-
将 PastaQ (GitHub - GTorlai/PastaQ.jl: Package for Simulation, Tomography and Analysis of Quantum Computers) 与 Yao 整合.
-
将 QXTools (GitHub - JuliaQX/QXTools.jl: Julia package for quantum circuit simulation using tensor networks) 与 Yao 整合, 为 Yao 提供基于张量网络的量子线路模拟器.
-
将 QuantumClifford (GitHub - QuantumSavory/QuantumClifford.jl: Clifford circuits, graph states, and other quantum Stabilizer formalism tools.) 与 Yao 整合, 以实现在 Yao 中高效模拟 Clifford 线路.
项目产出要求
- an open-source Julia package
- some practical examples
项目技术要求
- Julia 基础
- 了解 Yao.jl
- basic knowledge on quantum computing
项目社区导师:赵宸
导师联系方式:zhaochen17@mails.ucas.ac.cn
项目联合导师:罗秀哲me@rogerluo.dev
13. Native Julia ODE, SDE, DAE, DDE, and (S)PDE Solvers
The DifferentialEquations.jl ecosystem has an extensive set of state-of-the-art methods for solving differential equations hosted by the SciML Scientific Machine Learning Software Organization. By mixing native methods and wrapped methods under the same dispatch system, DifferentialEquations.jl serves both as a system to deploy and research the most modern efficient methodologies. While most of the basic methods have been developed and optimized, many newer methods need high performance implementations and real-world tests of their efficiency claims. In this project students will be paired with current researchers in the discipline to get a handle on some of the latest techniques and build efficient implementations into the *DiffEq libraries (OrdinaryDiffEq.jl, StochasticDiffEq.jl, DelayDiffEq.jl). Possible families of methods to implement are:
Global error estimating ODE solvers
Implicit-Explicit (IMEX) Methods
Geometric (exponential) integrators
Low memory Runge-Kutta methods
Multistep methods specialized for second order ODEs (satellite simulation)
Parallel (multithreaded) extrapolation (both explicit and implicit)
Parallel Implicit Integrating Factor Methods (PDEs and SPDEs)
Parallel-in-time ODE Methods
Rosenbrock-W methods
Approximate matrix factorization
Runge-Kutta-Chebyshev Methods (high stability RK methods)
Fully Implicit Runge-Kutta (FIRK) methods
Boundary value problem (BVP) solvers like MIRK and collocation methods
BDF methods for differential-algebraic equations (DAEs)
Methods for stiff stochastic differential equations
Many of these methods are the basis of high-efficiency partial differential equation (PDE) solvers and are thus important to many communities like computational fluid dynamics, mathematical biology, and quantum mechanics.
This project is good for both software engineers interested in the field of numerical analysis and those students who are interested in pursuing graduate research in the field.
Recommended Skills: Background knowledge in numerical analysis, numerical linear algebra, and the ability (or eagerness to learn) to write fast code.
Expected Results: Contributions of production-quality solver methods.
Mentor: Yingbo Ma mayingbo5@gmail.com
14. Establish a General Pipeline for Offline Reinforcement Learning Evaluation
To facilitate the evaluation of offline RL algorithms in Julia, we’d like to setup a general pipeline by leveraging existing datasets and pre-trained policies. This project includes two tasks. Firstly, an independent package is required to load existing offline RL datasets in GitHub - google-research/deep_ope . Secondly, the pretrained polices can be loaded in the Julia side for model selection benchmarking.
项目产出要求
Create a new Julia package ReinforcementLearningDatasets.jl to export existing datasets with the interfaces defined in ReinforcementLearningCore.jl
Add experiments to load pretrained policies and evaluate them in Julia.
项目技术要求
Be familiar with both Python (Tensorflow) and Julia(Flux.jl)
Understand basic concepts in offline reinforcement learning.
Mentor: Jun Tian find_my_way@foxmail.com