.. _first_steps: Getting started =============== REDAC is a fully software-reconfigurable analog-digital hybrid computer made by `Anabrid `_. The computer is intended to be used for datacenters, research and industry. It is specifically designed for solving differential equations, simulating complex models, and forecasting dynamic systems with exceptional speed and throughput—all while operating with minimal or no cooling requirements. This system excels in a wide range of demanding applications, including realistic simulations of turbulent fluid dynamics, structural and flight dynamics, control systems, route optimization, big data analytics, real-time sensor processing, and much more. REDAC is built on a groundbreaking analog dataflow architecture that delivers unparalleled performance, achieving at least 1,000 times the speed of traditional computing systems while consuming 10,000 times less power. It comes fully integrated with a comprehensive suite of software tools from Anabrid, including a powerful compiler, bindings for popular programming languages and libraries, and robust cloud system administration features. .. Not show lucidac user manual here -- commented out: The REDAC extends the capabilities of the successful *LUCIDAC single cluster* evaluation system, detailed at https://anabrid.com/lucidac and https://anabrid.com/lucidac-user-manual.pdf. Designed as a modular 19” rack-mounted blade-style system, REDAC integrates hundreds of clusters within a single full-size server rack. This makes it a powerful and scalable data center solution for high-performance analog computing. REDAC is one of the first commercially available modern analog-digital hybrid computers and allows to solve up to about one thousand coupled differential equations (*DEQ*\ s) of :math:`1^\text{st}` order or five hundred DEQs :math:`2^\text{nd}` order, etc. Thanks to analog multipliers, non-linear equations can also be easily implemented. The REDAC system contains a complex hierarchy of analog elements and digital processors (see :ref:`architecture`). Despite other modes of operation exist, this makes it very convenient to use the system as a remote user via the internet. Requirements ------------ REDAC is a modern analog-digital hybrid computer primarily meant to be used in a datacenter or "cloud" context. That means you will access it similar to cloud computing services from Google or Amazon, straight from your computer over the internet. This reduces the demand on your local computer to a bare minimum. In fact, this guide promotes our python reference client implementation which has little dependencies and will run on virtually any modern operating system. Therefore, as a regular user of REDAC, this is the requirement list: * A notebook or desktop computer with internet access or at least some sort of direct/company network access to REDAC. Most likely your operator provides you access to REDAC over conventional IPv4 TCP/IP networking. * The operating systems Apple Mac OS X (macOS 10.9 Mavericks or later), Microsoft Windows (Windows 7 or later) or GNU/Linux are supported. Administrator rights are typically not required. * At least Python 3.10 is required for the reference client software. * As access is limited and precious, you first need to get a user account. Depending on the structure of your organization, you will be able to apply/register on a website or you have to manually contact the operators to have them creating a user account for you. Please note that the REDAC's software may be operated in different states (see :ref:`reconfigurable`) which virtualizes the device such that multiple users may operate on _partitions_ of the device independently and in parallel. The mode is set by the operator and may be queried using the provided CLI tool (see below). Installing the Python client ---------------------------- The REDAC programming interface can be used from a variety of programming languages. However, we first and foremost support the *python scientific programming ecosystem*, consisting of a standard set of tools such as `Scipy `_ and its components such as `Numpy `_. In order to proceed with REDAC, you need the python client available at your computer. If you prefer, you can also choose some hosted Jupyter Notebook environment such as *Google Colab* or *Binder* (or the hosted one by Anabrid, see :ref:`opanabrid_services`). The python client very little dependencies. Virtually any computer running a modern python version should do it. You can run the client even on a Raspberry Pi if you prefer. The software package `anabrid-redac-client `_ is released on public python package index (in short *pip*). In order to install it, you need the ``python-pip`` or ``pip`` command available on your computer. Installation is then as easy as typing :: pip install anabrid-redac-client from a regular python installation, i.e. a system shell with a working ``python`` and ``pip`` executable on the ``PATH``. It is suggested to run this within a `Virtual Environment `_. It is generally not suggested to install this system-wide with ``sudo``. A typical terminal session during installation looks like this: :: you@yournotebook $ python -m venv venv you@yournotebook $ source venv/bin/activate (venv) you@yournotebook $ pip install anabrid-redac-client Collecting anabrid-redac-client Downloading anabrid_redac_client-0.1.0-py3-none-any.whl.metadata (892 bytes) [...] Installing collected packages: urllib3, typing-extensions, termcolor, six, shellingham, setuptools, python-dotenv, pygments, propcache, multidict, mdurl, lucipy, idna, frozenlist, click, charset-normalizer, certifi, attrs, annotated-types, aiohappyeyeballs, yaspin, yarl, requests, python-dateutil, pydantic-core, markdown-it-py, aiosignal, rich, pydantic, aiohttp, typer, anabrid-redac-core, anabrid-redac-client Successfully installed aiohappyeyeballs-2.4.6 aiohttp-3.11.12 aiosignal-1.3.2 anabrid-redac-client-0.1.0 anabrid-redac-core-0.1.0 annotated-types-0.7.0 attrs-25.1.0 certifi-2025.1.31 charset-normalizer-3.4.1 click-8.1.8 frozenlist-1.5.0 idna-3.10 lucipy-1.6.0 markdown-it-py-3.0.0 mdurl-0.1.2 multidict-6.1.0 propcache-0.2.1 pydantic-2.10.6 pydantic-core-2.27.2 pygments-2.19.1 python-dateutil-2.9.0.post0 python-dotenv-1.0.1 requests-2.32.3 rich-13.9.4 setuptools-75.8.0 shellingham-1.5.4 six-1.17.0 termcolor-2.3.0 typer-0.15.1 typing-extensions-4.12.2 urllib3-2.3.0 yarl-1.18.3 yaspin-3.1.0 [notice] A new release of pip is available: 24.2 -> 25.0.1 [notice] To update, run: pip install --upgrade pip After successful installation, you should have the exectuable ``redacli`` available. Call ``redacli --help`` to test it: :: (venv) you@yournotebook $ redacli --help Usage: redacli [OPTIONS] COMMAND [ARGS]... +---------------------------- Options ----------------------------+ | --install-completion Install completion for the current shell | | --show-completion Show completion for the current shell, | | to copy it or customize the installation | | --help Show this message and exit | +-----------------------------------------------------------------+ +---------------------------- Commands ---------------------------+ | run submit logs status results partitions health | +-----------------------------------------------------------------+ If you system cannot find the executable, you most likely did not work within a virtual environment and do not have the python default binary path as part of your ``PATH`` variable. On UNIX-like systems, this goes typially into ``~/.local/bin``, for instance you can type ``export PATH="$PATH:$HOME/.local/bin"`` to enable this location. You can also check the output of ``python -m site --user-site`` to find out where your python installation currently installs packages to. Logging in ---------- This first access happens in your webbrowser. Visit the website https://redac.anabrid.com and hit the *log in* button in the upper right. You should be then provided a page where you can register a user account or login with your useraccount. In order to connect to REDAC from the client, you currently have to store your *username* and *password* as environment variables. You can do this, for instance, by typing :: you@yournotebook $ export REDAC_USERNAME="your-name@example.com" you@yournotebook $ export REDAC_PASSWORD="yourHopefullyComplicatedPasswordGoesHere" When connecting, you also might need a hostname. This is, in the moment, just ``https://redac.anabrid.com`` and this option is already configured as the default and can be omitted. .. note:: For further details about the registration procedure for the REDAC computer operated for DLR by anabrid, contact your local system administrator or see :ref:`opanabrid`. For technical information about the authentification procedure, see also :ref:`opauth` in the operators manual. Using the CLI ------------- The REDAC may be operated in a *partitioned* setup where multiple parts of the system are isolated against each other through the software stack. For each of these partitions, there is a seperate *job queue* which contains jobs for this partition. Jobs in these queues may be submitted by diffeent users and each job is identified through an unique ID. Currently, there are two options to access the system: 1. Through the Python class ``REDACClient`` as demonstrated in :ref:`examples`. 2. Through the CLI executable ``redacli``. This section covers the latter. Please first login to the system according to the instructions above. Given a netlist with filename ``config.json``, one run of the netlist with default parameters on partition ``PART`` is submitted by :: you@yournotebook $ redacli --host https://redac.anabrid.com --partition PART config.json Note that ``https://redac.anabrid.com`` is the current default and thus may be omitted. The client then continues to update the status until the job has been completed (with either the results or an error): :: >>> redacli run test/data/config.json ✅ Job submitted with ID: 56bcc72f-aaa8-4c04-96f6-4eb6425372f6 ✅ Job 56bcc72f-aaa8-4c04-96f6-4eb6425372f6 completed with status: COMPLETED In this example, we submitted a job that is saved under its ID ``56bcc72f-aaa8-4c04-96f6-4eb6425372f6``. With this ID, we can subsequently retrieve the results: :: >>> redacli results 56bcc72f-aaa8-4c04-96f6-4eb6425372f6 { "/0/0": [(omitted)], "/1/0": [(omitted)] } Note that each item of the results contains data for one ``adc_channel`` from the netlist, by the scheme ``/carrier/adc_channel``, where both carrier and ``adc_channels`` are indexed starting with ``0``. Furthermore, we may download the job's log using the ``logs`` command: :: >>> redacli logs 56bcc72f-aaa8-4c04-96f6-4eb6425372f6 [/forwarder/0/56bcc72f-aaa8-4c04-96f6-4eb6425372f6] 2025-02-16 20:51:39: Starting task processing... [/forwarder/0/56bcc72f-aaa8-4c04-96f6-4eb6425372f6] 2025-02-16 20:51:40: New run state: JobSequenceEnum.RECEIVED_SET_CIRCUIT [/forwarder/0/56bcc72f-aaa8-4c04-96f6-4eb6425372f6] 2025-02-16 20:51:40: New run state: JobSequenceEnum.RECEIVED_STATUS_TAKE_OFF [/forwarder/0/56bcc72f-aaa8-4c04-96f6-4eb6425372f6] 2025-02-16 20:51:40: New run state: JobSequenceEnum.RECEIVED_STATUS_DONE [/forwarder/0/56bcc72f-aaa8-4c04-96f6-4eb6425372f6] 2025-02-16 20:51:40: Finished processing (reason: TASK_FINISH) These logs are fairly specific to the structure of the software stck, but may serve as the first indicator when dealing with issues in the software stack. Last but not least, ``redacli`` enables users to receive information about the system, namely the `partitioning scheme`: :: >>> redacli partitions # Partition 0 - Job queue length: 1 - Carriers: - 00-00-00-00-00-00 # Partition 1 - Job queue length: 2 - Carriers: - 00-00-00-00-00-01 showing the carriers (mREDACs) per partition and the number of jobs waiting for processing in each queue as well as the temperatures in the system: :: >>> redacli health which prints a list of individual components in the system as well as their temperatures.