tenflowers-core 0.1.1

Core tensor operations and execution engine for TenfloweRS
Documentation
//! Tests for GPU tensor manipulation operations

#[cfg(test)]
mod ultra_performance_tests {
    #[test]
    fn test_ultra_simd_enhancements() {
        // Test SciRS2 SIMD integration
        let input_shape = [8, 16];
        let axes = [1, 0];
        let expected_elements = input_shape.iter().product::<usize>();

        assert_eq!(expected_elements, 128);
        assert_eq!(axes.len(), input_shape.len());
    }

    #[test]
    fn test_kernel_fusion_memory_optimization() {
        // Verify memory optimization benefits
        let intermediate_shape = [32, 16];
        let final_shape = [16, 32];
        let element_count = intermediate_shape.iter().product::<usize>();

        assert_eq!(element_count, final_shape.iter().product::<usize>());

        let memory_saved = element_count * std::mem::size_of::<f32>();
        assert!(memory_saved == 2048); // 512 elements * 4 bytes
    }

    #[test]
    fn test_bandwidth_optimization_scaling() {
        // Test bandwidth optimization for different tensor sizes
        let small_tensor = 1024; // 1K elements
        let medium_tensor = 1048576; // 1M elements
        let large_tensor = 67108864; // 64M elements

        let small_bytes = small_tensor * 4;
        let medium_bytes = medium_tensor * 4;
        let large_bytes = large_tensor * 4;

        assert!(small_bytes < medium_bytes);
        assert!(medium_bytes < large_bytes);
        assert!(large_bytes >= 256 * 1024 * 1024); // >= 256MB
    }

    #[test]
    fn test_zero_copy_validation() {
        // Test comprehensive zero-copy reshape validation
        let test_cases = vec![
            (vec![24], vec![4, 6], true),
            (vec![12, 4], vec![8, 6], true),
            (vec![10], vec![2, 6], false), // Different total elements
        ];

        for (original, reshaped, should_succeed) in test_cases {
            let original_elements = original.iter().product::<usize>();
            let reshaped_elements = reshaped.iter().product::<usize>();

            assert_eq!(original_elements == reshaped_elements, should_succeed);
        }
    }
}