A numerical computing library for Python that scales.
Project description
What is NumS?
NumS is a Numerical computing library for Python that Scales your workload to the cloud. It is an array abstraction layer on top of distributed memory systems that implements the NumPy API, extending NumPy to scale horizontally, as well as provide inter-operation parallelism (e.g. automatic parallelization of Python loops). NumS differentiates itself from related solutions by implementing the NumPy API, and providing tighter integration with the Python programming language by supporting loop parallelism and branching. Currently, NumS implements a Ray system interface, S3 and distributed filesystems for storage, and NumPy as a backend for CPU-based array operations.
Installation
NumS is currently supported on Linux-based systems running Python 3.6, 3.7, and 3.8. Currently, only CPU-based workloads are supported; we are working on providing GPU support.
pip installation
To install NumS on Ray with CPU support, simply run the following command.
pip install nums
conda installation
We are working on providing support for conda installations, but in the meantime, run the following with your conda environment activated.
pip install nums
# Run below to have NumPy use MKL.
conda install -fy mkl
conda install -fy numpy scipy
S3 Configuration
To run NumS with S3, configure credentials for access by following instructions here: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html
Contributing
To contribute to NumS on Ray, we recommend cloning the repository and installing the project in developer mode using the following set of commands:
conda create --name nums python=3.7 -y
source activate nums
pip install -e .[testing]
Contributing NumPy Functionality
To make basic contributions to the NumPy API, follow these steps:
- Replicate the function signature in
nums.numpy.api
. If it's anp.ndarray
method, add the function signature tonums.core.array.blockarray.BlockArray
. - If possible, implement the function using existing methods
in
nums.core.array.application.ArrayApplication
ornums.core.array.blockarray.BlockArray
. - Write a new implementation
ArrayApplication
orBlockArray
if it's not possible to implement using existing methods, or the implementation's execution speed can be improved beyond what is achievable using existing methods. - Add kernel interfaces to
nums.core.systems.interfaces.ComputeInterface
, and implement the interface methods for all existing compute implementations. Currently, the only compute interface isnums.core.systems.numpy_compute
. - Write tests covering all branches of your implementation in the corresponding test module
in the project's
tests/
directory. - Do your best to implement the API in its entirety. It's generally better to have a partial
implementation than no implementation, so if for whatever reason certain arguments
are difficult to support, follow the convention we use to raise errors for unsupported
arguments in functions like
nums.numpy.api.min
. - If you run into any issues and need help with your implementation, open an issue describing the issue you're experiencing.
We encourage you to follow the nums.numpy.api.arange
implementation as a reference.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file nums-0.1.2.tar.gz
.
File metadata
- Download URL: nums-0.1.2.tar.gz
- Upload date:
- Size: 68.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0.post20201207 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.7.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08ffe41a48615336399a92880304baab7c12c7761dc85749f05ef094d618b81a |
|
MD5 | d2f09ea0b46a570816580b7e7dadd0bf |
|
BLAKE2b-256 | ec90bc2ffdc3b681c7397018795eee68c17f6aa81824a1bf2bef3e69f62816a1 |
File details
Details for the file nums-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: nums-0.1.2-py3-none-any.whl
- Upload date:
- Size: 95.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0.post20201207 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.7.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f273999b648ec327c4161073281637dc2f1aa782eaa54d33030bcb68785abfda |
|
MD5 | 887eb702c584464e7c764896dde99afc |
|
BLAKE2b-256 | 2d9f24e1f004af163d7ea8bd4c80210dbd44e751ad1e372577b6da761717c9d7 |