All Projects → Thierry-Dumont → BenchmarksPythonJuliaAndCo

Thierry-Dumont / BenchmarksPythonJuliaAndCo

Licence: MIT license
Benchmark(s) of numerical programs with Python (and Scipy, Pythran, Numba), Julia and C++.

Programming Languages

C++
36643 projects - #6 most used programming language
python
139335 projects - #7 most used programming language
julia
2034 projects
CMake
9771 projects
Cuda
1817 projects
Jupyter Notebook
11667 projects

Projects that are alternatives of or similar to BenchmarksPythonJuliaAndCo

ESA
Easy SimAuto (ESA): An easy-to-use Power System Analysis Automation Environment atop PowerWorld Simulator Automation Server (SimAuto)
Stars: ✭ 26 (+36.84%)
Mutual labels:  numba, pythran
transonic
🚀 Make your Python code fly at transonic speeds!
Stars: ✭ 93 (+389.47%)
Mutual labels:  numba, pythran
ComputationalMathematics
Lecture slides and homework assignments for MA5233 Computational Mathematics at the National University of Singapore.
Stars: ✭ 35 (+84.21%)
Mutual labels:  julia-language, numerical-methods
CFD-Julia-12-steps--o-Navier-Stokes-Equations
This is a replication of "CFD Python: 12 steps to Navier-Stokes" in Julia
Stars: ✭ 33 (+73.68%)
Mutual labels:  julia-language, numerical-methods
NumQM Basic
A mini-course offered to Undergrad physics students
Stars: ✭ 35 (+84.21%)
Mutual labels:  numerical-methods
learningjulia
A blog where I document my learning of the Julia programming language.
Stars: ✭ 15 (-21.05%)
Mutual labels:  julia-language
GlobalSensitivity.jl
Robust, Fast, and Parallel Global Sensitivity Analysis (GSA) in Julia
Stars: ✭ 30 (+57.89%)
Mutual labels:  julia-language
Gen.jl
A general-purpose probabilistic programming system with programmable inference
Stars: ✭ 1,595 (+8294.74%)
Mutual labels:  julia-language
NAGPythonExamples
Examples and demos showing how to call functions from the NAG Library for Python
Stars: ✭ 46 (+142.11%)
Mutual labels:  numerical-methods
QSimulator.jl
Unitary and Lindbladian evolution in Julia
Stars: ✭ 19 (+0%)
Mutual labels:  julia-language
pyFEM
A modular Finite Element Method solver implemented in Python
Stars: ✭ 16 (-15.79%)
Mutual labels:  numerical-methods
math-server-docker
The ideal multi-user Data Science server with Jupyterhub and RStudio, ready for Python, R and Julia languages.
Stars: ✭ 70 (+268.42%)
Mutual labels:  julia-language
skan
Python module to analyse skeleton (thin object) images
Stars: ✭ 92 (+384.21%)
Mutual labels:  numba
TemporalGPs.jl
Fast inference for Gaussian processes in problems involving time. Partly built on results from https://proceedings.mlr.press/v161/tebbutt21a.html
Stars: ✭ 89 (+368.42%)
Mutual labels:  julia-language
QuantPDE
A high-performance, open-source, header-only C++(>=11) library for pricing derivatives.
Stars: ✭ 42 (+121.05%)
Mutual labels:  numerical-methods
18s191
Course 18.S191 at MIT, Spring 2021 - Introduction to computational thinking with Julia:
Stars: ✭ 2,094 (+10921.05%)
Mutual labels:  julia-language
NotebookToLaTeX.jl
A Julia package for converting your Pluto and Jupyter Notebooks into beautiful Latex.
Stars: ✭ 70 (+268.42%)
Mutual labels:  julia-language
numerics
library of numerical methods using Armadillo
Stars: ✭ 17 (-10.53%)
Mutual labels:  numerical-methods
neuralRDEs
Code for: "Neural Rough Differential Equations for Long Time Series", (ICML 2021)
Stars: ✭ 102 (+436.84%)
Mutual labels:  numerical-methods
ruck
🧬 Modularised Evolutionary Algorithms For Python with Optional JIT and Multiprocessing (Ray) support. Inspired by PyTorch Lightning
Stars: ✭ 50 (+163.16%)
Mutual labels:  numba

Numerical benchmarks for Julia, Python.

We try to avoid trivial and nonsense benchmarks (for people doing numerics!) like fibonacci, sorting and so on.

We put ourself in the shoes of a typical Matlab or Matlab-like programmer, writing quite short but numerically intensive programs.

Are Python and Julia easy to use and efficient? We compare them with a C++ optimized implementation (and sometimes with a Fortran one)..

The benchmark(s):

  • 🆕 Callback: callbacks of small and not so small functions.

  • Gaussian: Gaussian elimination with partial pivoting.

  • FeStiff: compute the stiffness matrix, for the Poisson equation, discretized with P2 finite elements on triangles.

  • Weno: a classical solver for hyperbolic equations, in dimension 1, with application to Burghers equation and to Convection.

  • Sparse: building a sparse matrix and doing a sparse matrix x vector product.

  • MicroBenchmarks: very simple benchmarks to show the importance of different programing styles.

We will add other numerical significative benchmarks in the (near) future.

Dependencies:

What you need to install:

  • python3
  • pip (pip3)
  • g++ (and/or clang++)
  • gfortran
  • lapack
  • openblas
  • cmake
  • gnuplot

You can install them using your distribution tool (apt...).

  • julia

Julia since 2018-10-08 programs need at least version Version 1.1 (stable version in 2018-10); note that all programs needed adaptation when moving to this version, and will not run with former ones.

Note also that the version packaged with Ubuntu 18-04 is older. Install the stable version from here. Note also that Julia is evolving, and it is possible that the codes need some adaptation to run with later versions of the language.

You also need:

  • pythran
  • scipy
  • Numpy
  • numba

to install them, you can just do:

pip install pythran

and so on...

You can also install them from conda.

Note that, for Pythran it seems necessary to create a .pythranrc file in the home directory, to describe which blas is used:

[compiler]
blas=openblas

How to run the Benchmarks ?

-1: First solution: Enter the directories CallBack/, FeStiff/, Gaussian/, MicroBenchmarks/, Sparse/ or Weno/. Then read the README.md, which explains how to run the (local) benchmark.

-2: Second solution: In each of these directories, you will find a script: runAllTests.sh . This script will run the benchmark, for every language (and variant).

The first solution is certainly the safest.

Results:

Have a look at the wiki, where you can find results obtained on my personal computer, as well as some considerations on the different benchmarks and on optimizations implemented.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].