rsmpi
salmon
rsmpi | salmon | |
---|---|---|
4 | 1 | |
442 | 734 | |
2.9% | 1.9% | |
7.2 | 5.0 | |
12 days ago | 2 months ago | |
Rust | C++ | |
Apache License 2.0 | GNU General Public License v3.0 only |
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.
rsmpi
-
Why should academic researchers use Rust?
Perhaps MPI?
-
In which circumstances is C++ better than Rust?
- OpenMPI https://github.com/rsmpi/rsmpi and if you look at dependency you will find mpi-sys (is a rust thing but it is the current FFI part) and if go and look for it https://crates.io/crates/mpi-sys/0.2.0/dependencies sure it have it, bindgen as a dependency
-
possibility of blas natively in Rust
I mean there's rsmpi (https://github.com/rsmpi/rsmpi) for MPI which now has a few active maintainers such as one who also works on PETSc and a few other HPC libraries.
-
I have written a blog post about my experience using Rust for scientific numerical applications
Haven't used it myself. But this seems well maintained and very usable. https://github.com/rsmpi/rsmpi
salmon
-
Why should academic researchers use Rust?
Rust makes distribution and maintenance near trivial. My lab develops a fairly widely-used tool, salmon, for the quantification of transcript expression from RNA-seq data. This tool is written in C++14, and has a substantial number of dependencies. The process of updating the tool (e.g. bumping dependencies) and cutting a new release is painful. To maintain widespread availability, we distribute this tool using bioconda which uses it's own CI and setup to build new releases for (in our case) Linux and MacOS. Things break all the time. For example, recently, they bumped the compiler used to build packages. This changed some default "implementation defined" behavior, causing previously functioning code to fail. We didn't find this locally, because we didn't test that specific compiler version. When we tried to release a new version, we had to go back and fix things etc. This is not just because different compilers exist, but because the C++ specification is soooo complicated and the set of undefined and implementation defined behavior is sooo broad that it's very brittle and it's easy for things to "break" via bitrot. However, the stability provided by Rust has been phenomenal so far. In our code, we only use stable Rust features, and we have benefited tremendously from the empirical guarantee that valid Rust code (except in exceptional cases like latent bugs in the language) will remain valid. While not all crates follow it religiously, there is a reasonable respect for semantic versioning. Thus, cutting a new release of one of our Rust tools is often as simple as just updating the Cargo.toml (and Cargo.lock in the case of applications), tagging a new release in GitHub, and letting the bioconda CI do it's business with the tagged artifacts. The build "scripts" are almost always trivial because the builds just work, across platforms, across CIs, etc. Now, new projects like cargo dist look like they make this process even simpler.
What are some alternatives?
libint - Libint: high-performance library for computing Gaussian integrals in quantum mechanics
rnaseq - RNA-seq analyses.
node_crunch - Allows to distribute computations across several nodes
rnaseqc - Fast, efficient RNA-Seq metrics for quality control and process optimization
Haskell-abinitio - contains a package in Haskell to calculate the electronic structure properties of molecules using the Hartree-Fock method
noson-app - The essential to control music from your SONOS devices on Linux platforms
openblas-src - Source of BLAS and LAPACK via OpenBLAS
gEAR - The gEAR Portal was created as a data archive and viewer for gene expression data including microarrays, bulk RNA-Seq, single-cell RNA-Seq and more.
libcint - general GTO integrals for quantum chemistry
IntaRNA - Efficient target prediction incorporating accessibility of interaction sites
intel-mkl-src - Redistribute Intel MKL as a crate
nanopolish - Signal-level algorithms for MinION data