![]() |
VisionWorks Toolkit ReferenceDecember 18, 2015 | 1.2 Release |
The following sections describe the system requirements to run NVIDIA® VisionWorks™.
For information about supported system software and the corresponding versions of OpenCV and NVIDIA® CUDA®, see the release notes.
This section discusses various Tegra CPU and GPU performance topics. The power draw of the Tegra processor and the overall embedded board are closely related to the performance of the Tegra processor; therefore, you must choose carefully when deciding which features:
debugfs
and non-upstream sysfs
nodes may change in future NVIDIA® Tegra® Linux Driver Package releases.Tegra K1 is designed for mobile and embedded use-cases and thus contains a significant number of power reduction systems to control—based on runtime use—when parts of the hardware run faster, slower, or are turned off. This works well for most use cases because the default settings give high performance for many intense projects and lower power draw for many light tasks; however, there may be use cases where developers want to force a lower or higher performance on some parts of the hardware, such as to run benchmarks of the peak performance or enforce lower power draw.
To automatically turn on and off the 4 main CPU cores and the 5th companion core, applications can use cpuquiet
in the kernel in NVIDIA® Tegra® Linux Driver Package (also known as "Linux for Tegra" or L4T). This is the mechanism for dynamically hot-plugging CPU cores based on workload and policy. There are many ways to adjust the performance and power behavior at runtime or always-on booting.
Generally, the CPU performance and power options are the following (from the highest power draw to the lowest):
sudo
command or run su
to log in as root user.To obtain full CPU performance (for example, for performance measurement, benchmarking, or when power draw is not important), disable CPU scaling and force the four main CPU cores to run always at maximum performance until rebooting:
# echo 0 > /sys/devices/system/cpu/cpuquiet/tegra_cpuquiet/enable # echo 1 > /sys/devices/system/cpu/cpu0/online # echo 1 > /sys/devices/system/cpu/cpu1/online # echo 1 > /sys/devices/system/cpu/cpu2/online # echo 1 > /sys/devices/system/cpu/cpu3/online # echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
To turn each CPU core online manually, execute:
# echo 1 > /sys/devices/system/cpu/cpu0/online # echo 1 > /sys/devices/system/cpu/cpu1/online # echo 1 > /sys/devices/system/cpu/cpu2/online # echo 1 > /sys/devices/system/cpu/cpu3/online
Restricting the CPU usage to the low-power companion core can significantly reduce peak power (for example, when running on a power-limited battery pack). The fifth companion core in Tegra K1 is a Cortex-A15 core with NEON and 32KB L1 cache and 512KB L2 private cache, but runs at lower performance than any of the main cores. To use just the low-power core, run this commands as root:
# echo 0 > /sys/devices/system/cpu/cpuquiet/tegra_cpuquiet/enable # echo LP > /sys/kernel/cluster/active
To manually control the clock frequencies of the GPU, first determine the rates supported (listed by sysfs
in kHz):
# cat /sys/kernel/debug/clock/gbus/possible_rates 72000 108000 180000 252000 324000 396000 468000 540000 612000 648000 684000 708000 756000 804000 852000 (kHz)
Then set a rate (for example, the maximum of 852000 kHz), specified in Hz:
# echo 852000000 > /sys/kernel/debug/clock/override.gbus/rate # echo 1 > /sys/kernel/debug/clock/override.gbus/state
Finally, verify the rate:
# cat /sys/kernel/debug/clock/gbus/rate 852000
The gbus
sysfs
nodes control the GPU's core clock. To control the GPU's memory clock, substitute emc
for gbus
:
# cat /sys/kernel/debug/clock/emc/possible_rates 12750 20400 40800 68000 102000 204000 300000 396000 528000 600000 792000 924000 (kHz) # echo 924000000 > /sys/kernel/debug/clock/override.emc/rate # echo 1 > /sys/kernel/debug/clock/override.emc/state # cat /sys/kernel/debug/clock/emc/rate 924000000
For more information, see the Jetson TK1 guides at: