Software Installation and Management

1. System Requirements

To effectively use SAInt, particularly for optimization models dealing with production cost and capacity expansion modeling, it’s crucial to have the appropriate hardware setup. Below, we detail both the required and recommended system specifications to ensure that you are equipped to solve complex and large-scale problems efficiently.

SAInt is a 64-bit application that runs exclusively on Microsoft Windows, from Windows 11 Home / Pro / Enterprise to Windows Server 2019 or later. As a Windows-only application, SAInt does not run on macOS or Linux.

Minimum System Requirements

The following are the minimum hardware requirements we recommend to address "small-scale networks and problems" in SAInt.

Processor

at least a 4-core CPU with hyper-threading or simultaneous multithreading technology and a minimum clock speed of 2.0 GHz.

Memory

A minimum of 16 GB.

Storage

A solid-state drive (SSD) with at least 256 GB of free space. Prefer NVMe PCIe SSDs over SATA SSDs.

Recommended System Specifications

For optimal performance, especially when dealing with "large and complex instances of optimization models", we recommend the following specifications:

Processor

At least a 16-core CPU with hyper-threading or simultaneous multithreading (HT/SMT). Optimally, a 24-core CPU (with HT/SMT) is recommended. The CPU should be able to sustain a high clock frequency under long-haul workloads (i.e., hours of continuous, high utilization) with appropriate cooling and power limits. For server-grade hardware, prioritize sustained performance over peak boost: aim for a platform/CPU combination that can maintain ~3.4 - 3.8 GHz sustained all-core under the expected workload, and validate with workload-relevant benchmarks where possible. For consumer-grade hardware, prefer CPUs that can sustain ~4.0 - 4.6 GHz all-core under long-haul loads (rather than relying on short-duration peak boost figures).

Memory

Size RAM according to the simulation type and the level of parallelism. For Capacity Expansion Models (CEM), memory demand is high—recommend at least 128 GB, and 256 GB or more for larger instances or longer horizons. For Production Cost Models (PCM), 64 GB is typically sufficient for a single SAInt solve, while parallel / concurrent SAInt runs should provision proportionally more RAM (plan capacity per concurrent process to avoid paging and memory pressure). For mission-critical tasks, prefer ECC memory for improved data integrity. Where supported by the platform, prefer more DIMMs across channels (e.g., 4 x 32 GB rather than 2 x 64 GB) to increase available memory bandwidth via better channel population, provided the configuration maintains the desired speed and stability.

Storage

An NVMe PCIe solid-state drive (SSD) with at least 1 TB of free space. SSD with higher read/write speeds could improve the I/O performance.

Key Considerations

  • Graphic Card:

    SAInt computation capabilities are designed to take full advantage of modern CPUs. SAInt performance is independent of the availability of a graphic card (GPU) for both simulation and optimization problems. For SAInt’s typical optimization workloads (LP/MIP using Gurobi), GPUs do not accelerate solves; performance primarily depends on the CPU and memory. Furthermore, SAInt currently runs Gurobi without enabling the "Primal-Dual Hybrid Gradient" algorithm on GPU (PDHG-on-GPU), as this is still considered a beta feature for NVIDIA GPUs in release 13.0 of Gurobi.

  • Number of Cores and Clock Speed:

    More cores can improve performance, especially for models requiring extensive parallel processing. For problems that solve faster with linear programming (LP) or mixed-integer programming (MIP) near the root node, higher clock speeds are preferable.

    We have observed that on machines with more than 32 cores, there is a little-to-no benefit for a single SAInt solve, where clock frequency and RAM play a more important role. On the other hand, if the machine is used for multiple concurrent runs of SAInt, a higher number of cores could help.

    In optimization problems, Gurobi has a soft limit of ~32 threads, since higher thread counts often don’t improve performance. This is the default automatic option by Gurobi (i.e., Threads=0). On machines with >32 logical processors, under default settings, Gurobi may use only the number of physical cores unless Threads is explicitly set higher (e.g., 24 physical cores with 2 threads/core then set Threads=48 to use all logical threads).

  • Memory (RAM):

    More RAM is beneficial for handling large and complex models. Moving from 16 GB to 32 GB of RAM can yield major speedups if 16 GB causes paging/memory pressure. RAM should be provisioned in proportion to the model size and complexity. For many typical single-run cases, performance improvements taper off once ~32 GB is sufficient to avoid memory pressure/paging; beyond that point, additional RAM usually yields limited speedup unless the instance is large enough to materially increase working-set memory needs. When multiple SAInt runs are active on one machine, the provision of more RAM is very beneficial since each process will consume substantial memory. Splitting the RAM into more memory cards to leverage more memory channels, could help enhance performance.

    If possible, prefer ECC (Error Correcting Code) RAM over non-ECC RAM. ECC RAM’s main benefit over "normal" (non-ECC) RAM is data integrity: it can detect and often correct bit flips that would otherwise silently corrupt data or crash a program.

  • Processing Trade-offs:

    A machine with more cores and a slightly slower clock speed may outperform a machine with fewer cores but a faster clock speed (or vice-versa), depending on the nature of the optimization tasks. Benchmarking specific models is crucial to determine the ideal configuration.

  • Parallel Execution:

    If planning to run multiple instances in parallel, ensure sufficient cores and memory to support concurrent processing without resource contention. Limit the number of threads per process if necessary to balance the computational load.

  • Capacity Expansion Models (CEM):

    CEM is RAM-intensive, and it is recommended to have at least 128 GB of RAM. We strongly recommend reducing the time horizon and / or the problem size to fit within hardware constraints, where possible.

  • System cooling:

    It is recommended to equip the workstation or server used for simulation and optimization problems with an adequate and efficient cooling system, especially if the machine needs to operate for long periods. Lower operating temperatures help in maintaining higher sustained all-clock frequencies and avoid thermal throttling.

