#hpc #gpu #fpga #heterogeneous #run-time

sys libmcl-sys

本系统包为Rust语言提供对Minos计算库(MCL)的绑定

7个版本

0.1.2 2023年6月23日
0.1.2-rc32023年2月24日
0.1.1 2022年4月2日

#349 in 科学

Download history 5/week @ 2024-05-21 1/week @ 2024-06-18

每月75次下载
用于 2 包

自定义许可证

1MB
22K SLoC

C 21K SLoC // 0.1% comments Automake 522 SLoC // 0.0% comments Rust 215 SLoC // 0.4% comments Shell 173 SLoC // 0.0% comments M4 84 SLoC // 0.6% comments BASH 44 SLoC C++ 30 SLoC Perl 12 SLoC // 0.5% comments Batch 11 SLoC // 0.3% comments GNU Style Assembly 8 SLoC // 0.4% comments

包含(神秘的autoconf代码,9KB)mcl/deps/libatomic_ops/configure.ac,(神秘的autoconf代码,6KB)mcl/configure.ac

libmcl-sys

此系统包通过使用Bindgen提供对Minos计算库(MCL)的Rust语言绑定。强烈建议您不要直接使用libmcl-sys,而是使用更高层(且更安全)的mcl-rs

构建需求

  • Rust
  • Cargo
  • Clang
  • OpenCL
  • Autotools
  • MCL(手动安装或通过cargo install mcl_sched安装)

如何构建(在Linux上测试)且没有先构建MCL

  1. 将环境变量OCL_PATH_INCOCL_PATH_LIB设置为OpenCL的includelib(或lib64)目录的路径。注意:如果OpenCL在系统目录中,这可能不需要

  2. 安装mcl_sched

    cargo install mcl_sched
    
  3. 使用Cargo构建

    cargo build --release
    

如何构建(在Linux上测试)且手动构建了MCL

  1. 将环境变量MCL_PATH设置为MCL安装目录的路径。例如,在bash中使用

    export MCL_PATH=/path/to/mcl/install/
    

    Cargo将根据该路径尝试找到lib/include/目录。

  2. 将环境变量OCL_PATH_INCOCL_PATH_LIB设置为OpenCL的includelib(或lib64)目录的路径。

    注意:如果OpenCL在系统目录中,这可能不需要

  3. 使用Cargo构建

    cargo build --release
    

    这将在target/release/目录中产生一个.rlib文件。

如何测试

libmcl-sys附带一组单元测试,可以通过运行来执行

 cargo test --release

提醒:在执行测试时,应运行MCL调度程序。如果您通过cargo安装了mcl_sched,则可以直接调用。

 mcl_sched

如果您手动构建了mcl,可能需要指定mcl_sched二进制文件的路径。

功能标志

我们公开了三个功能标志,大致对应于底层MCL C库的配置选项。

  1. mcl_debug - 启用底层C库的调试日志输出
  2. shared_mem - 启用进程间主机共享内存缓冲区
  3. pocl_extensions - 启用基于设备的进程间共享内存缓冲区,需要已成功安装修补版的POCL 1.8(请参阅https://github.com/pnnl/mcl/tree/dev#using-custom-pocl-extensions以获取更多信息)

状态

MCL(以及libmcl-sys)是一个研究原型,仍在开发中,因此并非所有预期的功能都已实现。

联系方式

如果您有任何关于MCL的问题,请联系PNNL的Roberto Gioiosa([email protected])。有关Rust相关问题的咨询,请联系PNNL的Ryan Friese([email protected]

MCL-Rust团队

Roberto Gioiosa
Ryan Friese
Polykarpos Thomadakis

许可证

本项目受BSD许可证的许可 - 请参阅LICENSE文件以获取详细信息。

参考文献

如果您想引用MCL,请使用以下参考文献

  • Roberto Gioiosa,Burcu O. Mutlu,Seyong Lee,Jeffrey S. Vetter,Giulio Picierro,和Marco Cesati. 2020. The Minos Computing Library:针对极端异构系统的有效并行编程。在13届年度通用图形处理单元(GPGPU '20)研讨会论文集中。纽约,纽约,美国,ACM计算机协会,第1-10页。DOI:https://doi.org/10.1145/3366428.3380770

其他利用或描述MCL其他功能的成果

  • A. V. Kamatar,R. D. Friese和R. Gioiosa,“针对可扩展异构环境的局部性感知调度”,2020年IEEE/ACM国际超级计算机运行时和操作系统研讨会(ROSS),2020年,第50-58页,doi:10.1109/ROSS51935.2020.00011。
  • Rizwan Ashraf和Roberto Gioiosa,“探索在科学应用中使用新型空间加速器的用途”,2022年ACM/SPEC国际性能工程会议(ICPE),2022年。

无运行时依赖

~0–2MB
~37K SLoC