Edge Software Catalog
Support for issues related to Edge Software Catalog
Announcements
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.
481 Discussions

iGPU in IoTEdge EFLOW Docker

davidrc
Beginner
2,613 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
2,525 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
2,580 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
2,572 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
2,526 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
2,465 Views

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


0 Kudos
Reply