Table of Contents
When "Software Only" is Not Enough
Software and I/O Architecture Diagram
Packet and Media Processing Data Flow Diagram
SDK and Demo Download
mediaTest (streaming media, buffering, transcoding, and packet RFCs)
iaTest (image analytics)
paTest (predictive analytics from log data)
Documentation, Support, and Contact
The SigSRF (Streaming Resource Functions) SDK introduces a scalable approach to media, HPC, and AI servers. The basic concept is to scale between cloud, private cloud, and Edge and IoT servers, while maintaining a cloud programming model.
The primary objectives of SigSRF software are:
- provide high performance software modules for media, AI (deep learning), and analytics streaming applications
- scale up with or without GPU, and provide high capacity, "real-time at scale" streaming and processing
- scale down with or without ARM, and provide IoT and Edge solutions for SWaP 1 constrained applications
- maintain full program compatibility with cloud servers, including open source software support, server architectures, latest programming languages, etc.
SigSRF software is designed to run on (i) private, public, or hybrid cloud servers and (ii) embedded system servers. Demos available on this page are intended to run on any Linux server based on x86, ARM, and PowerPC, and on form-factors as small as mini- and micro-ITX.
SigSRF supports OpenCV, media transcoding, deep learning 2, speech recognition 2, and other calculation / data intensive applications. For applications facing SWaP, latency, or bandwidth constraints, SigSRF software supports a wide range of coCPU™ and SoC embedded device targets while maintaining a cloud compatible software architecture (see When Software Only is Not Enough below).
SigSRF supports concurrent multiuser operation in a bare-metal environment, and in a KVM + QEMU virtualized environment, cores and network I/O interfaces appear as resources that can be allocated between VMs. VM and host users can share also, as the available pool of cores is handled by a physical layer back-end driver. This flexibility allows media, HPC, and AI applications to scale between cloud, enterprise, and remote vehicle/location servers.
When "Software Only" is Not Enough
Cloud solutions are sometimes referred to as "software only", but that's an Intel marketing term. In reality there is no software without hardware. With the recent surge in deep learning / neural net chips attempting to emulate human intelligence -- and the ultra energy efficiency of the human brain -- hardware limitations have never been more apparent. In addition to AI technology, a wide range of HPC applications face hardware contraints. For 30 years people have failed to solve this with generic x86 processors, and it isn't likely to happen any time soon.
One promising solution is heterogeneous (mixed) cores that "front" streaming data and perform calculation intensive processing, combined with x86 cores that perform general processing. The basic concepts are (i) move calculation intensive processing closer to the data, and (ii) use cores that are extremely energy efficient for data calculation purposes. To enable mixed core processing, SigSRF supports coCPU™ technology, which adds NICs and up to 100s of coCPU cores to scale per-box streaming and performance density. Examples of coCPU cores include GPU, neural net chips, and Texas Instruments multicore CPUs. coCPUs can turn conventional 1U, 2U, and mini-ITX servers into high capacity, energy efficient edge servers for media, HPC, and AI applications, solving SWaP, latency, and bandwidth contraints. For example, an embedded AI server can operate independently of the cloud, acquiring new data and learning on the fly.
Available media processing and image analytics demos can make use of optional coCPU cards containing Texas Instruments c66x multicore CPUs (the demo programs will auto-discover coCPU hardware if installed -- coCPU hardware is not required for any of the demos). Besides TI, the expectation is there will soon be additional, suitable multicore CPU cards due to the explosion in deep learning applications, which is driving new chip and card development. For the time being, c66x series CPUs, although implemented in 45 nm, still provide a huge per-box energy efficiency advantage for applications with high amounts of convolution, FFT, and matrix operations.
1 SWaP = size, weight, and power consumption
2 In progress
SigSRF Software and I/O Architecture Diagram
Below is a SigSRF software and I/O architecture diagram.
SigSRF Packet and Media Processing Data Flow Diagram
Below is a SigSRF software streaming packet and media processing data flow diagram.
Some notes about the above data flow diagram:
Data flow matches mediaTest application C source code (packet_mode section of x86_mediaTest.c). Subroutine symbols are labeled with pktlib, voplib, and alglib API names.
A few areas of the flow diagram are somewhat approximated, to simplify and make easier to read. For example, loops do not have "for" or "while" flow symbols, and some APIs, such as DSCodecEncode() and DSFormatPacket(), appear in the flow once, but actually may be called multiple times, depending on what signal processing algorithms are in effect.
Multisession. The "Input and Packet Buffering", "Packet Processing", and "Media Processing and Output" stages are per-session, and repeat for multiple sessions. See Session Config File for more info.
Multichannel. For each session, The "Input and Packet Buffering", "Packet Processing", and "Media Processing and Output" stages of data flow are multichannel and optimized for high capacity channel processing.
Multithread. Each data flow stage is fully thread-safe, and could be placed in concurrent threads (although mediaTest source code currently doesn't include that). mediaTest does include multithread example command lines, in which case each thread includes all three (3) data flow stages. Also mediaTest can run in multiple instances concurrently.
Media signal processing and inference. The second orange vertical line divides the "packet domain" and "media domain". DSStoreStreamData() and DSGetStreamData() decouple these domains in the case of unequal ptimes. The media domain contains raw audio or video data, which allows signal processing operations, such as sample rate conversion, conferencing, filtering, echo cancellation, convolutional neural network (CNN) classification, etc. to be performed. Also this is where image and voice analytics takes place, for instance by handing video and audio data off to another process.
SDK and Demo Download
The SigSRF SDK and demo download consists of an install script and .rar files and includes:
A limited eval / demo version of several SigSRF demos, including media transcoding, image analytics, and H.264 video streaming (ffmpeg acceleration). For a detailed explanation of demo limits, see Demos below.
C/C++ source code showing Pktlib and Voplib API usage (source and Makefiles for demo programs included)
Concurrency examples, including stream, instance, and multiple user
All demos run on x86 Linux platforms. The mediaTest and iaTest demos will also utilize one or more coCPU cards if found at run-time. Example coCPU cards are shown here, and can be obtained from TI, Advantech, or Signalogic. Demo .rar files contain a coCPU software stack, including drivers. As noted above, coCPU technology increases per-box energy efficiency and performance density.
Separate RAR packages are provided for different Linux distributions. Please choose the appropriate one or closest match. For some files, the install script will auto-check for kernel version and Linux distro version to decide which file version to install (including coCPU driver, if you have a coCPU card).
All .rar files and the auto install script must stay together in the same folder after downloading.
Note that the install script checks for the presence of the unrar command, and if not found it will install the unrar package.
Media transcoding demos require tcpreplay or other method to generate packet traffic (using as input pcap files included in the install).
The install script requires sudo root privilege. In Ubuntu, allowing a user sudo root privilege can be done by adding the user to the “administrators” group (as shown here). In CentOS a user can be added to the “/etc/sudoers” file (as shown here). Please make sure this is the case before running the script.
Building Test and Demo Applications
Test and demo application examples are provided as executables, C/C++ source code and Makefiles. Executables may run, but if not (due to Linux distribution or kernel differences), they should be rebuilt using gcc. To allow this, the install script checks for the presence of the following run-time and build related packages: gcc, ncurses, lib-explain, and redhat-lsb-core (RedHat and CentOS) and lsb-core (Ubuntu). These are installed if not found.
Running the Install Script
To run the install script enter:
> source autoInstall_Sig_BSDK_2017v2.sh
The script will then prompt as follows:
1) Host 2) VM Please select target for co-CPU software install [1-2]:
After choosing an install target of either Host or VM, the script will next prompt for an install option:
1) Install SigSRF Software 2) Install SigSRF Software with coCPU Option 3) Uninstall SigSRF Software 4) Check / Verify 5) Exit Please select install operation to perform [1-4]:
If the install operation (1.) is selected, the script will prompt for an install path:
Enter the path for SigSRF software installation:
If no path is entered the default path is /usr/local.
If needed, the Check / Verify option can be selected to generate a log for troubleshooting and tech support purposes.
Available demos are listed below. The iaTest and paTest demos do not have a functionality limit. mediaTest demo functionality is limited as follows:
Data limit. Processing is limited to 3000 frames / payloads of data. There is no limit on data sources, which include various file types (audio, encoded, pcap), network sockets, and USB audio.
Concurrency limit. Maximum number of concurrent instances is two and maximum number of channels per instance is 2 (total of 4 concurrent channels).
If you need an evaluation demo with an increased limit for a trial period, contact us.
The mediaTest demo page gives example command lines for streaming media, buffering, transcoding, and packet RFCs. The demo allows codec output comparison vs. 3GPP reference files, per-core performance measurement (both x86 and coCPU cores), .wav file generation to experience codec audio quality, RTP packet transcoding using pcap files, and more. The state-of-the-art EVS codec is used for several of the command lines. Application C/C++ source code is included.
The iaTest demo page gives example command lines for image analytics and OpenCV testing. The iaTest demo performs image analytics operations vs. example surveillance video files and allows per-core performance measurement and comparison for x86 and coCPU cores. .yuv and .h264 file formats are supported. Application C/C++ source code is included.
The paTest demo page gives example command lines for a predictive analytics application that applies algorithms and deep learning to continuous log data in order to predict failure anomalies. Application Java and C/C++ source code is included.
Documentation, Support, and Contact
SigMRF Users Guide
SigMRF (Media Resource Functions) software is part of SigSRF software. The SigMRF User Guide provides detailed information about SigMRF software installation, test and demo applications, build instructions, etc.
coCPU Users Guide
The coCPU User Guide provides detailed information about coCPU and software installation, test and demo applications, build instructions, etc.
Technical Support / Questions
Limited tech support for the SigSRF SDK and coCPU option is available from Signalogic via e-mail and Skype. You can ask for group skype engineer support using Skype Id "signalogic underscore inc" (replace with _ and no spaces). For e-mail questions, send to "info at signalogic dot com".