Skip to main content

A numerical computing library for Python that scales.

Project description

NumS

PyPI version Build Status codecov

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:

  1. Replicate the function signature in nums.numpy.api. If it's a np.ndarray method, add the function signature to nums.core.array.blockarray.BlockArray.
  2. If possible, implement the function using existing methods in nums.core.array.application.ArrayApplication or nums.core.array.blockarray.BlockArray.
  3. Write a new implementation ArrayApplication or BlockArray 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.
  4. Add kernel interfaces to nums.core.systems.interfaces.ComputeInterface, and implement the interface methods for all existing compute implementations. Currently, the only compute interface is nums.core.systems.numpy_compute.
  5. Write tests covering all branches of your implementation in the corresponding test module in the project's tests/ directory.
  6. 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.
  7. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nums-0.1.2.tar.gz (68.4 kB view details)

Uploaded Source

Built Distribution

nums-0.1.2-py3-none-any.whl (95.3 kB view details)

Uploaded Python 3

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

Hashes for nums-0.1.2.tar.gz
Algorithm Hash digest
SHA256 08ffe41a48615336399a92880304baab7c12c7761dc85749f05ef094d618b81a
MD5 d2f09ea0b46a570816580b7e7dadd0bf
BLAKE2b-256 ec90bc2ffdc3b681c7397018795eee68c17f6aa81824a1bf2bef3e69f62816a1

See more details on using hashes here.

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

Hashes for nums-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f273999b648ec327c4161073281637dc2f1aa782eaa54d33030bcb68785abfda
MD5 887eb702c584464e7c764896dde99afc
BLAKE2b-256 2d9f24e1f004af163d7ea8bd4c80210dbd44e751ad1e372577b6da761717c9d7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page