3个版本
0.1.2 | 2024年5月5日 |
---|---|
0.1.1 | 2024年5月5日 |
0.1.0 | 2024年5月5日 |
#229 in 科学
63 每月下载次数
210KB
4.5K SLoC
slurm-spank-compat-rs
用于编写Slurm SPANK插件的Rust绑定
兼容
- 20.11
- 21.08
- 22.05
- 23.02
- 23.11
感谢
lib.rs
:
用于编写Slurm SPANK插件的Rust绑定
介绍
此crate允许使用Rust编写Slurm SPANK插件。有关通过SPANK可用的功能,请参阅官方SPANK文档
。
要使用此crate创建SPANK插件,您需要定义一个结构体,为其实现Plugin
特质,并使用SPANK_PLUGIN!
宏将其作为SPANK插件提供。
Plugin特质的每个方法对应于由SPANK API定义的回调,如init_post_opt
、task_post_fork
等。这些方法具有默认实现,这意味着您只需实现与您的插件相关的回调。
每个回调方法都传递一个SpankHandle
引用,允许通过SPANK API与Slurm交互。
当从回调返回 [Err
] 时,默认情况下将显示错误消息并将其记录,具体取决于上下文。此行为可以通过report_error
方法覆盖。还配置了一个默认的Subscriber
,以简化在SPANK日志设施(如以下示例所示)中使用tracing
crate进行日志记录和错误报告。这可以通过setup
方法覆盖。
示例:hello.so
以下示例实现了一个简单的“Hello World”插件。更完整的示例可以在仓库的示例目录中找到,展示了如何实现与C SPANK API中提供的相同renice插件。
以下Cargo.toml可以用来构建此示例插件
[package]
name = "slurm-spank-hello"
version = "0.1.0"
edition = "2021"
[lib]
crate-type = ["cdylib"]
[dependencies]
eyre = "0.6.8"
tracing = "0.1.37"
slurm-spank-compat = "0.1"
依赖项
~5.5–8.5MB
~144K SLoC