hal-ml 0.2.0

HAL: a machine learning library that is able to run on Nvidia, OpenCL or CPU BLAS based compute backends. It currently provides stackable classical neural networks, RNN's and soon to be LSTM's. A differentiation of this package is that we are looking to implement RTRL (instead of just BPTT) for the recurrent layers in order to provide a solid framework for online learning. We will also (in the future) be implementing various layers such as unitary RNN's, NTM's and Adaptive Computation time based LSTM's. HAL also comes with the ability to plot and do many basic math operations on arrays.
## Installation
In general you can just install the arrayfire binaries and build this entire project.
This is **only** if you want to build the entire arrayfire coupled with arrayfire-rust and hal.
The following will be for Ubuntu 14.10+.
For other OS's please install all the required dependencies[[linux](https://github.com/arrayfire/arrayfire/wiki/Build-Instructions-for-Linux) /[osx](https://github.com/arrayfire/arrayfire/wiki/Build-Instructions-for-OSX)]

  1. Install Rust if you haven't already [currently only tested on rustc 1.7+] :

  ```bash
  $ curl -sSf https://static.rust-lang.org/rustup.sh | sh
  ```
  2. Install the dependencies:

  ```bash
  $ sudo apt-get install -y build-essential git subversion cmake libfreeimage-dev libatlas3gf-base libatlas-dev libfftw3-dev liblapacke-dev libboost1.55-all-dev libglew-dev libglewmx-dev libglfw3-dev
  ```
  3. Clone the repo with the **submodules**:

  ```bash
  $ git clone --recursive https://github.com/jramapuram/hal
  ```
  4. Modify `build.conf` (located at `arrayfire-rust/build.conf`) to suit your compute device backend (eg: CUDA or openCL, etc).
  5. Build & run example:

  ```bash
  $ cargo build
  $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<path to libaf(cuda/cl/cpu).(so/dylib)>
  $ cargo run --example perceptron
  ```
#### Example CUDA Ubuntu 14.10 `build.conf`
```json
{
    "use_backend": "cuda",

    "use_lib": false,
    "lib_dir": "/usr/local/lib",
    "inc_dir": "/usr/local/include",

    "build_type": "Release",
    "build_threads": "4",
    "build_cuda": "ON",
    "build_opencl": "OFF",
    "build_cpu": "ON",
    "build_examples": "OFF",
    "build_test": "OFF",
    "build_graphics": "ON",

    "glew_static": "OFF",
    "freeimage_type": "DYNAMIC",
    "cpu_fft_type": "FFTW",
    "cpu_blas_type": "LAPACKE",
    "cpu_lapack_type": "LAPACKE",

    "freeimage_dir": "",
    "fftw_dir": "",
    "acml_dir": "",
    "mkl_dir": "",
    "lapacke_dir": "",
    "glew_dir": "",
    "glfw_dir": "",
    "boost_dir": "",

    "cuda_sdk": "/usr/local/cuda",
    "opencl_sdk": "/usr",
    "sdk_lib_dir": "lib64"
}
```
#### Example CUDA OS X  `build.conf`
```json
{
    "use_backend": "cuda",

    "use_lib": false,
    "lib_dir": "/usr/local/lib",
    "inc_dir": "/usr/local/include",

    "build_type": "Release",
    "build_threads": "4",
    "build_cuda": "ON",
    "build_opencl": "OFF",
    "build_cpu": "OFF",
    "build_examples": "OFF",
    "build_test": "OFF",
    "build_graphics": "ON",

    "glew_static": "OFF",
    "freeimage_type": "DYNAMIC",
    "cpu_fft_type": "FFTW",
    "cpu_blas_type": "LAPACKE",
    "cpu_lapack_type": "LAPACKE",

    "freeimage_dir": "",
    "fftw_dir": "",
    "acml_dir": "",
    "mkl_dir": "",
    "lapacke_dir": "",
    "glew_dir": "",
    "glfw_dir": "",
    "boost_dir": "",

    "cuda_sdk": "/usr/local/cuda",
    "opencl_sdk": "/usr",
    "sdk_lib_dir": "lib"
}
```

#### Example OpenCL OSX `build.conf`
```json
{
    "use_backend": "opencl",

    "use_lib": false,
    "lib_dir": "/usr/local/lib",
    "inc_dir": "/usr/local/include",

    "build_type": "Release",
    "build_threads": "4",
    "build_cuda": "OFF",
    "build_opencl": "ON",
    "build_cpu": "OFF",
    "build_examples": "OFF",
    "build_test": "OFF",
    "build_graphics": "ON",

    "glew_static": "OFF",
    "freeimage_type": "DYNAMIC",
    "cpu_fft_type": "FFTW",
    "cpu_blas_type": "LAPACKE",
    "cpu_lapack_type": "LAPACKE",

    "freeimage_dir": "",
    "fftw_dir": "",
    "acml_dir": "",
    "mkl_dir": "",
    "lapacke_dir": "",
    "glew_dir": "",
    "glfw_dir": "",
    "boost_dir": "",

    "cuda_sdk": "/usr/local/cuda",
    "opencl_sdk": "/usr",
    "sdk_lib_dir": "lib"
}
```