Edge Software Catalog
Support for issues related to Edge Software Catalog
442 Discussions

iGPU in IoTEdge EFLOW Docker

davidrc
Beginner
1,935 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-acceleration-for-your-linux-on-windows-deployment 

https://www.intel.com/content/www/us/en/developer/articles/technical/deploy-reference-implementation-to-azure-iot-eflow.html#learn-more 

 

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
1,847 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

0 Kudos
4 Replies
Xiang_Intel
Moderator
1,902 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

0 Kudos
davidrc
Beginner
1,894 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

 

 

0 Kudos
Xiang_Intel
Moderator
1,848 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

0 Kudos
JesusE_Intel
Moderator
1,787 Views

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


0 Kudos
Reply