.. index:: 
  !Requirements
  
.. _requirements:

=============
Requirements
=============

System Requirements
===================

|product-name| is compatible with the following platforms: 

.. list-table::
    :width: 100%
    :widths: 25 45 30
    :header-rows: 1

    * - Platforms
      - Operating Systems
      - Processor Architectures

    * - Server
      - | Windows Server 2012 (64 bits)
        | Ubuntu 20.04 or GNU/Linux with Kernel version >5.4 (64 bits)
      - Intel Core, Xeon (x86-64)

    * - PC (desktop, laptop)
      - 
        | Windows 7, 8, 10, 11 (32/64 bits)
        | Ubuntu 20.04 or GNU/Linux with Kernel version >5.4, 64 bits)
      - Intel Core, Xeon (x86, x86-64)
  
    * - Mac
      - macOS X (version 10.9 or newer)
      - arm64, M1, M2

    * - Android (phone, tablet)
      - Android 5.0+ (API >= 21)
      - | ARMv7 (armeabi-v7a)
        | ARMv8 (arm64-v8a)

    * - iPhone, iPad
      - iOS 12+
      - ARMv7, ARMv7s, ARMv8

.. * - NXP i.MX8
..   - Linux Yocto
..   - NXP i.MX SoC

.. hint:: 
  | For server applications, Intel Core i7-4771 (3.5 GHz) processor or better is recommended.
  | For mobile applications, ARM-based 1.5 GHz processor is recommended.

.. _gpu_version:

Additional Requirements for GPU version
---------------------------------------
For Windows or Linux, GPU is supported only for the x86_64 architecture only. Please be aware some models might not support GPU acceleration.
For CUDA packages, a driver supporting CUDA=11.5 is necessary.

.. list-table::
    :width: 100%
    :widths: 35 65
    :header-rows: 1

    * - Operating Systems
      - Available packages and backends

    * - Windows
      - | x86 : CPU
        | x64 : OpenCL
        | x64-cuda : CUDA

    * - Linux
      - | x64 : OpenCL
        | x64-cuda : CUDA

    * - Android
      - | eu.id3.face : CPU 
        | eu.id3.face-gpu : OpenCL & Vulkan (arm-v8 only)

    * - IOS / MACOS
      - default : Metal



Memory requirements
===================

The memory requirements depend mainly on the machine learning models loaded by the application. |product-name| offers the possibility to load only the models that are required by the application.

Development environment
=======================

Microsoft Windows
-----------------

- Microsoft .NET framework 4.5.2 or later (for .NET components usage)
- Microsoft Visual Studio 2017 or newer (for application development with C / C++ / C# / VB.NET / F#)
- Java SE JDK 8 or newer (for application development with Java)
- Python 3.9 or 3.11 (for development with Python)
- Flutter 3.0 or newer (for development with Flutter/Dart)

Linux
-----

- gcc 9.4 or newer (for application development with C / C++)
- Java SE JDK 8 or newer (for application development with Java)
- Python 3.9 or 3.11 (for development with Python)
- Flutter: Flutter 3.0 or newer (for development with Flutter/Dart)

MacOS
-----

- XCode 14.1 or newer
- Java SE JDK 8 or newer (for application development with Java)
- Flutter 3.0 or newer (for development with Flutter/Dart)

Android
-------

- Java SE JDK 8 (or higher)
- AndroidStudio 4.0 IDE
- AndroidSDK 21+ API level
- Gradle 6.1.1 build automation system or newer
- Android Gradle Plugin 4.0.0
- Flutter 3.0 or newer (for development with Flutter/Dart)

iOS
---

- Xcode 14.1 or newer
- Swift 4 or newer (for development with Swift)
- Flutter 3.0 or newer (for development with Flutter/Dart)
