Hailo¶
CVEDIA-RT supports Hailo H8, Hailo H15, Hailo H10 and all it's variants in either M.2, PCI-E and standalone versions.
Limitations
Some models are not available in this platform, when this happens CVEDIA-RT will automatically fallback to the next best backend.
Supported Hailo versions¶
HailoRT | DFC | CVEDIA-RT Version |
---|---|---|
4.13.0 | 3.23.0 | 2023.4.x |
4.14.x | 3.24.0 | 2023.5.x |
4.16.0 | 3.26.0 | 2024.1.x |
4.17.0 | 3.27.0 | 2024.2.0 |
4.17.0 | 3.27.0 | 2024.2.1 |
4.16.0 | 3.26.0 | 2024.2.2 |
4.16.0 | 3.26.0 | 2024.2.3 |
4.16.0 | 3.26.0 | 2024.2.4 |
4.16.0 | 3.26.0 | 2024.2.5 |
HailoRT Versions
The version of HailoRT must match the table above for acceleration to work.
Supported Hailo Hardware arch¶
- HailoH8
- HailoH8L
- HailoH8R
- Hailo15M (HailoRT 4.16+)
- Hailo15H (HailoRT 4.16+)
- Hailo10H (HailoRT 4.19+)
HailoRT driver¶
If the installed driver and CVEDIA-RT supported driver don't align models won't be able to load or might crash the accelerator. Make sure that you have the correct driver installed.
Open Device Manager
-> System Devices
-> Hailo XX AI
-> Properties
, you should see the driver version in the General
tab:
Run ldconfig -v | grep hailo
to find what hailort version you've currently loaded.
If you need to install a different driver version on linux...
- Use
apt-get
to uninstall hailort - Reboot
- Check if the hailo drivers are gone using
ldconfig -vp | grep hailo
, if you still see them delete the related files - Install the proper package
- Reboot
- Check if hailo drivers are loaded and have the correct version with
ldconfig -vp | grep hailo
PCI-E link width¶
It's very important to assure that hailo is running at PCI-E 4x link width. There's a significant loss of performance if you run at 2x or 1x.
To make sure you're running at maximum speed:
You can check on Device Manager
-> System devices
-> Hailo XX Accelerator
-> Details
-> PCI current link width
You should see 0000004
, meaning 4x.
Find PCI address of hailo:
# lspci | grep -i co-proc
0000:01:00.0 Co-processor: Device 1e60:2864 (rev 01)
Query For speed:
# lspci -vv -s 0000:01:00.0 | grep -i width
LnkCap: Port #0, Speed 8GT/s, Width x4, ASPM L0s L1, Exit Latency L0s <1us, L1 <2us
LnkSta: Speed 8GT/s (ok), Width x4
In this case LnkSta
is the link stablished with the device with Speed 8GT/s
and Width x4
meaning it's working at full speed. If it says downgraded
it means it's working at slower than LnkCap
(link capabilities).
Benchmarking Hailo¶
Besides CVEDIA-RT's own benchmarking tools, hailo has a special tool for monitoring the device within their hailortcli
bundle.
You can monitor the device by setting HAILO_MONITOR=1
env variable, running RT then opening the monitor using haiortcli monitor
.
For example on linux native installs, we can run CVEDIA-RT's benchmark tool in the background then run hailortcli monitor to see device utilization:
export HAILO_MONITOR=1
rtcmd inference benchmark -u hailo.auto://pva_det/rgb/medium_y6_mosaic_rot90_320x320/240326 -n 10000 -i 1 -t 16 -p 16 &> /dev/null &
hailortcli monitor
Will show:
How to monitor when running RT inside docker
- Call
./run.sh
with-- -e HAILO_MONITOR=1
to add the ENV variable globally to the docker container - Shell into the container, eg:
docker exec -it cvedia-rt /bin/bash
(the container name might be different) - Install the same version of the release HailoRT within the container
- Run
hailortcli monitor
inside the container while RT is using the hardware