Intel® Edge Software Hub
Get help on building Edge Software Hub solutions for edge compute node
Announcements
Welcome to the Intel Community! If you like the answer to your question, please mark it as 'Accepted Solution' to help others.

The Edge Software Vision Package for Red Hat Enterprise Linux is now available here.

Learn more about developing on Intel® Hardware and Software here.

iGPU in IoTEdge EFLOW Docker

davidrc
Beginner
472 Views

I am trying to dockerize an application that requires GPU Acceleration (At least OpenCL) and deploy it to Azure IoTEdge, however I am not able to view any result inside the docker container using the clinfo command while running the container inside IoTEdge's EFLOW. I have done the steps indicated in the following articles, however still I am not able to use view the gpu inside a docker container.

https://docs.microsoft.com/en-us/azure/iot-edge/gpu-acceleration?view=iotedge-2020-11

https://docs.microsoft.com/en-us/azure/iot-edge/gpu-acceleration?view=iotedge-2020-11#using-gpu-acce... 

https://www.intel.com/content/www/us/en/developer/articles/technical/deploy-reference-implementation... 

 

For reference, I have been able to successfully view the GPU inside a docker container running on a WSL environment installing the correct drivers and using the following command:

 

 

docker run -it --device /dev/dxg --volume /usr/lib/wsl:/usr/lib/wsl <image_name>

 

 

However I couldn't replicate that inside EFLOW because there is no /dev/dxg device

 

Any thoughts on how could I access the iGPU inside a docker in EFLOW, or at least how to verify if I have done the steps shown in the links correctly?

 

 

 

Labels (1)
0 Kudos
1 Solution
Xiang_Intel
Moderator
384 Views

Hi Davidrc,

 

Sorry for the late catch-up. Just to check with you again, do you enable ParaVirtualization for GPU when you are running your Deploy-Eflow command? Without specifying this you will not able to see /dev/dxg device in your EflowVM.

 

Here is the sample of the command that you can use:

$cpu_count = 4
$memory = 4096
$hard_disk = 30
$gpu_name = (Get-WmiObject win32_VideoController | where{$_.name -like "Intel(R)*"}).caption

Deploy-Eflow -acceptEula yes -acceptOptionalTelemetry no -headless -cpuCount $cpu_count -memoryInMB $memory -vmDiskSize $hard_disk -gpuName $gpu_name -gpuPassthroughType ParaVirtualization -gpuCount 1

You should be able to see /dev/dxg device if GPU is passthrough correctly to the EflowVM 

 

Regards,

Lim Xiang Yang

View solution in original post

4 Replies
Xiang_Intel
Moderator
439 Views

Hi Davidrc,

 

May I know if I can get more info?

  1. Windows Version that is used?
  2. Intel graphics driver that is installed?
  3. System processor that is used?

 

Regards,

Lim Xiang Yang

davidrc
Beginner
431 Views

Sure,

 

  1. Windows 10 Pro version 21H2
  2. Intel® Graphics – Windows DCH Drivers version 30.0.101.1660 and (inside docker) Intel Compute Runtime + OpenCL Driver version 22.15.22905
  3. Intel Core i7-8560U With UHD Graphics 620

 

 

Xiang_Intel
Moderator
385 Views

Hi Davidrc,

 

Sorry for the late catch-up. Just to check with you again, do you enable ParaVirtualization for GPU when you are running your Deploy-Eflow command? Without specifying this you will not able to see /dev/dxg device in your EflowVM.

 

Here is the sample of the command that you can use:

$cpu_count = 4
$memory = 4096
$hard_disk = 30
$gpu_name = (Get-WmiObject win32_VideoController | where{$_.name -like "Intel(R)*"}).caption

Deploy-Eflow -acceptEula yes -acceptOptionalTelemetry no -headless -cpuCount $cpu_count -memoryInMB $memory -vmDiskSize $hard_disk -gpuName $gpu_name -gpuPassthroughType ParaVirtualization -gpuCount 1

You should be able to see /dev/dxg device if GPU is passthrough correctly to the EflowVM 

 

Regards,

Lim Xiang Yang

JesusE_Intel
Moderator
324 Views

If you need any additional information, please submit a new question as this thread will no longer be monitored.


Reply