@@ -78,6 +78,59 @@ reasonable strength.
7878* ** Skills needed:** C++, Network programming
7979* ** Difficulty:** Hard / 175 hours
8080
81+ Allow Lc0 to handle computation over the network. That allows to run local Lc0
82+ engine while using remote hardware (e.g., GPUs in the cloud) for neural network
83+ evaluation, or to share evaluation between multiple Lc0 games.
84+
85+ ## Port existing backends to the new backend API
86+
87+ * ** Skills needed:** C++
88+ * ** Difficulty:** Easy / 90 hours
89+
90+ Starting with Lc0 v0.32, we have a new backend API that is more flexible.
91+ However, most of the existing backends (CUDA, OpenCL, XLA) still use the old API
92+ through a compatibility wrapper. We need to port them to the new API to be able
93+ to use new features and optimizations.
94+
95+ ## Extend UCI protocol with JSON-based input and output information
96+
97+ * ** Skills needed:** C++
98+ * ** Difficulty:** Easy / 175 hours
99+
100+ The UCI protocol is the standard way for chess engines to communicate with user
101+ interfaces. However, it has limitations in terms of the amount and structure of
102+ information that can be exchanged. We want to extend the UCI protocol to support
103+ JSON-based messages for detailed state information, which can be useful for
104+ analysis and debugging.
105+
106+ We won't use existing json libraries; instead we'll implement a JSON
107+ serializer/deserializer in our custom protobuf code.
108+
109+ ## Update the XLA backend to use StableHLO, through writing MLIR bytecode
110+
111+ * ** Skills needed:** C++, MLIR, XLA
112+ * ** Difficulty:** Hard / 175 hours
113+
114+ The XLA backend for Lc0 currently uses an older HLO graph format. We want to
115+ update it to use StableHLO, a MLIR-based intermediate representation for machine
116+ learning models. We don't want to add a full MLIR dependency to Lc0, so the task
117+ includes writing a custom MLIR bytecode writer for our neural network format,
118+ and update the XLA backend to write StableHLO.
119+
120+ Having MLIR bytecode writer will also open possibilities for future backends and
121+ ways to write kernels, like Triton or cuTile.
122+
123+ ## Support for foreign neural network formats (e.g., Ceres)
124+
125+ * ** Skills needed:** C++, ONNX
126+ * ** Difficulty:** Medium / 175 hours
127+
128+ Lc0 currently uses its own neural network format, and supports generic ONNX as
129+ well. There are other engines which use different formats, like Ceres, Stockfish
130+ NNUE, or Monty. Supporting these formats would allow more experiments, and with
131+ faster nets (e.g., Stockfish NNUE) we may have a faster backend for search
132+ optimization.
133+
81134...
82135
83136## ` TODO: DELETE THIS ` Unexpanded list
@@ -103,4 +156,5 @@ reasonable strength.
103156* Move certain parts of Lc0 to a separate repository with more relaxed license
104157* Implement chess variant? (duck chess?)
105158* Implement some tool (set of colab scripts) to explore Lc0 activations etc
159+ * dev.lczero.org
106160* "Your idea here."
0 commit comments