mirror of
https://github.com/zama-ai/concrete.git
synced 2026-02-18 08:31:31 -05:00
55 lines
2.1 KiB
Markdown
55 lines
2.1 KiB
Markdown
# Game of Life
|
|
|
|
In the associated [Python file](https://github.com/zama-ai/concrete/blob/main/frontends/concrete-python/examples/game_of_life/game_of_life.py), you can run the Game of Life, written in Concrete Python.
|
|
|
|

|
|
|
|
### Installation
|
|
|
|
In addition to Concrete, you must install `pygame` in your virtual environment:
|
|
|
|
- `pip3 install pygame`
|
|
|
|
Once done, if you go to `frontends/concrete-python/examples/game_of_life`, `python game_of_life.py --help` should give you the manpage:
|
|
|
|
```
|
|
Game of Life in Concrete Python.
|
|
|
|
options:
|
|
-h, --help show this help message and exit
|
|
--dimension DIMENSION
|
|
Dimension of the grid
|
|
--refresh_every REFRESH_EVERY
|
|
Refresh the grid every X steps
|
|
--method {method_3b,method_4b,method_5b,method_basic}
|
|
Method for refreshing the grid
|
|
--log2_global_p_error LOG2_GLOBAL_P_ERROR
|
|
Probability of correctness issue (full circuit)
|
|
--log2_p_error LOG2_P_ERROR
|
|
Probability of correctness issue (individual TLU)
|
|
--simulate Simulate instead of running computations in FHE
|
|
--show_mlir Show the MLIR
|
|
--stop_after_compilation
|
|
Stop after compilation
|
|
--text_output Print a text output of the grid
|
|
```
|
|
|
|
### Running
|
|
|
|
Then, you can play with the different options, and in particular:
|
|
|
|
- `dimension`, to chose the size of the grid; the larger, the slower
|
|
- `method`, to chose which implementation is used for the grid update
|
|
- `log2_global_p_error` and `log2_p_error`, to chose the probability of correctness (see the Concrete documentation for more information)
|
|
- `simulate`, to do computations only in simulation, i.e., not in FHE
|
|
|
|
### Typical Executions
|
|
|
|
In simulation: `python3 game_of_life.py --dimension 100 --refresh_every 50 --simulate`
|
|
|
|
In FHE: `python3 game_of_life.py --dimension 6 --refresh_every 8 --log2_p_error -40 --method method_4b`
|
|
|
|
### Technical Explanations
|
|
|
|
A blog is currently in the process of being written, and a link will be added here when it's available. In the meantime, some explanations are given in the code.
|