3个版本

0.1.2 2024年5月5日
0.1.1 2024年5月5日
0.1.0 2024年5月5日

#229 in 科学

Download history 323/week @ 2024-05-03 17/week @ 2024-05-10 4/week @ 2024-05-17 2/week @ 2024-05-24 6/week @ 2024-07-05 1/week @ 2024-07-12

63 每月下载次数

MIT/Apache

210KB
4.5K SLoC

crates.io docs.rs

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_opttask_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