1 unstable release
Uses old Rust 2015
0.1.0 | Dec 4, 2016 |
---|
#74 in #opencl
10KB
145 lines
ocl-algebra
Low Level Linear Algebra Library for OpenCL
goals
- simple low level linear algebra api
- implement an synchron api (copy data to device, math operation, copy result to host and delete data on device)
- todo: implement asynchron api, run multiple math operation without always copying data to/from the device
- library may be useful as alternative backend for pure rust alebra libraries
example
func main() {
// init library
let mut c = new();
// init some matrices
let m0 = Matrix{rows: 2, cols: 2, data: vec![1.0, 2.0, 3.0, 4.0]};
let m1 = Matrix{rows: 2, cols: 1, data: vec![4.0, 5.0]};
/* matrix multiplication
[1 2] * [4] = [14]
[3 4] [5] [32] */
let m = c.mul_matrix_matrix(&m0,&m1);
/* matrix scalar multiplication
[1 2] * 1.5 = [1.5 3]
[3 4] [4.5 6]*/
let m = c.mul_matrix_scalar(&m0,1.5);
}
Development
License
Licensed under either of:
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
“OpenCL and the OpenCL logo are trademarks of Apple Inc. used by permission by Khronos.” “Vulkan and the Vulkan logo are trademarks of the Khronos Group Inc.”
Dependencies
~2.5MB
~39K SLoC