arrayfire/lib.rs
1//! ArrayFire is a high performance software library for parallel computing with an easy-to-use API.
2//! ArrayFire abstracts away much of the details of programming parallel architectures by providing
3//! a high-level container object, the [Array](./struct.Array.html), that represents data stored on
4//! a CPU, GPU, FPGA, or other type of accelerator. This abstraction permits developers to write
5//! massively parallel applications in a high-level language where they need not be concerned about
6//! low-level optimizations that are frequently required to achieve high throughput on most parallel
7//! architectures.
8
9//! This crate provides Rust bindings for the ArrayFire library. Given below table shows the rust
10//! bindings compatability with ArrayFire upstream. If you find any bugs, please report them on
11//! [github](https://github.com/arrayfire/arrayfire-rust/issues).
12//!
13//! | arrayfire-rust crate | ArrayFire Upstream |
14//! |:--------------------:|:------------------:|
15//! | M.m.p1 | M.m.p2 |
16//!
17//! Only, Major(M) & Minor(m) version numbers need to match. *p1* and *p2* are patch/fix updates
18//! for `arrayfire-rust` & `ArrayFire` respectively, and they don't need to match.
19//!
20//! Please go through our [tutorials](http://arrayfire.org/arrayfire-rust/book/index.html) book for
21//! more explanations on how to use ArrayFire to speedup your code.
22
23#![doc(
24 html_logo_url = "http://www.arrayfire.com/logos/arrayfire_logo_symbol.png",
25 html_favicon_url = "http://www.rust-lang.org/favicon.ico",
26 html_root_url = "http://arrayfire.org/arrayfire-rust/arrayfire/index.html"
27)]
28#![warn(missing_docs)]
29#![allow(non_camel_case_types)]
30
31#[macro_use]
32extern crate lazy_static;
33
34pub use crate::core::*;
35mod core;
36
37#[cfg(feature = "algorithm")]
38pub use crate::algorithm::*;
39#[cfg(feature = "algorithm")]
40mod algorithm;
41
42#[cfg(feature = "blas")]
43pub use crate::blas::*;
44#[cfg(feature = "blas")]
45mod blas;
46
47#[cfg(feature = "graphics")]
48pub use crate::graphics::Window;
49#[cfg(feature = "graphics")]
50mod graphics;
51
52#[cfg(feature = "image")]
53pub use crate::image::*;
54#[cfg(feature = "image")]
55mod image;
56
57#[cfg(feature = "lapack")]
58pub use crate::lapack::*;
59#[cfg(feature = "lapack")]
60mod lapack;
61
62#[cfg(feature = "ml")]
63pub use crate::ml::*;
64#[cfg(feature = "ml")]
65mod ml;
66
67#[cfg(feature = "signal")]
68pub use crate::signal::*;
69#[cfg(feature = "signal")]
70mod signal;
71
72#[cfg(feature = "sparse")]
73pub use crate::sparse::*;
74#[cfg(feature = "sparse")]
75mod sparse;
76
77#[cfg(feature = "statistics")]
78pub use crate::statistics::*;
79#[cfg(feature = "statistics")]
80mod statistics;
81
82#[cfg(feature = "vision")]
83pub use crate::vision::*;
84#[cfg(feature = "vision")]
85mod vision;
86
87// headers that are not exposed through rust wrapper are given follows:
88// compatible.h
89// constants.h
90// complex.h
91// cuda.h
92// opencl.h