pub mod core;
pub mod strategy;
pub mod functions;
pub mod implementations;
pub mod simd;
#[cfg(feature = "gpu")]
pub mod gpu;
#[cfg(test)]
mod tests;
pub use core::{
get_activation_performance_report, get_activation_registry, reset_activation_counters,
ActivationAnalytics, ActivationFunction, ActivationRegistry, ActivationStrategy,
};
pub use strategy::{
select_activation_strategy, ActivationConfig, APPROX_THRESHOLD, GPU_THRESHOLD,
PARALLEL_THRESHOLD, SIMD_THRESHOLD,
};
pub use functions::{
elu,
gelu,
gelu_f32,
hard_swish,
hardswish,
leaky_relu,
log_softmax,
mish,
prelu,
relu,
relu6,
relu_f32,
relu_f64,
sigmoid,
sigmoid_f32,
sigmoid_f64,
softmax,
swish,
tanh,
tanh_f32,
tanh_f64,
};
#[cfg(feature = "gpu")]
pub use gpu::{
batch_gpu_activations, dispatch_gpu_activation, execute_gpu_activation, softmax_gpu_f32,
GpuActivationOp, GpuActivationStream,
};
pub use simd::{
fast_sigmoid_approx, simd_gelu_f32, simd_relu_f32, simd_sigmoid_f32, simd_tanh_f32,
};
pub use implementations::{
gelu_parallel_f32, gelu_sequential_f32, sigmoid_vectorized, tanh_vectorized,
ultra_relu_vectorized, ultra_sigmoid_vectorized,
};
pub fn activation_module_info() -> &'static str {
"TenfloweRS Activation Module v0.1.1
Features:
- 15+ activation functions with ultra-performance optimizations
- Automatic SIMD acceleration (AVX2/NEON)
- Parallel processing with adaptive chunking
- GPU acceleration (when available)
- Comprehensive performance analytics
- Memory-efficient implementations
- Extensive test coverage
Optimizations:
- Strategy selection based on input size
- SIMD vectorization for f32 operations
- Parallel processing for large arrays
- Fast approximations for transcendental functions
- GPU dispatch for massive workloads
- Zero-copy operations where possible
Supported Architectures:
- x86_64 with AVX2 SIMD
- aarch64 with NEON SIMD
- GPU acceleration via WGPU
- Fallback scalar implementations
"
}
pub fn version() -> &'static str {
"0.1.1"
}
pub fn supported_activation_count() -> usize {
15
}
pub fn simd_available() -> bool {
#[cfg(target_arch = "x86_64")]
{
is_x86_feature_detected!("avx2")
}
#[cfg(target_arch = "aarch64")]
{
true }
#[cfg(not(any(target_arch = "x86_64", target_arch = "aarch64")))]
{
false
}
}
pub fn gpu_available() -> bool {
cfg!(feature = "gpu")
}
#[cfg(test)]
mod module_tests {
use super::*;
#[test]
fn test_module_info() {
let info = activation_module_info();
assert!(info.contains("TenfloweRS"));
assert!(info.contains("activation"));
assert!(info.contains("SIMD"));
}
#[test]
fn test_version() {
let ver = version();
assert!(ver.contains("0.1.1"));
}
#[test]
fn test_activation_count() {
let count = supported_activation_count();
assert_eq!(count, 15);
}
#[test]
fn test_simd_detection() {
let _simd_avail = simd_available();
}
#[test]
fn test_gpu_detection() {
let gpu_avail = gpu_available();
assert_eq!(gpu_avail, cfg!(feature = "gpu"));
}
}