How to confirm whether BrainFrame is running an algorithm on HDDL Hardware

The purpose of this post is to explain in-depth how BrainFrame tries to load OpenVINO capsules.

Short Answer:

Check the BrainFrame logs for an error of the following format (link to source code):

Failed to load {BACKEND CLASS NAME} onto device MULTI:CPU,HDDL. 
Error: {OPENVINO ERROR}. Trying again with device_name='CPU'

To get BrainFrame logs, you can run brainframe compose logs -f core. You can also filter the logs by running:

brainframe compose logs -f core | grep Failed

Long Answer:

  1. BrainFrame initially loads a capsule and checks what devices the capsule supports. Capsules specify the logic for device loading by implementing a device_mapper. Take this line of our open source face detector

  2. The function DeviceMapper.map_to_openvino_devices() is calling the following open-source code from the VisionCapsules library, vcap

  3. This code initially checks for an environment variable called OPENVINO_DEVICE_PRIORITY to see how it should prioritize openvino devices. By default, it loads onto the following device name: MULTI:CPU,HDDL. That means it gives CPU priority, and will also load onto HDDL as secondary priority.

To edit how BrainFrame loads onto OpenVINO devices, create a .env file at


In the above line, we give priority to HDDL devices over CPU.

Debugging HDDL Issues

If you are getting the Failed to load error, this can happen because the HDDL drivers are not available on the host computer. Unfortunately, to run HDDL in docker, the drivers must be installed on the host. To do this, install OpenVINO on the host computer, and run the following lines:

echo "export HDDL_INSTALL_DIR=/opt/intel/openvino/deployment_tools/inference_engine/external/hddl/" >> ~/.bashrc
echo "source /opt/intel/openvino/bin/" >> ~/.bashrc

# Restart terminal
cd ${HDDL_INSTALL_DIR}/drivers
sudo bash install
1 Like