Supported Platforms

WitEngine is designed as a cross-platform framework, enabling heterogeneous computing clusters where different devices contribute according to their capabilities. This section details currently supported platforms, architectures, and the roadmap for future expansion.


Current Platform Support

WitEngine currently runs on four major platforms across two CPU architectures:

Platform x64 ARM64 Host Node Status
Windows Full support
Linux Full support
macOS ✅ (Apple Silicon) Full support
Android Node only

Legend:

  • Host — Can run the full WitEngine orchestrator (script parsing, job management)
  • Node — Can run WitEngineNode (execute activities, report results)

Platform Details

Windows

Windows is the primary development platform for WitEngine.

Aspect Details
Versions Windows 10, Windows 11, Windows Server 2016+
Architectures x64, ARM64
Runtime .NET 8.0+
GPU Support CUDA, DirectX 12, Vulkan, OpenCL
Special Features Full Visual Studio integration, native debugging

Typical Use Cases:

  • Development workstations
  • Render farm nodes with NVIDIA GPUs
  • Enterprise server deployments

Linux

Linux provides excellent server-side support and is common in cluster deployments.

Aspect Details
Distributions Ubuntu 20.04+, Debian 11+, RHEL 8+, Alpine 3.16+
Architectures x64, ARM64
Runtime .NET 8.0+
GPU Support CUDA, Vulkan, OpenCL
Special Features Container-friendly (Docker, Kubernetes), headless operation

Typical Use Cases:

  • Cloud compute instances (AWS, Azure, GCP)
  • On-premises server clusters
  • Docker/Kubernetes deployments
  • Raspberry Pi and ARM single-board computers

macOS

macOS supports both Intel and Apple Silicon Macs.

Aspect Details
Versions macOS 12 (Monterey)+
Architectures x64 (Intel), ARM64 (M1, M2, M3, M4)
Runtime .NET 8.0+
GPU Support Metal
Special Features Unified memory architecture on Apple Silicon

Typical Use Cases:

  • Developer workstations
  • Creative professional nodes (video, audio, graphics)
  • Mixed office environments

Android

Android enables mobile devices to participate as compute nodes.

Aspect Details
Versions Android 8.0 (API 26)+
Architectures ARM64, x86_64 (emulator)
Runtime .NET MAUI / Xamarin
GPU Support Vulkan, OpenGL ES
Limitations Node only (no Host capability), background execution limits

Typical Use Cases:

  • Edge computing for IoT scenarios
  • Utilizing idle mobile device capacity
  • Field data collection and preprocessing
  • Distributed sensing applications

⚠️ Android Considerations: Mobile devices have battery and thermal constraints. WitEngine respects Android's background execution policies and should be configured to run during charging or with explicit user consent for background work.


Architecture Support

x64 (AMD64)

The most common architecture for servers and desktops.

Characteristic Value
Word Size 64-bit
Endianness Little-endian
Typical Devices Desktop PCs, servers, laptops
Performance Highest single-thread performance

ARM64 (AArch64)

Growing in popularity for power-efficient computing.

Characteristic Value
Word Size 64-bit
Endianness Little-endian (typically)
Typical Devices Apple Silicon Macs, Raspberry Pi 4/5, Android phones, AWS Graviton
Performance Excellent performance-per-watt

Cross-Architecture Clusters

WitEngine fully supports mixed-architecture clusters:

The key requirement: all nodes must have compatible plugins. If a plugin is compiled only for x64, ARM64 nodes cannot execute those activities.


GPU Support

GPU capabilities vary by platform:

Platform CUDA OpenCL Vulkan Metal DirectX 12
Windows
Linux
macOS ✅*
Android

*macOS Vulkan via MoltenVK translation layer

GPU Requirements in Activities

Activities can declare GPU requirements:

csharp
// CUDA-specific activity (Windows/Linux only)
[RequiresGpu(Features = GpuFeatures.Cuda)]
public class CudaMatrixMultiply : WitActivityTransform { }

// Metal-specific activity (macOS only)
[RequiresGpu(Features = GpuFeatures.Metal)]
public class MetalImageProcess : WitActivityTransform { }

// Cross-platform GPU activity
[RequiresGpu(GpuType = GpuType.Discrete)]
public class GpuAcceleratedTask : WitActivityTransform { }

The orchestrator automatically routes work to nodes with matching GPU capabilities.


Platform-Specific Considerations

Plugin Compatibility

Plugins must be compiled for each target platform. A typical plugin distribution:

