#heterogeneous #gpu #fpga #hpc #runtime

app mcl_sched

This crate provides and installable wrapper for the MCL (Minos Compute Library) Scheduler 'mcl_sched'

4 releases

0.1.0 Jun 23, 2023
0.1.0-rc3 Feb 24, 2023
0.1.0-rc Feb 1, 2023

#142 in Hardware support

21 downloads per month

Custom license

22K SLoC

C 21K SLoC // 0.1% comments Automake 521 SLoC // 0.0% comments Rust 293 SLoC // 0.3% comments Shell 172 SLoC // 0.0% comments BASH 43 SLoC C++ 29 SLoC Perl 11 SLoC // 0.5% comments Batch 10 SLoC // 0.3% comments GNU Style Assembly 7 SLoC // 0.4% comments


This crate provides an installable wrapper for the MCL (Minos Compute Library) Scheduler 'mcl_sched'


This is a convenience crate for building and installing the MCL (Minos Compute Library) Scheduler 'mcl_sched'. This can be installed using

cargo install mcl_sched

The installed mcl_sched binary can be used with both C and Rust based MCL applications (although C applications will have likely already built the scheduler manually). Once installed, the scheduler usage is the same as if you built it manually from source.

This wrapper will try to use the system default OpenCL implementation. If not found you will be prompted to set the OCL_PATH_INC and OCL_PATH_LIB environment variables to point the appropriate OpenCL headers and libraries. For complex installations we recommend building MCL manually. Instructions for this can be found at MCL.

Installing mcl_sched

Required libraries/ crates

  • libmcl-sys and its dependencies
    • Clang
    • OpenCL
    • Autotools
    • MCL (either manually installed or via cargo install mcl_sched)
  • Other crates listed in Cargo.toml


mcl_sched depends on the crate libmcl-sys which provides the low-level rust bindings for the C library of MCL

libmcl-sys makes use of clang to generate the low-level rust binding from the MCL header file, so if clang is not available it must be installed to the system.

  1. Install clang

Once all dependencies have been taken care of, we can install mcl_sched.

cargo install mcl_sched


mcl_sched comes with a set of unit tests that can be executed with:



We re expose three feauture flags (from libmcl-rs), losely corresponding to configuration options of the underlying MCL c-library

  1. mcl_debug - enables debug logging output from the underlying MCL c-libary
  2. shared_mem - enables interprocess host shared memory buffers -- this enables a few unsafe APIs
  3. pocl_extensions - enables interprocess device based shared memory buffers, 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) -- this enables a few unsafe APIs


MCL, libmcl-sys, and mcl_sched are research prototypes and still under development, thus not all intended features are yet implemented.


Please, contact Roberto Gioiosa at PNNL (roberto.gioiosa@pnnl.gov) if you have any MCL questions. For Rust related questions please contact Ryan Friese at PNNL (ryan.friese@pnnl.gov)

MCL-Rust Team

Roberto Gioiosa
Ryan Friese
Polykarpos Thomadakis


This project is licensed under the BSD License - see the LICENSE file for details.


IF you wish to cite MCL, please, use the following reference:

  • Roberto Gioiosa, Burcu O. Mutlu, Seyong Lee, Jeffrey S. Vetter, Giulio Picierro, and Marco Cesati. 2020. The Minos Computing Library: efficient parallel programming for extremely heterogeneous systems. In Proceedings of the 13th Annual Workshop on General Purpose Processing using Graphics Processing Unit (GPGPU '20). Association for Computing Machinery, New York, NY, USA, 1–10. DOI:https://doi.org/10.1145/3366428.3380770

Other work that leverage or describe additional MCL features:

  • A. V. Kamatar, R. D. Friese and R. Gioiosa, "Locality-Aware Scheduling for Scalable Heterogeneous Environments," 2020 IEEE/ACM International Workshop on Runtime and Operating Systems for Supercomputers (ROSS), 2020, pp. 50-58, doi:10.1109/ROSS51935.2020.00011.
  • Rizwan Ashraf and Roberto Gioiosa, "Exploring the Use of Novel Spatial Accelerators in Scientific Applications" 2020 ACM/SPEC International Conference on Performance Engineering (ICPE), 2022.


~72K SLoC