6个版本
0.2.0 | 2023年6月23日 |
---|---|
0.2.0-rc3 | 2023年2月24日 |
0.1.2 | 2022年4月2日 |
#1031 in 硬件支持
31 每月下载量
5.5MB
24K SLoC
mcl-rs
此项目托管MCL Rust绑定的高级包装器。
摘要
此crate为MCL提供高级、Rust友好的绑定。这些绑定的目的是提供一个更用户友好(且更安全)的API,它提供了对低级libmcl-sys API的访问。它为大多数mcl公共函数提供包装器,并试图在编译时提供安全性。然而,由于库依赖于C项目,有些情况下只能在运行时捕获错误,还有一些API目前无法进行检查,因此被标记为不安全(但通过功能标志受到保护)。
构建mcl-rs
所需库/crate
- libmcl-sys及其依赖项
- Clang
- OpenCL
- Autotools
- MCL(手动安装或通过
cargo install mcl_sched
)
- 在Cargo.toml中列出的其他crate
说明
mcl-rs依赖于crate libmcl-sys,它提供MCL C库和这些高级绑定之间的低级绑定。
libmcl-sys
使用clang从MCL
头文件生成低级Rust绑定,因此如果clang不可用,必须将其安装到系统中。
- 安装clang
处理完所有依赖项后,我们可以构建mcl-rs。
cargobuild --release
安装MCL调度器
可以通过以下方式轻松安装MCL调度器
cargo install mcl_sched
注意,如果您已从C源代码手动构建MCL,您将已经在MCL安装目录中拥有mcl_sched
二进制文件。您可以使用手动构建的mcl_sched或通过cargo安装的mcl_sched。
功能标志
我们重新暴露了三个功能标志(来自libmcl-rs),大致对应于底层MCL C库的配置选项
- mcl_debug - 启用底层MCL C库的调试日志输出
- shared_mem - 启用进程间主机共享内存缓冲区 -- 这将启用一些不安全的API
- pocl_extensions - 启用基于进程间设备的共享内存缓冲区,需要已成功安装修补版的POCL 1.8(更多信息请参见https://github.com/pnnl/mcl/tree/dev#using-custom-pocl-extensions)-- 这将启用一些不安全的API
测试
mcl-rs附带一系列单元测试,可以使用以下命令执行
cargo test <test_name>
提醒:执行测试时,MCL调度器应该正在运行。如果您通过cargo安装了mcl_sched,则可以直接调用
mcl_sched
如果您手动构建了mcl,可能需要指定mcl_sched二进制文件的路径
移除测试名称将导致cargo运行所有可用的测试,但是,由于测试会并行运行,可能会造成多个线程同时尝试获取mcl_scheduler shmem对象,这可能会导致失败。
文档
使用cargo doc --open
来构建并打开此crate的文档。
状态
MCL、libmcl-sys和mcl-rs是研究原型,仍在开发中,因此并非所有预期的功能都已实现。
联系方式
如果您有任何关于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. Minos计算库:用于极异构系统的有效并行编程。在2020年第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年。
依赖关系
~4.5–7.5MB
~138K SLoC