In conclusion, selecting the right hardware configuration for SAInt depends on the specific nature and complexity of the models you intend to solve. For the best results, consider conducting benchmarks with representative model instances to tailor your system configuration to your needs. If you need further assistance in determining the optimal setup, please reach out to us at support@encoord.com.

2. SAInt Download and License Management

SAInt can be downloaded using an online download link after the user creates a user account on the SAInt User Forum (https://forum.encoord.com/signup). The software installation requires administrator rights to access the Windows registry and the program files folder. SAInt is protected by a License Management System administrated in Codemeter by Wibu-Systems AG (www.wibu.com). Codemeter needs to be downloaded on the user’s computer in order to activate the license for SAInt. Licenses are placed on a "license container", which can be either in the form of a physical USB-dongle or a digital container that can be activated on a physical or virtual machine chosen by the Licensee. Different modules in SAInt are licensed individually.

2.1. License Types

The core terminology of SAInt licensing comprises three key terms: "Hard License," "Soft License," and "Cloud License". Below are explanations for each term and a comparison highlighting their distinctions.

SAInt licenses are categorized into two basic types: "hard" and "soft". A "hard license" refers to a license bound to a physical dongle, which users can transfer between different machines. This license type is securely stored within a USB dongle and allows users to run SAInt as soon as they connect it to their computer. The Wibu Codemeter application manages a "CmDongle container" on the USB dongle. A "soft license" is a machine-specific, file-based, and bound to a host computer solution. It cannot be transferred between different devices. This license is stored within the computer itself and uses a Wibu Codemeter "CmActLicense container", which may be lost in the event of a computer crash or a new operating system installation.

Furthermore, licenses can be managed either locally, by the same computer where SAInt is installed, or centrally, by a license server distributing and managing a license pool. A "cloud license" enables users to run SAInt without direct access to a container. The mechanism behind cloud licenses involves inserting the license container, whether soft or hard, into a central computer, often a server. Other computers on the network recognize this central computer as the "license server" and send their license requests to it. If the requested license is available and hasn’t already been assigned to another user, the server approves the request, allowing SAInt to be run. A cloud license is managed using a "CmCloud container" used by Wibu Codemeter on the server.

3. Security

SAInt is an on-premise desktop application based on the Windows Operating System. It can be installed on a physical or virtual machine living within the confines of the user’s local area network (LAN). The installation of SAInt is performed by executing a digitally signed setup file that is transferred to the client via download from our software download webpage. In general, SAInt does not require communication with the Internet during operation. The only exception is the communication with the time servers (cmtime.codemeter.com, cmtime.codemeter.us cmtime.codemeter.de) of our third-party software protection and license management system (SPLMS) Codemeter by Wibu-Systems AG (https://www.wibu.com) for updating the certified time of the license containers. Anytime an instance of SAInt is launched, the SPLMS attempts to request a certified time from the time servers via the internet. If this request is successful, the certified time of the license container will be updated. If there is no response from the time servers, SAInt can still be operated unless the certified time of the license container has not been updated for more than 30 days.

Any other communication with the internet is done only with prior approval by the user, e.g., download of Weather Resource Data for wind or solar power generation profiles or form submission of unhandled software exceptions to encoord support. Model input and output data processed in SAInt are never transferred through the internet and are only saved in a location specified by the user.