You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+36-20Lines changed: 36 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,12 +11,26 @@ an OpenCL™ library implementing Sparse linear algebra routines. This proj
11
11
a collaboration between [AMD Inc.](http://www.amd.com/) and
12
12
[Vratis Ltd.](http://www.vratis.com/).
13
13
14
-
### What's new in clSPARSE **v0.8**
15
-
- New single precision SpM-SpM (SpGEMM) function
16
-
- Optimizations to the sparse matrix conversion routines
17
-
-[API documentation](http://clmathlibraries.github.io/clSPARSE/) available
18
-
- SpM-dV routines now provide [higher precision accuracy] (https://github.com/clMathLibraries/clSPARSE/wiki/Precision)
19
-
- Various bug fixes integrated
14
+
### What's new in clSPARSE **v0.10**
15
+
**This release introduces breaking API changes from the prior version**. clSPARSE is still in a beta phase, and we may need to change the API at times to increase maintainability or fix design issues. A few changes are introduced to more closely follow the recently published [Cpp Core Guidelines](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines.html), a strong candidate to be the coding guidelines to be used in clSPARSE. Changes are noted below.
16
+
- The API to create meta data for a csr encoded sparse matrix has changed. This is an attempt to hide the implementation details of how meta data is stored from the user. This allows the library freedom to change and iterate meta data without breaking clients.
17
+
-`clsparseCsrMetaCompute()` renamed to `clsparseCsrMetaCreate()`, to more intuitively pair with the
18
+
- New API `clsparseCsrMetaDelete()`
19
+
- A few routines changed pure 'out' parameters to be returned on the stack as structs<sup>[1](#return-tuple)</sup>
20
+
-`clsparseCreateControl()`
21
+
-`clsparseGetEvent()`
22
+
-`clsparseCreateSolverControl()`
23
+
-`clsparseCsrMetaSize()`
24
+
- A new index type has been introduced `clsparseIdx_t` to abstract the size of an index from the library interface; the only choice currently is 4 bytes. If users use this datatype for indices in their code, changing to 8-byte indices in the future should only be a recompile.
25
+
- The names of member variables in our public structs have been renamed for consistency. Before, our member variables was not consistent with camel case and underscore naming. Member variables are now standardized to use underscores, but we keep camel casing for function and struct names<sup>[2](#consistent-naming)</sup>
26
+
-`colIndices` to `col_indices`
27
+
-`rowIndices` to `row_indices`
28
+
-`rowOffsets` to `row_pointer` (renamed to pointer to remove confusion with buffer offsets for cl1.2)
29
+
-`offValues` to `off_values`
30
+
-`offColInd` to `off_col_indices`
31
+
-`offRowOff` to `off_row_pointer`
32
+
-`offValues` to `off_values`
33
+
- All samples have been changed to compile with the above changes.
20
34
21
35
22
36
## clSPARSE features
@@ -34,7 +48,7 @@ projects to build wrappers around clSPARSE in any language they need. A great d
34
48
of thought and effort went into designing the API’s to make them less ‘cluttered’
35
49
compared to the older clMath libraries. OpenCL state is not explicitly passed
36
50
through the API, which enables the library to be forward compatible when users are
37
-
ready to switch from OpenCL 1.2 to OpenCL 2.0 <sup>[1](#opencl-2)</sup>
51
+
ready to switch from OpenCL 1.2 to OpenCL 2.0 <sup>[3](#opencl-2)</sup>
38
52
39
53
### Google Groups
40
54
Two mailing lists have been created for the clMath projects:
@@ -46,23 +60,27 @@ Two mailing lists have been created for the clMath projects:
46
60
developers interested in contributing to the library code itself
47
61
48
62
### API semantic versioning
49
-
Good software is typically the result of the loop of feedback and iteration;
50
-
software interfaces no less so. clSPARSE follows the
63
+
Good software is typically the result of iteration and feedback. clSPARSE follows the
51
64
[semantic versioning](http://semver.org/) guidelines, and while the major version
52
65
number remains '0', the public API should not be considered stable. We release
53
66
clSPARSE as beta software (0.y.z) early to the community to elicit feedback and
54
67
comment. This comes with the expectation that with feedback, we may incorporate
55
68
breaking changes to the API that might require early users to recompile, or rewrite
56
69
portions of their code as we iterate on the design.
57
70
71
+
## clSPARSE Wiki
72
+
The [project wiki](https://github.com/clMathLibraries/clSPARSE/wiki) contains helpful documentation.
73
+
A [build primer](https://github.com/clMathLibraries/clSPARSE/wiki/Build) is available,
74
+
which describes how to use cmake to generate platforms specific build files
75
+
58
76
## Samples
59
77
clSPARSE contains a directory of simple [OpenCL samples](./samples) that demonstrate the use
60
78
of the API in both C and C++. The [superbuild](http://www.kitware.com/media/html/BuildingExternalProjectsWithCMake2.8.html)
61
79
script for clSPARSE also builds the samples as an external project, to demonstrate
62
80
how an application would find and link to clSPARSE with cmake.
63
81
64
82
### clSPARSE library documentation
65
-
**API documentation** is now available http://clmathlibraries.github.io/clSPARSE/. The included samples will give an excellent
83
+
**API documentation** is available at http://clmathlibraries.github.io/clSPARSE/. The samples give an excellent
66
84
starting point to basic library operations.
67
85
68
86
### Contributing code
@@ -72,14 +90,8 @@ how to contribute code to this open source project. Code in the
72
90
when commits are merged into /master. Active development and pull-requests should
73
91
be made to the **develop** branch.
74
92
75
-
## Build
76
-
clSPARSE is primarily written with C++ using C++11 core features. It does export
77
-
a 'C' interface for compatibility with other languages.
78
-
79
-
### How to build clSPARSE for your platform
80
-
A [Build primer](https://github.com/clMathLibraries/clSPARSE/wiki/Build) is available on
81
-
the wiki, which describes how to use cmake to generate platforms specific build
82
-
files
93
+
## License
94
+
clSPARSE is licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0)
83
95
84
96
### Compiling for Windows
85
97
- Windows® 7/8
@@ -107,5 +119,9 @@ files
107
119
- Googletest v1.7
108
120
- Boost v1.58
109
121
110
-
## Clarifications
111
-
<aname="opencl-2">[1]</a>: OpenCL 2.0 support is not yet fully implemented; only the interfaces have been designed
122
+
## Footnotes
123
+
<aname="return-tuple">[1]</a>: Changed to reflect CppCoreGuidelines: [F.21](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines.html#a-namerf-out-multia-f21-to-return-multiple-out-values-prefer-returning-a-tuple-or-struct)
124
+
125
+
<aname="consistent-naming">[2]</a>: Changed to reflect CppCoreGuidelines: [NL.8](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines.html#a-namerl-namea-nl8-use-a-consistent-naming-style)
126
+
127
+
<aname="opencl-2">[3]</a>: OpenCL 2.0 support is not yet fully implemented; only the interfaces have been designed
0 commit comments