MyPlugin/
├── win-x64/
│   └── MyPlugin.dll
├── win-arm64/
│   └── MyPlugin.dll
├── linux-x64/
│   └── MyPlugin.dll
├── linux-arm64/
│   └── MyPlugin.dll
├── osx-x64/
│   └── MyPlugin.dll
├── osx-arm64/
│   └── MyPlugin.dll
└── android-arm64/
    └── MyPlugin.dll

Pure .NET plugins (no native dependencies) can often be architecture-neutral. Plugins with native dependencies require per-platform builds.

Native Dependencies

Some activities require native libraries:

Dependency Windows Linux macOS Android
FFmpeg
CUDA Toolkit
Metal SDK
OpenCV

Activities with native dependencies should:

  1. Declare platform requirements via [RequiresOs]
  2. Handle missing dependencies gracefully
  3. Document installation requirements

Network and Firewall

All platforms require network access for distributed operation:

Requirement Default Notes
TCP Ports Configurable Host listens, nodes connect outbound
Firewall Allow outbound Nodes typically only need outbound access
NAT Traversal Not required Nodes initiate connections to host

Future Platform Roadmap

WitEngine's architecture is designed for expansion. The following platforms are planned or under consideration:

Priority Platforms (Near-term)

Platform Target Use Case Priority Notes
iOS Node Mobile edge computing, Apple ecosystem integration High Complements existing macOS/Android support
Xbox Node Powerful GPU compute, living room clusters High Excellent hardware, developer-friendly
PlayStation Node High-performance GPU nodes Medium Very capable hardware, SDK considerations
Android Smart Devices Node Smart TVs, set-top boxes, automotive High Extends existing Android support

Why Game Consoles?

Modern game consoles are essentially high-performance computing devices that sit idle most of the time:

Console CPU GPU RAM Potential
Xbox Series X 8-core Zen 2 @ 3.8GHz 12 TFLOPS RDNA 2 16 GB Excellent compute node
PlayStation 5 8-core Zen 2 @ 3.5GHz 10.3 TFLOPS RDNA 2 16 GB Excellent compute node

These devices could contribute significant compute power during idle hours — imagine a render farm that includes living room consoles contributing overnight.

Android Smart Devices extend the existing Android support to:

  • Smart TVs (Samsung, LG, Sony with Android TV)
  • Set-top boxes (NVIDIA Shield, Chromecast)
  • Automotive systems (Android Automotive)
  • Smart displays

Long-term Vision

Platform Target Use Case Status
IoT Devices Node Edge processing, sensors Exploring
WebAssembly Node Browser-based nodes Research
Tizen Node Samsung ecosystem Evaluating
tvOS Node Apple TV nodes After iOS
Embedded Linux Node Industrial automation Evaluating

Vision: Universal Compute Mesh

The long-term vision is a world where any device with a processor can contribute to distributed computation:


Checking Platform Capabilities

From Scripts

Scripts can query node capabilities:

~ Get available nodes ~
NodeCollection:nodes = Grid.GetNodes();

~ Filter by platform ~
NodeCollection:windowsNodes = Collection.Where(nodes, 
    n => Node.GetPlatform(n) == "Windows");

NodeCollection:cudaNodes = Collection.Where(nodes,
    n => Node.HasGpuFeature(n, "Cuda"));

From Code

The capability system provides detailed information:

csharp
public interface IWitCapabilities
{
    IWitCapabilitiesOs Os { get; }           // Platform, version
    IWitCapabilitiesCpu Cpu { get; }         // Architecture, cores
    IWitCapabilitiesMemory Memory { get; }   // RAM
    IWitCapabilitiesStorage TempStorage { get; }  // Disk
    IReadOnlyList<IWitCapabilitiesGpu> Gpus { get; }  // GPUs
    IReadOnlyDictionary<string, string> CustomProperties { get; }
}

Summary

Aspect Current State
Desktop OS Windows, Linux, macOS — full support
Mobile OS Android — node support
Architectures x64, ARM64 — both fully supported
GPU APIs CUDA, OpenCL, Vulkan, Metal, DirectX 12
Mixed Clusters Fully supported with compatible plugins
Priority Expansion iOS, Xbox, PlayStation, Android Smart Devices
Long-term IoT, WebAssembly, embedded systems

WitEngine's cross-platform design means you can start with whatever hardware you have and expand as needed. A cluster can grow from a single developer laptop to a global mesh of heterogeneous devices — all running the same scripts, with work automatically distributed based on capabilities.