This is the fourth assembler backend supported by PyPy in addition to x86 (32 and 64), ARM (32-bit only) and PPC64 (both little- and big-endian). It might seem that we kind of get a hang of new architectures. Thanks to IBM for funding this work!
History
When I went to university one lecture covered the prediction of Thomas Watson in 1943. His famous quote "I think there is a world market for maybe five computers ...", turned out not to be true.However, even 70 years later, mainframes are used more often than you think. They back critical tasks requiring a high level of stability/security and offer high hardware and computational utilization rates by virtualization.
With the new PyPy JIT backend we are happy to present a fast Python virtual machine for mainframes and contribute more free software running on s390x.
Meta tracing
Even though the JIT backend has been tested on PyPy, it is not restricted to the Python programming language. Do you have a great idea for a DSL, or another language that should run on mainframes? Go ahead and just implement your interpreter using RPython.How do I get a copy?
PyPy can be built using the usual instructions found here. As soon as the next PyPy version has been released we will provide binaries. Until then you can just grab a nightly here.We are currently busy to get the next version of PyPy ready, so an official release will be rolled out soon.Comparing s390x to x86
The goal of this comparison is not to scientifically evaluate the benefits/disadvantages on s390x, but rather to see that PyPy's architecture delivers the same benefits as it does on other platforms. Similar to the comparison done for PPC I ran the benchmarks using the same setup. The first column is the speedup of the PyPy JIT VM compared to the speedup of a pure PyPy interpreter 1). Note that the s390x's OS was virtualized.Label x86 s390x s390x (run 2)
ai 13.7 12.4 11.9
bm_chameleon 8.5 6.3 6.8
bm_dulwich_log 5.1 5.0 5.1
bm_krakatau 5.5 2.0 2.0
bm_mako 8.4 5.8 5.9
bm_mdp 2.0 3.8 3.8
chaos 56.9 52.6 53.4
crypto_pyaes 62.5 64.2 64.2
deltablue 3.3 3.9 3.6
django 28.8 22.6 21.7
eparse 2.3 2.5 2.6
fannkuch 9.1 9.9 10.1
float 13.8 12.8 13.8
genshi_text 16.4 10.5 10.9
genshi_xml 8.2 7.9 8.2
go 6.7 6.2 11.2
hexiom2 24.3 23.8 23.5
html5lib 5.4 5.8 5.7
json_bench 28.8 27.8 28.1
meteor-contest 5.1 4.2 4.4
nbody_modified 20.6 19.3 19.4
pidigits 1.0 -1.1 -1.0
pyflate-fast 9.0 8.7 8.5
pypy_interp 3.3 4.2 4.4
raytrace-simple 69.0 100.9 93.4
richards 94.1 96.6 84.3
rietveld 3.2 2.5 2.7
slowspitfire 2.8 3.3 4.2
spambayes 5.0 4.8 4.8
spectral-norm 41.9 39.8 42.6
spitfire 3.8 3.9 4.3
spitfire_cstringio 7.6 7.9 8.2
sympy_expand 2.9 1.8 1.8
sympy_integrate 4.3 3.9 4.0
sympy_str 1.5 1.3 1.3
sympy_sum 6.2 5.8 5.9
telco 61.2 48.5 54.8
twisted_iteration 55.5 41.9 43.8
twisted_names 8.2 9.3 9.7
twisted_pb 12.1 10.4 10.2
twisted_tcp 4.9 4.8 5.2
Geometric mean: 9.31 9.10 9.43
As you can see the benefits are comparable on both platforms.
Of course this is scientifically not good enough, but it shows a tendency. s390x can achieve the same results as you can get on x86.
Are you running your business application on a mainframe? We would love to get some feedback. Join us in IRC tell us if PyPy made your application faster!
plan_rich & the PyPy Team
1) PyPy revision for the benchmarks: 4b386bcfee54
No comments:
Post a Comment