Code Monkey home page Code Monkey logo

coaster-blas's Introduction

THIS REPOSITORY GOT MERGED INTO JUICE
PLEASE CONTINUE HERE JUICE / COASTER-BLAS


coaster-BLAS • Join the chat at https://gitter.im/spearow/coaster-nn Build Status Crates.io License

coaster-BLAS provides full BLAS support for Coaster, so you can use Basic Linear Algebra Subprograms on servers, desktops or mobiles, GPUs, FPGAs or CPUS, without carrying about OpenCL or CUDA support on the machine.

coaster-BLAS was started as collenchyma-BLAS at Autumn for the Rust Machine Intelligence Framework Leaf.

For more information,

Getting Started

If you're using Cargo, just add coaster-BLAS to your Cargo.toml:

[dependencies]
coaster = "0.4"
coaster-blas = "0.2.0"

If you're using Cargo Edit, you can call:

$ cargo add coaster-blas

Provided Operations

This Plugins provides the following operations to the Coaster Backend. A - means not yet implemented. More information can be found in the Documentation.

Operation CUDA OpenCL Native
Full Level 1 cuBLAS - rblas
Level 2 - - -
Level 3
GEMM cuBLAS - rblas

Note that blas does not have all methods and thus fails to link, use CARGO_BLAS=openblas to compile for native

Contributing

Want to contribute? Awesome! We have instructions to help you get started contributing code or documentation. And high priority issues, that we could need your help with.

We have a mostly real-time collaboration culture and happens here on Github and on the Coaster Gitter Channel. You can also reach out to the Maintainers {@drahnr}.

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 below, without any additional terms or conditions.

Changelog

You can find the release history in the root file CHANGELOG.md.

A changelog is a log or record of all the changes made to a project, such as a website or software project, usually including such records as bug fixes, new features, etc. - Wikipedia

We are using Clog, the Rust tool for auto-generating CHANGELOG files.

License

Licensed under either of

at your option.

coaster-blas's People

Contributors

alexandermorozov avatar drahnr avatar hobofan avatar homu avatar johnnyman727 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

coaster-blas's Issues

cublas tests fail

They are not failing all the time, sometimes the first few pass, sometimes they all pass.

feature: Level 1 BLAS for OpenCL

Here is a list of CBLAS functions as given in the GNU Scientific Library:

  • Function: float sdsdot (const int N, const float alpha, const float *x, const int incx, const float *y, const int incy)
  • Function: double dsdot (const int N, const float *x, const int incx, const float *y, const int incy)
  • Function: float sdot (const int N, const float *x, const int incx, const float *y, const int incy)
  • Function: double ddot (const int N, const double *x, const int incx, const double *y, const int incy)
  • Function: void cdotu_sub (const int N, const void *x, const int incx, const void *y, const int incy, void *dotu)
  • Function: void cdotc_sub (const int N, const void *x, const int incx, const void *y, const int incy, void *dotc)
  • Function: void zdotu_sub (const int N, const void *x, const int incx, const void *y, const int incy, void *dotu)
  • Function: void zdotc_sub (const int N, const void *x, const int incx, const void *y, const int incy, void *dotc)
  • Function: float snrm2 (const int N, const float *x, const int incx)
  • Function: float sasum (const int N, const float *x, const int incx)
  • Function: double dnrm2 (const int N, const double *x, const int incx)
  • Function: double dasum (const int N, const double *x, const int incx)
  • Function: float scnrm2 (const int N, const void *x, const int incx)
  • Function: float scasum (const int N, const void *x, const int incx)
  • Function: double dznrm2 (const int N, const void *x, const int incx)
  • Function: double dzasum (const int N, const void *x, const int incx)
  • Function: CBLAS_INDEX isamax (const int N, const float *x, const int incx)
  • Function: CBLAS_INDEX idamax (const int N, const double *x, const int incx)
  • Function: CBLAS_INDEX icamax (const int N, const void *x, const int incx)
  • Function: CBLAS_INDEX izamax (const int N, const void *x, const int incx)
  • Function: void sswap (const int N, float *x, const int incx, float *y, const int incy)
  • Function: void scopy (const int N, const float *x, const int incx, float *y, const int incy)
  • Function: void saxpy (const int N, const float alpha, const float *x, const int incx, float *y, const int incy)
  • Function: void dswap (const int N, double *x, const int incx, double *y, const int incy)
  • Function: void dcopy (const int N, const double *x, const int incx, double *y, const int incy)
  • Function: void daxpy (const int N, const double alpha, const double *x, const int incx, double *y, const int incy)
  • Function: void cswap (const int N, void *x, const int incx, void *y, const int incy)
  • Function: void ccopy (const int N, const void *x, const int incx, void *y, const int incy)
  • Function: void caxpy (const int N, const void *alpha, const void *x, const int incx, void *y, const int incy)
  • Function: void zswap (const int N, void *x, const int incx, void *y, const int incy)
  • Function: void zcopy (const int N, const void *x, const int incx, void *y, const int incy)
  • Function: void zaxpy (const int N, const void *alpha, const void *x, const int incx, void *y, const int incy)
  • Function: void srotg (float *a, float *b, float *c, float *s)
  • Function: void srotmg (float *d1, float *d2, float *b1, const float b2, float *P)
  • Function: void srot (const int N, float *x, const int incx, float *y, const int incy, const float c, const float s)
  • Function: void srotm (const int N, float *x, const int incx, float *y, const int incy, const float *P)
  • Function: void drotg (double *a, double *b, double *c, double *s)
  • Function: void drotmg (double *d1, double *d2, double *b1, const double b2, double *P)
  • Function: void drot (const int N, double *x, const int incx, double *y, const int incy, const double c, const double s)
  • Function: void drotm (const int N, double *x, const int incx, double *y, const int incy, const double *P)
  • Function: void sscal (const int N, const float alpha, float *x, const int incx)
  • Function: void dscal (const int N, const double alpha, double *x, const int incx)
  • Function: void cscal (const int N, const void *alpha, void *x, const int incx)
  • Function: void zscal (const int N, const void *alpha, void *x, const int incx)
  • Function: void csscal (const int N, const float alpha, void *x, const int incx)
  • Function: void zdscal (const int N, const double alpha, void *x, const int incx)

error if compute capability < 3.5

Since the minimal compute capbility for CUBLAS is 3.5, the user should best be shown a clear error
if the GPU compute capability is < 3.5

building with `cuda` feature hits `rblas` resolve error

When building juice-examples with cargo build --no-default-features --features cuda, I get an error

error[E0433]: failed to resolve. Maybe a missing `extern crate rblas;`?
  --> /home/erin/.cargo/git/checkouts/coaster-blas-c027954122df0449/2a8f63c/src/transpose.rs:20:33
   |
20 |     pub fn to_rblas(&self) -> ::rblas::attribute::Transpose {
   |                                 ^^^^^ Maybe a missing `extern crate rblas;`?
// etc ... //

I traced this back to the native feature being disabled when I pass these options - and thus this line being compiled out - but this function still trying to reference ::rblas.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.