  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.
