#![cfg_attr(coverage_nightly, coverage(off))]
#![allow(clippy::too_many_arguments)]
#![allow(clippy::field_reassign_with_default)]
#![allow(clippy::useless_format)]
#![allow(clippy::single_char_add_str)]
#![allow(clippy::collapsible_if)]
#![allow(clippy::trivial_regex)]
#![allow(clippy::double_must_use)]
#![allow(clippy::wildcard_in_or_patterns)]
#![allow(clippy::unused_enumerate_index)]
use serde::{Deserialize, Serialize};
use std::path::Path;
pub use super::cuda_simd_defects::{DefectClass, DefectSeverity, DefectTaxonomy};
pub use super::cuda_simd_scores::{
CudaTdgGrade, FalsifiabilityScore, GpuSimdSpecificScore, HistoricalIntegrityScore, PopperScore,
ReproducibilityScore, StatisticalRigorScore, TransparencyScore,
};
pub use super::cuda_simd_results::{
AccessPattern, BarrierIssue, BarrierSafetyResult, CoalescingResult, CudaSimdTdgResult,
DetectedDefect, KaizenMetrics, MemoryAccessIssue, TileDimensionResult, TileIssue,
};
#[derive(Debug, Clone)]
pub struct CudaSimdAnalyzer {
taxonomy: DefectTaxonomy,
config: CudaSimdConfig,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CudaSimdConfig {
pub min_score: f64,
pub fail_on_p0: bool,
pub analyze_simd: bool,
pub analyze_wgpu: bool,
pub shared_memory_limit: usize,
pub register_limit: usize,
}
impl CudaSimdConfig {
#[must_use]
pub fn new() -> Self {
Self {
min_score: 85.0,
fail_on_p0: true,
analyze_simd: true,
analyze_wgpu: true,
shared_memory_limit: 49152, register_limit: 64,
}
}
}
impl Default for CudaSimdAnalyzer {
fn default() -> Self {
Self::new()
}
}
#[derive(Debug, Default)]
struct RustProjectPatterns {
has_cargo_lock: bool,
has_rust_toolchain: bool,
has_criterion_benches: bool,
has_github_ci: bool,
has_proptest_regressions: bool,
has_changelog: bool,
has_golden_traces: bool,
has_safety_comments: bool,
has_miri_config: bool,
}
include!("analyzer_core.rs");
include!("detection.rs");
include!("scoring.rs");
#[derive(Debug, Clone, Default)]
struct FileAnalysis {
cuda_files: usize,
simd_files: usize,
wgpu_files: usize,
defects: Vec<DetectedDefect>,
barrier_safety: BarrierSafetyResult,
coalescing: CoalescingResult,
}
#[cfg(test)]
include!("coverage_gap_tests.rs");