Execution-Time Profiling for NVIDIA Jetson Platforms in Simulink
You can create execution-time profiles for Simulink® generated code running on NVIDIA® Jetson™ platforms to measure execution times on the Jetson hardware. To create an execution-time profile, you specify configuration parameters for the profile, then generate the profile using processor-in-the-loop (PIL) or external mode simulations. You can analyze the profiling data from the PIL or external mode simulation using the Code Profile Analyzer.
Open a Simulink Model for Profiling
This example uses the Simulink model TopModelPil.slx
from the example Verify Generated Code on NVIDIA Targets Using PIL in Simulink. The model accepts an
input signal from the MATLAB® workspace and counts the number of peaks.
To open the model, execute this command in the MATLAB Command Window:
openExample("nvidia/PILExecutionOnNVIDIATargetsUsingSimulinkExample",... "supportingFile","TopModelPil.slx")
To generate the input data, use the model stop time and step size to create a signal
with the correct dimensions. The model uses a stop time of 10 seconds and a step size of 0.2
seconds. Create a struct named Input
with two fields:
time
, which contains the time of each step in the modelsignals
, which contains the value of the input at each step
StopTime = 10; StepSize = 0.2; Input.time = (0:StepSize:StopTime)'; Input.signals.values = sin(Input.time); Input.signals.dimensions = 1;
To load inputs from the MATLAB workspace, enable the LoadExternalInput
parameter. Specify
the ExternalInput
parameter to load the Input
variable
from the MATLAB
workspace.
set_param("TopModelPil","LoadExternalInput","on"); set_param("TopModelPil","ExternalInput","Input");
Connect to NVIDIA Jetson
To communicate with the NVIDIA
Jetson hardware, create a live hardware connection object using the
jetson
function. When connecting to the target board for the first
time, you must input the host name or IP address, user name, and password of the target
board.
hwobj = jetson("jetson-deviceaddress","username","password");
On subsequent connections, the Jetson hardware connection object reuses the settings from the most recent successful connection to an NVIDIA board.
hwobj = jetson;
Configure the Simulink Model for Execution-Time Profiling
Before you create an execution-time profile, you first enable profiling and set the configuration for the profile in the Configuration Parameters dialog box.
In the model, in the toolstrip, open the Apps tab. Under the Setup to Run on Hardware section, click Run on Hardware Board.
In the toolstrip, in the Hardware tab, click Hardware Settings. In the Configuration Parameters dialog box, in the left pane, open the Code Generation > Verification parameters.
In the Code execution time profiling section, select Measure task execution time.
To profile the reference model and subsystem functions in the generated code, set Measure function execution times to
Coarse (referenced models and subsystems only)
.
Alternatively, use the set_param
function to configure
the model
programmatically.
set_param("TopModelPil","CodeExecutionProfiling","on"); set_param("TopModelPil","CodeProfilingInstrumentation","coarse");
Generate the Execution-Time Profile
To generate the execution-time profile, simulate the model using PIL or external mode simulation.
Generate Execution-Time Profile Using PIL
You can generate an execution-time profile by generating code for the model and running the code on NVIDIA Jetson using PIL. Simulink measures task execution times during the PIL simulation and creates an execution-time profile.
Set the SimulationMode
parameter to processor-in-the-loop
(pil)
, and start PIL execution by using the sim
command.
set_param("TopModelPil","SimulationMode","processor-in-the-loop (pil)"); simOutput = sim("TopModelPil",StopTime);
simOutput
contains the execution profile from the PIL simulation. By
default, the execution profile is named executionProfile
. Access the
execution profile using dot
notation.simOutput.executionProfile
Generate Execution-Time Profile Using External Mode
Alternatively, you can generate an execution-time profile for the model using external mode simulation. To run the model in external mode, disable PIL block creation. Additionally, configure the model to return the simulation output as one or more workspace variables.
set_param("TopModelPil","CreateSILPILBlock","None"); set_param("TopModelPil","ReturnWorkspaceOutputs","off");
In the model, in the Hardware tab, click Monitor & Tune to run the model in external mode.
The simulation returns the executionProfile
variable in the
MATLAB workspace.
View Profiling Data for the Model
To examine the profiling data from the model, use the Code Profile Analyzer.
Open the execution-time profile in the analyzer by using the
coder.profile.show
function.
coder.profile.show(simOutput.executionProfile);

The analyzer contains the profiling data for the generated code, including:
The function execution times for:
The model initialize function,
TopModelPil_initialize
The model step function,
TopModelPil_step
The model terminate function,
TopModelPil_terminate
The CPU utilization
The Code Profile Analyzer displays the time in ticks by default. To change the unit, in the toolstrip, use the Time unit parameter.
See Also
Objects
Apps
- Code Profile Analyzer (Embedded Coder)