1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
//! Provides the generic functionality for a backend-specific implementation of a //! [library][libraries]. //! [libraries]: ../libraries/index.html //! //! A binary defines one or (more often) many operations, which share related functionalities and are //! provided by a specific [library][libraries] such as [Blas][blas]. //! //! A binary needs to be 'built', which is handled by the specific framework implementation of a //! binary representation, and returns initialized operations based on a [library][libraries]. //! //! You are ususally not interacting with a binary itself, but rather use it to construct the //! backend-agnostic operations, which can then be run and parallelized via an //! unified interface - `backend.__name_of_the_operation__`. //! //! ## Development //! //! The funcionality provided here is used to construct specific Coaster binaries, which are //! used to construct the basic computation behavior that come shipped with Coaster. However, it should //! allow you to define and run your own backend-agnostic programs as well. //! //! [blas]: ../libraries/blas/index.html /// Defines the functionality for turning a library into backend-specific, executable operations. pub trait IBinary { // Returns the unique identifier of the Binary. //fn id(&self) -> isize; // Creates a HashMap of available, ready-to-use operations, based on the provided library and // tailored for a framework. //fn create_operations(); }