nogil-3.12
weave
nogil-3.12 | weave | |
---|---|---|
3 | 7 | |
142 | 527 | |
- | - | |
6.9 | 3.0 | |
6 months ago | 5 months ago | |
Python | Nim | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
nogil-3.12
-
The GIL can now be disabled in Python's main branch
Those links are both fairly old. See PEP 703 [0] and Sam’s nogil-3.12 repo [1] for more current versions.
[0] https://peps.python.org/pep-0703/
[1] https://github.com/colesbury/nogil-3.12
- Meta pledges Three-Year sponsorship for Python if GIL removal is accepted
- Our Plan for Python 3.13
weave
- The GIL can now be disabled in Python's main branch
-
Maybe Everything Is a Coroutine
GPU drivers provide an event system:
- Cuda: https://github.com/mratsim/weave/issues/133
-
Benchmarking 20 programming languages on N-queens and matrix multiplication
```
Note: the Theoretical peak limit is hardcoded and used my previous machine i9-9980XE.
It maybe that your BLAS library is not named libopenblas.so, you can change that here: https://github.com/mratsim/laser/blob/master/benchmarks/thir...
Implementation is in this folder: https://github.com/mratsim/laser/tree/master/laser/primitive...
in particular, tiling, cache and register optimization: https://github.com/mratsim/laser/blob/master/laser/primitive...
AVX512 code generator: https://github.com/mratsim/laser/blob/master/laser/primitive...
And generic Scalar/SSE/AVX/AVX2/AVX512 microkernel generator (this is Nim macros to generate code at compile-time): https://github.com/mratsim/laser/blob/master/laser/primitive...
I'll come back later with details on how to use my custom HPC threadpool Weave instead of OpenMP (https://github.com/mratsim/weave/tree/master/benchmarks/matm...)
-
Nim vs Rust Benchmarks
In my benchmarks, Nim is faster than Rust:
- multithreading runtime (i.e Rayon vs Weave https://github.com/mratsim/weave)
- Cryptography: https://hackmd.io/@gnark/eccbench#Pairing
- Scientific computing / matrix multiplication: https://github.com/bluss/matrixmultiply/issues/34#issuecomme...
There is no inherent reason why a Nim program would be slower than Rust.
-
Aren't green threads just better than async/await?
If you're interested into diving into this I have reviewed solutions to cactus stacks / split stacks here https://github.com/mratsim/weave/blob/master/weave/memory/multithreaded_memory_management.md
-
Nim 2.0 – Thoughts
[4] https://github.com/mratsim/weave
What are some alternatives?
nogil - Multithreaded Python without the GIL
eioio - Effects-based direct-style IO for multicore OCaml
ideas4 - An Additional 100 Ideas for Computing https://samsquire.github.io/ideas4/
httpbeast - A highly performant, multi-threaded HTTP 1.1 server written in Nim.
steering-council - Communications from the Steering Council
matrixmultiply - General matrix multiplication of f32 and f64 matrices in Rust. Supports matrices with general strides.
codemod - Codemod is a tool/library to assist you with large-scale codebase refactors that can be partially automated but still require human oversight and occasional intervention. Codemod was developed at Facebook and released as open source.
Edith - Electronic Design in Swithft
ideas5 - Batch 5 of Ideas for Computing
ocaml-multicore - Multicore OCaml
Filestash - 🦄 A modern web client for SFTP, S3, FTP, WebDAV, Git, Minio, LDAP, CalDAV, CardDAV, Mysql, Backblaze, ...
cosmopolitan - build-once run-anywhere c library