89,691 research outputs found
AutoParallel: A Python module for automatic parallelization and distributed execution of affine loop nests
The last improvements in programming languages, programming models, and
frameworks have focused on abstracting the users from many programming issues.
Among others, recent programming frameworks include simpler syntax, automatic
memory management and garbage collection, which simplifies code re-usage
through library packages, and easily configurable tools for deployment. For
instance, Python has risen to the top of the list of the programming languages
due to the simplicity of its syntax, while still achieving a good performance
even being an interpreted language. Moreover, the community has helped to
develop a large number of libraries and modules, tuning them to obtain great
performance.
However, there is still room for improvement when preventing users from
dealing directly with distributed and parallel computing issues. This paper
proposes and evaluates AutoParallel, a Python module to automatically find an
appropriate task-based parallelization of affine loop nests to execute them in
parallel in a distributed computing infrastructure. This parallelization can
also include the building of data blocks to increase task granularity in order
to achieve a good execution performance. Moreover, AutoParallel is based on
sequential programming and only contains a small annotation in the form of a
Python decorator so that anyone with little programming skills can scale up an
application to hundreds of cores.Comment: Accepted to the 8th Workshop on Python for High-Performance and
Scientific Computing (PyHPC 2018
Proceedings of the 8th Python in Science conference
International audienceThe SciPy conference provides a unique opportunity to learn and affect what is happening in the realm of scientific computing with Python. Attendees have the opportunity to review the available tools and how they apply to specific problems. By providing a forum for developers to share their Python expertise with the wider commercial, academic, and research communities, this conference fosters collaboration and facilitates the sharing of software components, techniques and a vision for high level language use in scientific computing
Performance Evaluation of Python Parallel Programming Models: Charm4Py and mpi4py
Python is rapidly becoming the lingua franca of machine learning and
scientific computing. With the broad use of frameworks such as Numpy, SciPy,
and TensorFlow, scientific computing and machine learning are seeing a
productivity boost on systems without a requisite loss in performance. While
high-performance libraries often provide adequate performance within a node,
distributed computing is required to scale Python across nodes and make it
genuinely competitive in large-scale high-performance computing. Many
frameworks, such as Charm4Py, DaCe, Dask, Legate Numpy, mpi4py, and Ray, scale
Python across nodes. However, little is known about these frameworks' relative
strengths and weaknesses, leaving practitioners and scientists without enough
information about which frameworks are suitable for their requirements. In this
paper, we seek to narrow this knowledge gap by studying the relative
performance of two such frameworks: Charm4Py and mpi4py.
We perform a comparative performance analysis of Charm4Py and mpi4py using
CPU and GPU-based microbenchmarks other representative mini-apps for scientific
computing.Comment: 7 pages, 7 figures. To appear at "Sixth International IEEE Workshop
on Extreme Scale Programming Models and Middleware
- …