Spaces:
Runtime error
Runtime error
use std::fmt; | |
use std::process::Command; | |
pub(crate) struct Env { | |
cargo_target: &'static str, | |
cargo_version: &'static str, | |
git_sha: &'static str, | |
docker_label: &'static str, | |
nvidia_env: String, | |
} | |
impl Env { | |
pub fn new() -> Self { | |
let nvidia_env = nvidia_smi(); | |
Self { | |
nvidia_env: nvidia_env.unwrap_or("N/A".to_string()), | |
cargo_target: env!("VERGEN_CARGO_TARGET_TRIPLE"), | |
cargo_version: env!("VERGEN_RUSTC_SEMVER"), | |
git_sha: option_env!("VERGEN_GIT_SHA").unwrap_or("N/A"), | |
docker_label: option_env!("DOCKER_LABEL").unwrap_or("N/A"), | |
} | |
} | |
} | |
impl fmt::Display for Env { | |
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { | |
writeln!(f, "Runtime environment:")?; | |
writeln!(f, "Target: {}", self.cargo_target)?; | |
writeln!(f, "Cargo version: {}", self.cargo_version)?; | |
writeln!(f, "Commit sha: {}", self.git_sha)?; | |
writeln!(f, "Docker label: {}", self.docker_label)?; | |
write!(f, "nvidia-smi:\n{}", self.nvidia_env)?; | |
Ok(()) | |
} | |
} | |
fn nvidia_smi() -> Option<String> { | |
let output = Command::new("nvidia-smi").output().ok()?; | |
let nvidia_smi = String::from_utf8(output.stdout).ok()?; | |
let output = nvidia_smi.replace('\n', "\n "); | |
Some(output.trim().to_string()) | |
} | |