Coder Social home page Coder Social logo

aml's Introduction

AML - Accelerated Matrix Library

AML is a C++ header-only matrix library that makes it super easy to write high-performance Linear Algebra code for both CPU and GPU platforms. Its goal is to provide the full performance of a BLAS and cuBLAS libraries, while making it as simple to use as higher-level languages and frameworks such as MATLAB and numpy. Its syntax should feel intutitive for anyone familiar with MATLAB.

At the core of AML is the N-dimensional array class aml::Array<T, N>, with the 1D and 2D specializations aml::Vector<T> and aml::Matrix<T>.

Some reasons to use AML:

  • Switching between CPU and GPU is trivial. Simply instantiate your array on the CPU or GPU and AML will take care of making sure your code is executed on the right device.
  • Operations can be expressed elegantly in vector form, such as x + y or max(x, y), and will be lazily evaluated.
  • It takes care of memory management.

Usage

AML aims to be as transparent as possible. This means two things

  • Before calling any math-heavy functions, you need to initialize a handle and pass it around (the handle primarily carries other CUDA handles)
  • Functions never return new arrays, you always need to initialize them manually

Example

Vectorized code

#include <assert.h>

#include <aml/aml.h>

int main() {
  // Setup
  aml::Handle h;
  h.init();

  auto x = aml::make_array({3, 4});
  auto y = aml::make_array({1, 8});
  auto z = aml::make_array({2, 1});
  aml::eval(h, z, aml::max(x, y) * z);
  assert(z.data()[0] == 6 && z.data()[1] == 8);

  // Teardown
  h.destroy();
}

aml's People

Contributors

foges avatar

Watchers

 avatar

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.