Crate mcl_rs

source ·
Expand description

mcl-rs

This project hosts the high-level wrappers of the mcl rust bindings.

Summary

This crate provides high-level, rust-friendly bindings for mcl. The purpose of these bindings are to expose a user-friendlier API to what the low-level libmcl-sys API offers. It provides wrappers for all mcl public functions and tries to provide safety at compilation type, however, because of the nature of the library counting on a C project there are cases that it’s only possible to catch errors at runtime.

Structs

  • Represents info of the computing device
  • Represents an initialize MCL environment. When this struct goes out of scope the MCL environment is finalized. Thus, there is no need to explicitly call the equivalent of (c-api) mcl_finit()
  • This structure is used to setup the MCL environment with the given parameters
  • An abstration for container with the computational kernels we want to execute.
  • Represents an MCL registered buffer, which is essentially a pointer to data which exists in device Resident memory. This allows multiple tasks to use the same buffer. Further, we support creating sub-buffers of a registered buffer to alleviate some of the overhead associated with creating new buffers.
  • SharedMemBuffershared_mem or pocl_extensions
    Represents an MCL shared buffer, which is essentially a pointer to data which exists in shared memory. When only the shared_mem feature is turned on this buffer will exist in host shared memory only. If instead the pocl_extensions feature is used, the the buffer will also exist in device shared memory. Note that pocl_extensions requires a patched version of POCL 1.8 to have been succesfully installed (please see https://github.com/pnnl/mcl/tree/dev#using-custom-pocl-extensions for more information).
  • SharedTaskshared_mem or pocl_extensions
  • Represents an MCL task whose kernel has been set but the arguments and target device are missing
  • Represents a data argument for an MCL task along with the use flags (e.g. input, output, access type etc.)
  • Transfer can be used to create a request for data transfer from MCL.

Enums

Constants