User Mode Binary Emulators
This CPU emulator can be used as either a standalone functional emulator of Prodigy ISA or as part of cross-mode GDB allowing to debug Prodigy user mode application on any other host platform.
All vector operations are encoded and implemented in GDB-sim.
QEMU is a generic and opensource machine emulator and virtualizer. It supports both User-mode emulation and Full-system emulation.
Tachyum port can be used for two purposes - to emulate Prodigy ISA on any other supported architecture or to run pre-existing applications on Prodigy Linux/BSD system.
GDB, the GNU Project debugger, allows you to see what is going on “inside” another program while it executes or what another program was doing at the moment it crashed.
With GDB, a Prodigy application can be debugged in various scenarios: as a part of cross-toolchain using either functional simulator or QEMU as execution engine on non-Prodigy host; connecting to GDB server running on native or full-system-mode-emulation Linux/BSD kernel, from any supported host; or as a native Linux/BSD debugger.
“Open On-Chip Debugger” allows to connect to a target using low-level JTAG interface to help facilitate system bring-up and initial stages of very low-level debugging.
Kgdb is intended to be used as a source level debugger for the Linux kernel. It is used along with gdb to debug a Linux kernel.
JTAG is more than debugging and programming. Processors use JTAG to provide access to their debug/emulation functions and all FPGAs and CPLDs use JTAG to provide access to their programming functions.
Compilers and Libraries
The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, Go, and D, as well as libraries for these languages (libstdc++,…).
Existing since 1987, this compiler is a de-facto standard for almost every major CPU platform.
The GNU C Library project provides the core libraries for the GNU system and GNU/Linux systems, as well as many other systems that use Linux as the kernel. These libraries provide critical APIs including ISO C11, POSIX.1-2008, BSD, OS-specific APIs and more. These APIs include such foundational facilities as open, read, write, malloc, printf, getaddrinfo, dlopen, pthread_create, crypt, login, exit and more.
The GNU C Library is designed to be a backwards compatible, portable, and high-performance ISO C library. It aims to ollow all relevant standards including ISO C11, POSIX.1-2008, and IEEE 754-2008.
Musl is a C standard library implementation for Linux. Some of musl’s major advantages over glibc and uClibc/uClibc-ng are its size, correctness, static linking support, and clean code.
Boot loaders and monitors
UEFI stands for “Unified Extensible Firmware Interface.” The UEFI Specification defines a new model for the interface between personal-computer operating systems and platform firmware. The interface consists of data tables that contain platform-related information, plus boot and runtime service calls that are available to the operating system and its loader. Together, these provide a standard environment for booting an operating system and running pre-boot applications.
OS, kernels, and distro tools
The Linux kernel is a free and open-source, monolithic, Unix-like operating system kernel. It is deployed on a wide variety of computing systems, from personal computers, mobile devices, mainframes, and supercomputers to embedded devices, such as routers, wireless access points, private branch exchanges, set-top boxes, FTA receivers, smart TVs, personal video recorders, and NAS appliances.
Its availability, continuous development, and ongoing support have spawned a plethora of operating system distributions, commonly also called Linux.
FreeBSD is an operating system used to power modern servers, desktops, and embedded platforms. A large community has continually developed it for almost thirty years. Its advanced networking, security, and storage features have made FreeBSD the platform of choice for many of the busiest web sites and most pervasive embedded networking and storage devices.
The Yocto Project (YP) is an open-source collaboration project that helps developers create custom Linux-based systems regardless of the hardware architecture.
The project provides a flexible set of tools and a space where embedded developers worldwide can share technologies, software stacks, configurations, and best practices that can be used to create tailored Linux images for embedded and IOT devices, or anywhere a customized Linux OS is needed.
Buildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation.
Can handle everything: Cross-compilation toolchain, root filesystem generation, kernel image compilation and bootloader compilation.
Thanks to its kernel-like menuconfig, gconfig and xconfig configuration interfaces, building a basic system with Buildroot is easy and typically takes 15-30 minutes.
KVM (for Kernel-based Virtual Machine) is a full virtualization solution for Linux on x86 hardware containing virtualization extensions. It consists of a loadable kernel module, kvm.ko, that provides the core virtualization infrastructure and a processor specific module, kvm-intel.ko or kvm-amd.ko.
C is a general-purpose, procedural computer programming language supporting structured programming, lexical variable scope, and recursion, with a static type system.
C++ is a general-purpose programming language created by Bjarne Stroustrup as an extension of the C programming language, or “C with Classes”.
Erlang is a programming language used to build massively scalable soft real-time systems with requirements on high availability. Some of its uses are in telecoms, banking, e-commerce, computer telephony and instant messaging. Erlang’s runtime system has built-in support for concurrency, distribution and fault tolerance.
Fortran is a general-purpose, compiled imperative programming language that is especially suited to numeric computation and scientific computing.
Go is a statically typed, compiled programming language designed at Google. Go is syntactically similar to C, but with memory safety, garbage collection, structural typing, and CSP-style concurrency.
Currently we support compilation of go source files using
gccgotool suite ported to Tachym Prodigy® processor.
JVM (Java Virtual Machine) is an abstract machine. It is a specification that provides runtime environment in which java bytecode can be executed.
Lua is a powerful, efficient, lightweight, embeddable scripting language. It supports procedural programming, object-oriented programming, functional programming, data-driven programming, and data description.
Perl is a family of two high-level, general-purpose, interpreted, dynamic programming languages. It runs on over 100 platforms from portables to mainframes and is suitable for both rapid prototyping and large-scale development projects.
PHP is a popular open source general-purpose scripting language that is especially suited to web development and can be embedded into HTML.
Python is an interpreted, high-level and general-purpose programming language. It is used successfully in thousands of real-world business applications around the world, including many large and mission critical systems.
R is a language and environment for statistical computing and graphics. It is a GNU project which is similar to the S language and environment.
R provides a wide variety of statistical (linear and nonlinear modelling, classical statistical tests, time-series analysis, classification, clustering, …) and graphical techniques, and is highly extensible.
R can be used, for instance, in cooperation with Gnuplot, which is also supported.
Ruby is an interpreted, high-level and general-purpose programming language with a focus on simplicity and productivity.
Tcl is a high-level, general-purpose, interpreted, dynamic programming language. It is suitable for a very wide range of uses, including web and desktop applications, networking, administration, testing and many more.
Performance testing and optimization
Benchmark suites developed by The Standard Performance Evaluation Corporation (SPEC).
Test suite consists of 12 benchmark programs, designed to test exclusively the integer performance of the system.
Test suite consists of benchmark programs designed to test exclusively the integer performance of the system.
Test suite contains 17 benchmark programs, designed to evaluate the floating-point operations performance of the system.
Test is organized in 2 suites: SPECrate 2017 Floating Point and SPECspeed 2017 Floating Point containing in total 23 benchmark programs, designed to evaluate the floating-point operations performance of the system.
The Linpack Benchmark is a measure of a computer’s floating-point rate of execution. It is determined by running a computer program that solves a dense system of linear equations. The Linpack Benchmark is something that grew out of the Linpack software project. It was originally intended to give users of the package a feeling for how long it would take to solve certain matrix problems.
Web and E-mail
Apache is the most widely used open-source cross-platform web server software. The Apache HTTP Server Project is part of the Apache Software Foundation.
Postfix is a free and open-source mail transfer agent that routes and delivers electronic mail.
Dovecot is an open-source IMAP and POP3 server for Unix-like operating systems, written primarily with security in mind.
MariaDB Server is one of the most popular open source relational databases. It’s made by the original developers of MySQL. MariaDB supports a lot of different storage engines.
PostgreSQL is a powerful, open source object-relational database system with over 30 years of active development that has earned it a strong reputation for reliability, feature robustness, and performance.
MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. MongoDB is a NoSQL database program, which stores data in JSON-like documents with dynamic schema.
SQLite is the most used database engine in the world. SQLite is a C-language library that implements a small, fast, self-contained, high reliability, full-featured SQL database engine.
Editors and VCS
Git is an open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Subversion (abbreviate Svn after its command name svn) is a software versioning and revision control system distributed as open source under the Apache License.
Vim is a highly configurable text editor built to make creating and changing any kind of text very efficient. It is included as “vi” with most UNIX systems and with Apple OS X.
Emacs is the advanced, extensible, customizable, self-documenting editor.
With tens of thousands of users, RabbitMQ is one of the most popular open source message brokers.
RabbitMQ is lightweight and easy to deploy on premises and in the cloud. It supports multiple messaging protocols. RabbitMQ can be deployed in distributed and federated configurations to meet high-scale, high-availability requirements.
gRPC is a modern open source high performance Remote Procedure Call (RPC) framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking and authentication. It is also applicable in last mile of distributed computing to connect devices, mobile applications and browsers to backend services.
Sed is a stream editor, which is used to perform basic text transformation on an input stream.
Gawk is the GNU implementation of Awk, a specialized programming language for the easy manipulation of formatted text, such as tables of data.
Gnuplot is a portable command-line driven graphing utility for Linux, OS/2, MS Windows, OSX, VMS, and many other platforms.
It was originally created to allow scientists and students to visualize mathematical functions and data interactively, but has grown to support many non-interactive uses such as web scripting.
Gnuplot works well with the R programming language, which is also supported.
Grep is a command-line utility for searching plain-text data sets for lines that match a regular expression.
gzip is a single-file/stream lossless data compression utility, where the resulting compressed file generally has the suffix .gz.
GNU tar is an archiving program designed to store multiple files in a single file (an archive), and to manipulate such archives.
Zsh is a shell designed for interactive use, although it is also a powerful scripting language. Many of the useful features of bash, ksh, and tcsh were incorporated into zsh; many original features were added.
Netscape Portable Runtime (NSPR) provides a platform-neutral API for system level and libc-like functions. The API is used in the Mozilla clients, many of Red Hat’s and Oracle’s server applications, and other software offerings.
Activation & Loss Function – optimized utilizing Tachyum vector instructions in standard and low precision modes.
Dense GEMM (General Matrix Multiply) library implemented utilizing Tachyum matrix instructions in standard and low precision modes, stochastic rounding, single and multithreaded.
Custom Sparse GEMM library implemented utilizing Tachyum vector and matrix instructions.
Convolutional and Dense operators implemented utilizing Tachyum matrix instructions in standard and low precision modes, including depthwise separable and pointwise convolutions.
Circulant and Butterfly Convolutional and Dense operators implemented utilizing custom FFT (fast Fourier transform) for matrix multiplication.
AI Frameworks Custom Extensions
The BLAS, Basic Linear Algebra Subprograms are routines that provide standard building blocks for performing basic vector and matrix operations.
Static and dynamic loss scaling.
Magnitude based block pruning
Implemented in standard and low precision modes.
- Resnet: Residual Networks.
- Vision Transformer – ViT, DeiT
- MobileNet: Model designed to be used in mobile applications.
- ShuffleNet: An extremely efficient convolutional neural network for mobile devices.
Implemented in standard and low precision modes.
- YOLO: A clever convolutional neural network (CNN) for doing object detection in real-time.
- MaskRCNN: A deep neural network aimed to solve instance segmentation problem in machine learning or computer vision.
Implemented in standard and low precision modes utilizing compression and sparsity.
- BERT: Bidirectional Encoder Representations from Transformers is a Transformer-based machine learning technique for NLP pre-training developed by Google.
- Sparse Transformer: Transformer based architecture which utilises sparse factorizations of the attention matrix.
Neural ODE: Neural Ordinary Differential Equations.
Graph Neural ODE: A counterpart to GNNs (graph neural networks) where the input-output relationship is determined by a continuum of GNN layers, blending discrete topological structures and differential equations.
Neural PDE: Neural partial differential equation.
DeepMD-kit is a package written in Python/C++, designed to minimize the effort required to build deep learning based model of interatomic potential energy and force field and to perform molecular dynamics (MD). This brings new hopes to addressing the accuracy-versus-efficiency dilemma in molecular simulations.
Quantum ESPRESSO is an integrated suite of Open-Source computer codes for electronic-structure calculations and materials modeling at the nanoscale. It is based on density-functional theory, plane waves, and pseudopotentials.
LAMMPS is a classical molecular dynamics code with a focus on materials modeling. It’s an acronym for Large-scale Atomic/Molecular Massively Parallel Simulator. It can be used to model atoms or, more generically, as a parallel particle simulator at the atomic, meso, or continuum scale.
Compilers and Libraries
The Clang project provides a language front-end and tooling infrastructure for languages in the C language family (C, C++, Objective C/C++, OpenCL, CUDA, and RenderScript) for the LLVM project.
Clang is considered to be a production quality C, Objective-C, C++ and Objective-C++ compiler. As example, Clang is used in production to build performance-critical software like Chrome or Firefox.
Newlib is a C library intended for use on embedded systems. It is a conglomeration of several library parts, all under free software licenses that make them easily usable on embedded products.
Boot loaders and monitors
Coreboot is an extended firmware platform that delivers a lightning fast and secure boot experience on modern computers and embedded systems.
LinuxBoot is a firmware for modern servers that replaces specific firmware functionality like the UEFI DXE phase with a Linux kernel and runtime.
Improves boot reliability by replacing lightly-tested firmware drivers with hardened Linux drivers.
Improves boot time by removing unnecessary code.
Allows customization of the initrd runtime to support site-specific needs (both device drivers as well as custom executables).
Das U-Boot (subtitled “the Universal Boot Loader” and often shortened to U-Boot) is an open-source, primary boot loader used in embedded devices to package the instructions to boot the device’s operating system kernel.
The OpenBMC project is a Linux Foundation collaborative open-source project whose goal is to produce an open-source implementation of the Baseboard Management Controllers (BMC) Firmware Stack. OpenBMC is a Linux distribution for BMCs meant to work across heterogeneous systems that include enterprise, high-performance computing (HPC), telecommunications, and cloud-scale data centers.
Performance testing and optimization
The High Performance Conjugate Gradients (HPCG) Benchmark project is an effort to create a new metric for ranking HPC systems. HPCG is intended as a complement to the High Performance LINPACK (HPL) benchmark, currently used to rank the TOP500 computing systems. HPCG is designed to exercise computational and data access patterns that more closely match a different and broad set of important applications.
HPL is a High-Performance Linpack benchmark implementation. The code solves a uniformely random system of linear equations and reports time and floating-point execution rate using a standard formula for operation count.
LMbench is a suite of simple, portable, ANSI/C microbenchmarks for UNIX/POSIX. In general, it measures two key features: latency and bandwidth. LMbench is intended to give system developers insight into basic costs of key operations.
Multichase is a pointer chaser benchmark which measures the average latency of pointer-chase operations.
The STREAM benchmark is a simple synthetic benchmark program that measures sustainable memory bandwidth (in MB/s) and the corresponding computation rate for simple vector kernels.
The Xen Project is focused on advancing virtualization in a number of different commercial and open source applications, including server virtualization, Infrastructure as a Services (IaaS), desktop virtualization, security applications, embedded and hardware appliances, and automotive/aviation.
Docker is a set of platform as a service products that use OS-level virtualization to deliver software in packages called containers. Containers are isolated from one another and bundle their own software, libraries and configuration files; they can communicate with each other through well-defined channels.