Skip to content

Commit

Permalink
Refactored text in README file; explained semantic versioning
Browse files Browse the repository at this point in the history
  • Loading branch information
Kent Knox committed Jul 21, 2015
1 parent 0663c47 commit f50a20f
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 46 deletions.
6 changes: 2 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,8 @@ Firstly, in order to contribute code to this project, a contributor must have a
At this point, the repository maintainers will be notified by GitHub that a 'pull request' exists pending against their repository. A code review should be completed within a few days, depending on the scope of submitted code, and the code will either be accepted, rejected or commented on for feedback.

## Code submission guidelines
We want to ensure that the project code base maintains a level of quality over time, such that future contributors find it as easy to jump into the code as hopefully it is today. As such, pull requests should
* follow the [code style guidelines]( ) of the project as posted to the project wiki. Unfortunately, there was no unifying code guidelines defined between the BLAS & FFT projects, but code submissions should not mix styles within an individual file. We have since defined and posted a code style guideline for the projects and we expect the code to slowly transition to the new
guidelines over time
* separate check-ins that modify a files style from the ones that add/change/delete code.
Points to remember when generating pull-requests against clSPARSE
* clSPARSE is a project licensed under the [Apache License, Version 2.0]( http://www.apache.org/licenses/LICENSE-2.0 ). If you are not already familiar, please review the license before issuing a pull request. We intend this project to be open to external contributors, and encourage developers to contribute code back that they believe will provide value to the overall community. We interpret an explicit 'pull request' to this repository as an implicit acknowledgement from the contributor that they wish to share code under the terms of the Apache license v2.0.
* target the **develop** branch
* ensure that the [code properly builds]( https://github.com/kknox/clSPARSE/wiki/Build )
* Proper cloud based build services should verify the code builds in a PR
Expand Down
84 changes: 42 additions & 42 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,12 @@
## Project badges
**coming soon**

Pre-built binaries **not yet** available on our releases page **coming soon**
Pre-built binaries are available on our [releases page](releases)

# clSPARSE
an OpenCL© library implementing Sparse linear algebra. This project started
an OpenCL© library implementing sparse linear algebra. This project started
as a collaboration between [AMD Inc.](http://www.amd.com/) and
[Vratis Ltd.](http://www.vratis.com/). In opening the source to the public, we
invite all interested parties to [contribute](CONTRIBUTING.md) to the source.
[Vratis Ltd.](http://www.vratis.com/).

## Introduction to clSPARSE
The library source compiles cross-platform on the back of an advanced cmake build
system allowing users to build the library, benchmarks, tests and takes care of
dependencies for them. True in spirit with
the other clMath libraries, clSPARSE exports a “C” interface to allow
projects to build wrappers around clSPARSE in any language they need. With
respect to the API, a great deal of thought and effort went into designing the
API’s to make them less ‘cluttered’ compared to the older clMath libraries.
OpenCL state is not explicitly passed through the API, which enables the library
to be forward compatible when users are ready to switch from OpenCL 1.2 to OpenCL
2.0. Lastly, the API’s are designed such that users are in control of where
input and output buffers live, and they maintain absolute control of when data
transfers to/from device memory need to happen, so that there are no performance
surprises.

At release, clSPARSE provides these fundamental sparse operations for OpenCL:
At this time, clSPARSE provides these fundamental sparse operations for OpenCL:
- Sparse Matrix - dense Vector multiply (SpM-dV)
- Sparse Matrix - dense Matrix multiply (SpM-dM)
- Iterative conjugate gradient solver (CG)
Expand All @@ -33,11 +15,16 @@ At release, clSPARSE provides these fundamental sparse operations for OpenCL:
- COO to CSR conversions (& converse)
- Functions to read matrix market files in COO or CSR format

### clSPARSE build information
A [Build primer](https://github.com/kknox/clSPARSE/wiki/Build) is available
True in spirit with the other clMath libraries, clSPARSE exports a “C” interface to allow
projects to build wrappers around clSPARSE in any language they need. A great deal
of thought and effort went into designing the API’s to make them less ‘cluttered’
compared to the older clMath libraries. OpenCL state is not explicitly passed
through the API, which enables the library to be forward compatible when users are
ready to switch from OpenCL 1.2 to OpenCL 2.0 _(OpenCL 2.0 support not completely finished)_

### clSPARSE library user documentation
**API documentation** not yet available
The API’s are designed such that users are in control of where input and output
buffers live, and they maintain control of when data transfers to/from device
memory happen, so that there are no performance surprises.

### Google Groups
Two mailing lists have been created for the clMath projects:
Expand All @@ -48,51 +35,64 @@ Two mailing lists have been created for the clMath projects:
- [email protected] - group whose focus is for
developers interested in contributing to the library code itself

### Contributing code
Please refer to and read the [Contributing](CONTRIBUTING.md) document for guidelines on
how to contribute code to this open source project. Code in the
/master branch is considered to be stable and new library releases are made
when commits are merged into /master. Active development and pull-requests should
be made to the /develop branch.
### API semantic versioning
Good software is typically the result of the loop of feedback and iteration;
software interfaces no less so. clSPARSE follows the
[semantic versioning](http://semver.org/) guidelines, and while the major version
number remains '0', the public API should not be considered stable. We release
clSPARSE as beta software (0.y.z) early to the community to elicit feedback and
comment. This comes with the expectation that with feedback, we may incorporate
breaking changes to the API that might require early users to recompile, or rewrite
portions of their code as we iterate on the design.

## Samples
clSPARSE contains a directory of simple [OpenCL samples](./samples) that demonstrate the use
of the API in both C and C++. The [superbuild](http://www.kitware.com/media/html/BuildingExternalProjectsWithCMake2.8.html)
script for clSPARSE also builds the samples as an external project, to demonstrate
how an application would find and link to clSPARSE with cmake.

## Build dependencies
### clSPARSE library documentation
**API documentation** is not yet available, but the samples above give an excellent
starting point to basic library operations.

### Contributing code
Please refer to and read the [Contributing](CONTRIBUTING.md) document for guidelines on
how to contribute code to this open source project. Code in the
/master branch is considered to be stable and new library releases are made
when commits are merged into /master. Active development and pull-requests should
be made to the **/develop** branch.

## Build
clSPARSE is primarily written with C++ using C++11 core features. It does export
a 'C' interface for compatibility with other languages.

### How to build clSPARSE for your platform
A [Build primer](https://github.com/kknox/clSPARSE/wiki/Build) is available on
the wiki, which describes how to use cmake to generate platforms specific build
files

### Compiling for Windows
- Windows® 7/8
- Visual Studio 2013 and above
- CMake 2.8.12 (download from [Kitware](http://www.cmake.org/download/))
- Solution (.sln) or
- Nmake makefiles
- An OpenCL SDK, such as [APP SDK 3.0](http://developer.amd.com/tools-and-sdks/opencl-zone/amd-accelerated-parallel-processing-app-sdk/)
- An OpenCL SDK, such as [APP SDK 3.0](http://developer.amd.com/tools-and-sdks/opencl-zone/amd-accelerated-parallel-processing-app-sdk/)

### Compiling for Linux
- GCC 4.8 and above
- CMake 2.8.12 (install with distro package manager )
- Unix makefiles or
- KDevelop or
- QT Creator
- An OpenCL SDK, such as [APP SDK 3.0](http://developer.amd.com/tools-and-sdks/opencl-zone/amd-accelerated-parallel-processing-app-sdk/)
- An OpenCL SDK, such as [APP SDK 3.0](http://developer.amd.com/tools-and-sdks/opencl-zone/amd-accelerated-parallel-processing-app-sdk/)

### Compiling for Mac OSX
- CMake 2.8.12 (install via [brew](http://brew.sh/))
- Unix makefiles or
- XCode
- An OpenCL SDK (installed via `xcode-select --install`)

### Test infrastructure dependencies
### Bench & Test infrastructure dependencies
- Googletest v1.7
- Boost v1.58

### Benchmark infrastructure dependencies
- Boost v1.58

[API documentation]: http://clmathlibraries.github.io/clSPARSE/
[binary_release]: https://github.com/clMathLibraries/clSPARSE/releases

0 comments on commit f50a20f

Please sign in to comment.