Section: Misc. Reference Manual Pages (l)
Updated: July 31, 2017



simd - Recoding Infrastructure for SystemC (RISC) SIMD Advisor  


simd [ options ] design [ options ]  


simd is an analysis tool for exploiting data-level parallelism based on the RISC compiler for the SystemC language. The purpose of simd is to parse and analyze a SystemC source program, and then provide advise to the user regarding possible optimizations of the model to exploit SIMD parallelism for faster out-of-order parallel simulation.

Using the command syntax shown in the synopsis above, the specified design is compiled and statically analyzed. By default, simd reads the SystemC source file, performs preprocessing and builds an internal representation (abstract syntax tree) of the SystemC constructs in the model. Next, thread control flow analysis is performed and encountered loops are analyzed for potential single-instruction-multiple-data (SIMD) execution which exploits data-level parallelism and can lead to significantly improved simulation performance in Out-of-Order Parallel Discrete Event Simulation (OoO PDES).

Specifically, simd presents to the user a list of loops that might be suitable for SIMD vectorization. The user is expected to review the options and, based on his application knowledge, select those loops that do not contain SIMD conflicts, such as parallel accesses to overlapping memory locations. For confirmed loops, the user then inserts into the source code #pragma omp simd annotations immediately before the selected loops. The annotated model can then be compiled with risc and option -risc:icpc using the Intel C++ compiler icpc to generate an executable for execution on a SIMD-capable target architecture with improved performance.

The output of simd lists the loops found in the control flow of the SystemC threads of the model. For each loop, its line number in the source code is listed together with its analyzed SIMD qualification. If the loop is not qualified, a reason for its disqualification may or may not be shown in form of an error code.

A qualification error code of 1 indicates the use of an invalid array index in the loop. The code 2 indicates that a non-loop local variable is written. Finally, code 3 indicates that an unsupported construct (e.g. goto statement) is found in the loop.

On successful completion, the simd advisor returns the value 0. In case of errors during processing, an error code with a brief diagnostic message is written to the standard error stream and the compilation is aborted with an exit value greater than zero.  


specifies the file name of the input SystemC design model; by default, the base name of design is used as base name for the intermediate and output files;


-h | --help
print the simd advisor version and a brief usage information message to standard output and quit;
-v | --verbose
increment the verbosity level so that the tasks performed are logged to standard error (default: be silent); at level 1, high-level messages about the tasks performed are displayed; at level 2, additional details such as input and output file names are listed; at level 3, very detailed information about each executed task is printed;
increment the verbosity level by two counts (same as -v -v );
increment the verbosity level by three counts (same as -v -v -v );
-w | --warnings
increment the warning level so that warning messages are enabled (default: warnings are disabled); four levels are supported ranging from only important warnings (level 1) to pedantic warnings (level 4); for most cases, warning level 2 is recommended ( -w -w );
increment the warning level by two counts (same as -w -w );
increment the warning level by three counts (same as -w -w -w );
add the specified dir to the include path (extend the list of directories to be searched for including source files); include directories are searched in the order of their specification; the standard include path ($SYSTEMC_LW_HOME/include) is automatically appended to this list; by default, only the standard include directories are searched;
-o output file
specify the name of the text output file explicitly (default: none);
pass this option through to the underlying ROSE compiler (default: none);
-<GNU option>
pass this option through to the underlying GNU compiler (default: none);


is used at compile-time to determine the installation directory of the RISC compiler and simulator where the RISC system components are located (default: none);
is used at compile-time to find the RISC light-weight SystemC header files which are expected in directory $SYSTEMC_LW_HOME/include (default: none);


The SIMD Advisor is release version 0.4.0.  


Zhongqi Cheng <>, Rainer Doemer <>, Guantao Liu <>, and Tim Schmidt <>.  


(c) 2017 CECS, University of California, Irvine  


Open source BSD license terms apply.  


This is an academic proof-of-concept prototype implementation, not commercial-quality software. See the file BUGS in the software packages for known limitations.

This document was created by man2html using the manual pages.
Time: 15:44:46 GMT, July 31, 2017