Skip to content
Snippets Groups Projects
Commit 64c9eb31 authored by Pierre Augier's avatar Pierre Augier
Browse files

Try Pypy + compare_codes with PA's KTH laptop.

parent 1c65e952
No related branches found
No related tags found
No related merge requests found
# modpythran=proj_pythran.pypy3-60-x86_64-linux-gnu.so
modpythran=proj_pythran.so
perf: perfpythran
......@@ -1,7 +4,6 @@
perf: perfpythran
clean: cleanfortran
rm -f *.so
......@@ -11,7 +13,7 @@
code = 'func(c0, c1, c2, a0, a1, a2, a3)'
end=as func, c0, c1, c2, a0, a1, a2, a3
perfnumpy: proj_pythran.so
perfnumpy: $(modpythran)
# numpy proj
@python -m perf timeit -s 'from bench import proj0 $(end)' $(code)
@# python -m perf timeit -s 'from bench import proj_loop0 $(end)' $(code)
......@@ -19,7 +21,7 @@
@python -m perf timeit -s 'from bench import proj_inplace0 $(end)' $(code)
@# python -m perf timeit -s 'from bench import proj_inplace_loop0 $(end)' $(code)
perfpythran: proj_pythran.so
perfpythran: $(modpythran)
# pythran proj_loop
@python -m perf timeit -s 'from bench import proj_loop $(end)' $(code)
# pythran proj_inplace_loop
......@@ -41,8 +43,8 @@
@python -m perf timeit -s 'from bench import proj_inplace_loop_numba $(end)' $(code)
proj_pythran.so: proj.py
pythran -v proj.py -march=native -DUSE_BOOST_SIMD -o proj_pythran.so
$(modpythran): proj.py
pythran -v proj.py -march=native -DUSE_BOOST_SIMD && mv proj_pythran.so $(modpythran)
perffortran: bench_proj_fortran.out bench_proj_fortran_inplace.out
......
......@@ -22,7 +22,10 @@
Mean +- std dev: 36.2 ms +- 0.8 ms
Mean +- std dev: 38.8 ms +- 3.1 ms
(pypy)
Mean +- std dev: 30.6 ms +- 0.9 ms
### pythran proj_loop
Mean +- std dev: 19.1 ms +- 1.0 ms
Mean +- std dev: 19.8 ms +- 1.4 ms
......@@ -25,7 +28,10 @@
### pythran proj_loop
Mean +- std dev: 19.1 ms +- 1.0 ms
Mean +- std dev: 19.8 ms +- 1.4 ms
(pypy)
Mean +- std dev: 25.9 ms +- 0.9 ms
### numba proj
Mean +- std dev: 78.1 ms +- 2.0 ms
......@@ -46,7 +52,10 @@
Mean +- std dev: 18.3 ms +- 1.1 ms
Mean +- std dev: 18.7 ms +- 0.8 ms
(pypy)
Mean +- std dev: 18.8 ms +- 1.1 ms
### pythran proj_inplace_loop
Mean +- std dev: 8.41 ms +- 0.52 ms
Mean +- std dev: 8.60 ms +- 0.08 ms
......@@ -49,7 +58,10 @@
### pythran proj_inplace_loop
Mean +- std dev: 8.41 ms +- 0.52 ms
Mean +- std dev: 8.60 ms +- 0.08 ms
(pypy)
Mean +- std dev: 8.12 ms +- 0.09 ms
### numba proj_inplace
Mean +- std dev: 65.9 ms +- 1.2 ms
......
......@@ -17,13 +17,15 @@
import proj_pythran
from proj_numba import (
proj as proj_numba,
proj_loop as proj_loop_numba,
proj_inplace as proj_inplace_numba,
proj_inplace_loop as proj_inplace_loop_numba
)
try:
from proj_numba import (
proj as proj_numba,
proj_loop as proj_loop_numba,
proj_inplace as proj_inplace_numba,
proj_inplace_loop as proj_inplace_loop_numba
)
except ImportError:
pass
assert hasattr(proj_pythran, '__pythran__')
......@@ -36,10 +38,10 @@
'proj_loop',
'proj_inplace',
'proj_inplace_loop',
'proj_numba',
'proj_loop_numba',
'proj_inplace_numba',
'proj_inplace_loop_numba',
# 'proj_numba',
# 'proj_loop_numba',
# 'proj_inplace_numba',
# 'proj_inplace_loop_numba',
]
......@@ -56,9 +58,12 @@
a2 = np.ones(shape)
a3 = np.ones(shape)
# JIT compiler
for func in (proj_numba,
proj_loop_numba,
proj_inplace_numba,
proj_inplace_loop_numba):
func(c0, c1, c2, a0, a1, a2, a3)
try:
# JIT compiler
for func in (proj_numba,
proj_loop_numba,
proj_inplace_numba,
proj_inplace_loop_numba):
func(c0, c1, c2, a0, a1, a2, a3)
except NameError:
pass
......@@ -57,6 +57,8 @@
Fine comparison between fluidsim and ns3d (case 128^3)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
On my computer at LEGI:
+----------------+---------+----------+
| | ns3d | fluidsim |
+----------------+---------+----------+
......@@ -73,6 +75,24 @@
| projection | 0.46 | 0.30 |
+----------------+---------+----------+
On my laptop (pyfftw is slow! 25% slower than ns3d! Linked to the same fftw?):
+----------------+---------+----------+
| | ns3d | fluidsim |
+----------------+---------+----------+
| total | 10.63 | 10.91 |
+----------------+---------+----------+
| FFT | 6.62 | 8.05 |
+----------------+---------+----------+
| time stepping | 2.50 | 1.66 |
+----------------+---------+----------+
| curl | 0.43 | 0.39 |
+----------------+---------+----------+
| vector product | 0.39 | 0.39 |
+----------------+---------+----------+
| projection | 0.39 | 0.34 |
+----------------+---------+----------+
- ns3d's FFT are very fast: the FFT execution is 0.55 s longer for fluidsim
(nearly 9% longer). This difference is especially important for sequential run
for which there is no communication cost in the FFT computation.
......
......@@ -13,7 +13,7 @@
pip install -r requirements.txt
# Set to help Dedalus find the proper libraries
# export FFTW_PATH=
# export FFTW_PATH=/usr
# export MPI_PATH=
# export MPI_INCLUDE_PATH=/usr/include/mpi
python setup.py build_ext --inplace
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment