ai-hwaccel 1.1.0

Universal AI hardware accelerator detection, capability querying, and workload planning for Rust
Documentation
//! MediaTek APU (MDLA — MediaTek Deep Learning Accelerator) detection via sysfs and `/dev`.

use std::path::Path;

use tracing::debug;

use crate::error::DetectionError;
use crate::hardware::AcceleratorType;
use crate::profile::AcceleratorProfile;

/// Default memory: 2 GB shared.
const DEFAULT_MEMORY_BYTES: u64 = 2 * 1024 * 1024 * 1024;

pub(crate) fn detect_mediatek_apu(
    profiles: &mut Vec<AcceleratorProfile>,
    _warnings: &mut Vec<DetectionError>,
) {
    if Path::new("/sys/class/misc/mtk_apu").exists() {
        debug!(
            device_id = 0,
            memory_mb = 2048,
            "MediaTek APU detected via sysfs"
        );
        profiles.push(AcceleratorProfile {
            accelerator: AcceleratorType::MediaTekApu { device_id: 0 },
            available: true,
            memory_bytes: DEFAULT_MEMORY_BYTES,
            compute_capability: Some("MDLA".into()),
            driver_version: None,
            device_name: None,
            memory_bandwidth_gbps: None,
            memory_used_bytes: None,
            memory_free_bytes: None,
            pcie_bandwidth_gbps: None,
            numa_node: None,
            temperature_c: None,
            power_watts: None,
            gpu_utilization_percent: None,
        });
        return;
    }

    if super::has_dev_device("mtk_mdla") {
        debug!(
            device_id = 0,
            memory_mb = 2048,
            "MediaTek APU detected via /dev"
        );
        profiles.push(AcceleratorProfile {
            accelerator: AcceleratorType::MediaTekApu { device_id: 0 },
            available: true,
            memory_bytes: DEFAULT_MEMORY_BYTES,
            compute_capability: Some("MDLA".into()),
            ..Default::default()
        });
    }
}