using System;
using TrustformersMobile;
namespace TrustformersMobile.Examples
{
public class BasicInferenceExample
{
public static void Main(string[] args)
{
try
{
Console.WriteLine("TrustformeRS Mobile C# Example");
Console.WriteLine("==============================");
Console.WriteLine("Initializing TrustformeRS Mobile...");
TrustformersMobile.TrustformersMobile.Initialize();
var version = TrustformersMobile.TrustformersMobile.GetVersion();
Console.WriteLine($"Library version: {version}");
Console.WriteLine("\nDevice Information:");
var deviceInfo = TrustformersMobile.TrustformersMobile.GetDeviceInfo();
Console.WriteLine($" Device: {deviceInfo.Name}");
Console.WriteLine($" OS: {deviceInfo.OS}");
Console.WriteLine($" Architecture: {deviceInfo.Architecture}");
Console.WriteLine($" CPU Cores: {deviceInfo.CpuCores}");
Console.WriteLine($" Total Memory: {deviceInfo.TotalMemoryMB} MB");
Console.WriteLine($" Available Memory: {deviceInfo.AvailableMemoryMB} MB");
Console.WriteLine($" GPU: {deviceInfo.GPU}");
Console.WriteLine($" Performance Tier: {deviceInfo.PerformanceTier}");
Console.WriteLine($" Hardware Acceleration: {deviceInfo.SupportsHardwareAcceleration}");
if (deviceInfo.RecommendedBackends.Length > 0)
{
Console.WriteLine($" Recommended Backends: {string.Join(", ", deviceInfo.RecommendedBackends)}");
}
Console.WriteLine("\nPlatform Support:");
Console.WriteLine($" iOS: {TrustformersMobile.TrustformersMobile.IsPlatformSupported(MobilePlatform.iOS)}");
Console.WriteLine($" Android: {TrustformersMobile.TrustformersMobile.IsPlatformSupported(MobilePlatform.Android)}");
Console.WriteLine($" Generic: {TrustformersMobile.TrustformersMobile.IsPlatformSupported(MobilePlatform.Generic)}");
Console.WriteLine("\nBackend Support:");
Console.WriteLine($" CPU: {TrustformersMobile.TrustformersMobile.IsBackendSupported(MobileBackend.CPU)}");
Console.WriteLine($" CoreML: {TrustformersMobile.TrustformersMobile.IsBackendSupported(MobileBackend.CoreML)}");
Console.WriteLine($" NNAPI: {TrustformersMobile.TrustformersMobile.IsBackendSupported(MobileBackend.NNAPI)}");
Console.WriteLine($" GPU: {TrustformersMobile.TrustformersMobile.IsBackendSupported(MobileBackend.GPU)}");
Console.WriteLine($" Metal: {TrustformersMobile.TrustformersMobile.IsBackendSupported(MobileBackend.Metal)}");
Console.WriteLine($" Vulkan: {TrustformersMobile.TrustformersMobile.IsBackendSupported(MobileBackend.Vulkan)}");
Console.WriteLine($" OpenCL: {TrustformersMobile.TrustformersMobile.IsBackendSupported(MobileBackend.OpenCL)}");
Console.WriteLine("\nConfiguration Examples:");
using (var defaultConfig = new MobileConfig())
{
Console.WriteLine("✓ Created default configuration");
defaultConfig.Validate();
Console.WriteLine("✓ Default configuration is valid");
}
if (TrustformersMobile.TrustformersMobile.IsPlatformSupported(MobilePlatform.iOS))
{
using (var iosConfig = MobileConfig.CreateiOSOptimized())
{
Console.WriteLine("✓ Created iOS optimized configuration");
iosConfig.Validate();
Console.WriteLine("✓ iOS configuration is valid");
}
}
if (TrustformersMobile.TrustformersMobile.IsPlatformSupported(MobilePlatform.Android))
{
using (var androidConfig = MobileConfig.CreateAndroidOptimized())
{
Console.WriteLine("✓ Created Android optimized configuration");
androidConfig.Validate();
Console.WriteLine("✓ Android configuration is valid");
}
}
using (var lowMemConfig = MobileConfig.CreateUltraLowMemory())
{
Console.WriteLine("✓ Created ultra low memory configuration");
lowMemConfig.Validate();
Console.WriteLine("✓ Ultra low memory configuration is valid");
}
using (var customConfig = new MobileConfig())
{
customConfig.SetPlatform(MobilePlatform.Generic);
customConfig.SetBackend(MobileBackend.CPU);
customConfig.SetMemoryOptimization(MemoryOptimization.Balanced);
customConfig.SetMaxMemoryMb(512);
customConfig.SetUseFp16(true);
customConfig.SetNumThreads(4);
Console.WriteLine("✓ Created custom configuration");
customConfig.Validate();
Console.WriteLine("✓ Custom configuration is valid");
}
if (args.Length > 0)
{
string modelPath = args[0];
Console.WriteLine($"\nTesting inference with model: {modelPath}");
try
{
using var engine = TrustformersMobile.TrustformersMobile.CreateOptimizedEngine(modelPath);
Console.WriteLine("✓ Successfully created inference engine");
float[] sampleInput = { 1.0f, 2.0f, 3.0f, 4.0f };
Console.WriteLine($"Input: [{string.Join(", ", sampleInput)}]");
float[] output = engine.InferenceF32(sampleInput);
Console.WriteLine($"Output: [{string.Join(", ", output)}]");
Console.WriteLine("✓ Inference completed successfully");
}
catch (TrustformersMobileException ex)
{
Console.WriteLine($"⚠ Inference failed: {ex.Message} (Error: {ex.ErrorCode})");
}
}
else
{
Console.WriteLine("\nTo test inference, provide a model path as an argument:");
Console.WriteLine(" dotnet run BasicInferenceExample.cs path/to/model.bin");
}
Console.WriteLine("\n✅ All tests completed successfully!");
}
catch (Exception ex)
{
Console.WriteLine($"❌ Error: {ex.Message}");
if (ex is TrustformersMobileException mobileEx)
{
Console.WriteLine($"Error Code: {mobileEx.ErrorCode}");
}
Environment.Exit(1);
}
}
}
}