From 699f351eef0818d4a1d96f39caa62d9f009b0a17 Mon Sep 17 00:00:00 2001 From: EgorOrachev Date: Tue, 8 Jun 2021 15:06:14 +0300 Subject: [PATCH] [Project] Release 1.0.0 --- CHANGELOG.md | 34 +++++++++++++++++++++++++ README.md | 5 +++- python/README.md | 2 +- python/setup.py | 7 ++--- spbla/sources/opencl/opencl_backend.cpp | 2 -- 5 files changed, 43 insertions(+), 7 deletions(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..5550719 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,34 @@ +# Changelog + +All notable changes to this project are documented in this file. +Changes format: version name and date, minor notes, new features, fixes, what removed. + +Release are available at [link](https://github.com/JetBrains-Research/spbla/releases). + +## v1.0.0 - June 8, 2021 + +### Summary + +**spbla** is a sparse linear Boolean algebra for Nvidia Cuda, OpenCL and CPU computations. +Library provides C compatible API, the core of the library is written on C++ with +CUDA C/C++, CUDA Thrust and OpenCL for actual backend implementation. +Library supports CPU backend as fallback for debugging, prototyping and running on low-end PC. +**pyspbla** Python-package sources are shipped with the library source code. +It provides high-level safe and efficient access to the library within Python runtime. + +Python-package for Linux-based OSs is published in PyPI and available at [link](https://pypi.org/project/pyspbla/). + +#### New features + +- Cuda backend +- OpenCL backend +- Sequential (CPU) backend +- Sparse matrix support +- Matrix creation (empty, from data, with random data) +- Matrix-matrix operations (multiplication, element-wise addition, kronecker product) +- Matrix operations (equality, transpose, reduce to vector, extract sub-matrix) +- Matrix data extraction (as lists, as list of pairs) +- Matrix syntax sugar (pretty string printing, slicing, iterating through non-zero values) +- IO (import/export matrix from/to .mtx file format) +- GraphViz (export single matrix or set of matrices as a graph with custom color and label settings) +- Debug (matrix string debug markers, logging, operations time profiling) \ No newline at end of file diff --git a/README.md b/README.md index 4f4fba2..832d917 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ [![JB Research](https://jb.gg/badges/research-flat-square.svg)](https://research.jetbrains.org/) [![Ubuntu](https://github.com/JetBrains-Research/spbla/actions/workflows/ubuntu.yml/badge.svg?branch=main)](https://github.com/JetBrains-Research/spbla/actions/workflows/ubuntu.yml) [![License](https://img.shields.io/badge/license-MIT-orange)](https://github.com/JetBrains-Research/spbla/blob/master/LICENSE) +[![Package](https://img.shields.io/badge/pypi%20package-1.0.0-%233776ab)](https://pypi.org/project/pyspbla/) **spbla** is a linear Boolean algebra library primitives and operations for work with sparse matrices written for CPU, Cuda and OpenCL platforms. The primary @@ -25,6 +26,8 @@ for computations on CPU side only. This backend is selected automatically if Cuda compatible device is not present in the system. This can be quite handy for prototyping algorithms on a local computer for later running on a powerful server. +**PyPI package web page** is following [link](https://pypi.org/project/pyspbla/). + ### Features summary - Python package for every-day tasks @@ -74,7 +77,7 @@ These steps are required if you want to build library for your specific platform ### Requirements -- Linux based OS (tested on Ubuntu 20.04) +- Linux-based OS (tested on Ubuntu 20.04) - CMake Version 3.15 or higher - CUDA Compatible GPU device (to run Cuda computations) - GCC Compiler diff --git a/python/README.md b/python/README.md index 538c5cc..982eca0 100644 --- a/python/README.md +++ b/python/README.md @@ -24,7 +24,7 @@ element-wise addition, matrix-matrix multiplication and Kronecker product. **As a fallback** library provides sequential backend for mentioned above operations for computations on CPU side only. This backend is selected automatically -if Cuda compatible device is not presented in the system. This can be quite handy for +if Cuda/OpenCL compatible device is not presented in the system. This can be quite handy for prototyping algorithms on a local computer for later running on a powerful server. ### Features diff --git a/python/setup.py b/python/setup.py index 8af9901..ba8da20 100644 --- a/python/setup.py +++ b/python/setup.py @@ -20,7 +20,7 @@ setuptools.setup( name="pyspbla", - version="0.0.0", + version="1.0.0", author="Egor Orachyov", author_email="egororachyov@gmail.com", license="MIT", @@ -33,7 +33,7 @@ "Bug Tracker": "https://github.com/JetBrains-Research/spbla/issues" }, classifiers=[ - "Development Status :: 3 - Alpha", + "Development Status :: 5 - Production/Stable", "Programming Language :: Python :: 3", "Programming Language :: C++", "License :: OSI Approved :: MIT License", @@ -56,7 +56,8 @@ "graph-analysis", "graph-algorithms", "graphblas", - "nvidia-cuda" + "nvidia-cuda", + "opencl" ], packages=["pyspbla"], package_dir={'': '.'}, diff --git a/spbla/sources/opencl/opencl_backend.cpp b/spbla/sources/opencl/opencl_backend.cpp index 837e3f7..bde5dee 100644 --- a/spbla/sources/opencl/opencl_backend.cpp +++ b/spbla/sources/opencl/opencl_backend.cpp @@ -104,7 +104,6 @@ namespace spbla { void OpenCLBackend::queryCapabilities(spbla_DeviceCaps &caps) { if (controls != nullptr) { - { int maxNameLength = oclDetails::getNameMaxLength(caps.name); std::string nameStr = controls->device.getInfo(); @@ -119,7 +118,6 @@ namespace spbla { caps.cudaSupported = false; caps.openclSupported = true; - auto version = getVersion(); caps.major = version.first; caps.minor = version.second;