Forum darktable FR
[Résolu] OpenCL sous Ubuntu avec Intel(R) HD Graphics. est-ce possible? - Version imprimable

+- Forum darktable FR (https://forums.darktable.fr)
+-- Forum : Utilisation de darktable (https://forums.darktable.fr/forumdisplay.php?fid=97)
+--- Forum : Installation (https://forums.darktable.fr/forumdisplay.php?fid=101)
+--- Sujet : [Résolu] OpenCL sous Ubuntu avec Intel(R) HD Graphics. est-ce possible? (/showthread.php?tid=2159)



[Résolu] OpenCL sous Ubuntu avec Intel(R) HD Graphics. est-ce possible? - Ngux - 07-01-18

Bonjour,

J’installe, je lis, je relis et je comprends rien.
Juste une question : est-il possible d'avoir OpenCL avec DT 2.4 sur Ubuntu 16.04 avec une carte Intel® HD Graphics Skylake ULT GT1.
J'ai installé Beignet. et j'ai suivi la procédure donnée ici : https://askubuntu.com/questions/850281/opencl-on-ubuntu-16-04-intel-sandy-bridge-cpu

Mais dans DT, j'ai toujours OpenCL "not avaliable".

En tripatouillant ces trucs Je suis bien au-dela de ce que je sais faire sur Ubuntu. Un avis éclairé me ferais du bien. Merci

Voici mon clinfo  puis le resultat du tools-master.
Code :
clinfo
Number of platforms                               1
 Platform Name                                   Intel Gen OCL Driver
 Platform Vendor                                 Intel
 Platform Version                                OpenCL 1.2 beignet 1.1.1
 Platform Profile                                FULL_PROFILE
 Platform Extensions                             cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_spir cl_khr_icd
 Platform Extensions function suffix             Intel

 Platform Name                                   Intel Gen OCL Driver
Number of devices                                 1
 Device Name                                     Intel(R) HD Graphics Skylake ULT GT1
 Device Vendor                                   Intel
 Device Vendor ID                                0x8086
 Device Version                                  OpenCL 1.2 beignet 1.1.1
 Driver Version                                  1.1.1
 Device OpenCL C Version                         OpenCL C 1.2 beignet 1.1.1
 Device Type                                     GPU
 Device Profile                                  FULL_PROFILE
 Max compute units                               12
 Max clock frequency                             1000MHz
 Device Partition                                (core)
   Max number of sub-devices                     1
   Supported partition types                     None, None, None
 Max work item dimensions                        3
 Max work item sizes                             512x512x512
 Max work group size                             512
 Preferred work group size multiple              16
 Preferred / native vector sizes                
   char                                                16 / 8      
   short                                                8 / 8      
   int                                                  4 / 4      
   long                                                 2 / 2      
   half                                                 0 / 8        (cl_khr_fp16)
   float                                                4 / 4      
   double                                               0 / 2        (n/a)
 Half-precision Floating-point support           (cl_khr_fp16)
   Denormals                                     No
   Infinity and NANs                             Yes
   Round to nearest                              Yes
   Round to zero                                 No
   Round to infinity                             No
   IEEE754-2008 fused multiply-add               No
   Support is emulated in software               No
   Correctly-rounded divide and sqrt operations  No
 Single-precision Floating-point support         (core)
   Denormals                                     No
   Infinity and NANs                             Yes
   Round to nearest                              Yes
   Round to zero                                 No
   Round to infinity                             No
   IEEE754-2008 fused multiply-add               No
   Support is emulated in software               No
   Correctly-rounded divide and sqrt operations  No
 Double-precision Floating-point support         (n/a)
 Address bits                                    32, Little-Endian
 Global memory size                              2147483648 (2GiB)
 Error Correction support                        No
 Max memory allocation                           1073741824 (1024MiB)
 Unified memory for Host and Device              Yes
 Minimum alignment for any data type             128 bytes
 Alignment of base address                       1024 bits (128 bytes)
 Global Memory cache type                        Read/Write
 Global Memory cache size                        8192
 Global Memory cache line                        64 bytes
 Image support                                   Yes
   Max number of samplers per kernel             16
   Max size for 1D images from buffer            65536 pixels
   Max 1D or 2D image array size                 2048 images
   Max 2D image size                             8192x8192 pixels
   Max 3D image size                             8192x8192x2048 pixels
   Max number of read image args                 128
   Max number of write image args                8
 Local memory type                               Global
 Local memory size                               65536 (64KiB)
 Max constant buffer size                        134217728 (128MiB)
 Max number of constant args                     8
 Max size of kernel argument                     1024
 Queue properties                                
   Out-of-order execution                        No
   Profiling                                     Yes
 Prefer user sync for interop                    Yes
 Profiling timer resolution                      80ns
 Execution capabilities                          
   Run OpenCL kernels                            Yes
   Run native kernels                            Yes
   SPIR versions                                 <printDeviceInfo:138: get   SPIR versions size : error -30>
 printf() buffer size                            1048576 (1024KiB)
 Built-in kernels                                __cl_copy_region_align4;__cl_copy_region_align16;__cl_cpy_region_unalign_same_offset;__cl_copy_region_unalign_dst_offset;__cl_copy_region_unalign_src_offset;__cl_copy_buffer_rect;__cl_copy_image_1d_to_1d;__cl_copy_image_2d_to_2d;__cl_copy_image_3d_to_2d;__cl_copy_image_2d_to_3d;__cl_copy_image_3d_to_3d;__cl_copy_image_2d_to_buffer;__cl_copy_image_3d_to_buffer;__cl_copy_buffer_to_image_2d;__cl_copy_buffer_to_image_3d;__cl_fill_region_unalign;__cl_fill_region_align2;__cl_fill_region_align4;__cl_fill_region_align8_2;__cl_fill_region_align8_4;__cl_fill_region_align8_8;__cl_fill_region_align8_16;__cl_fill_region_align128;__cl_fill_image_1d;__cl_fill_image_1d_array;__cl_fill_image_2d;__cl_fill_image_2d_array;__cl_fill_image_3d;
 Device Available                                Yes
 Compiler Available                              Yes
 Linker Available                                Yes
 Device Extensions                               cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_fp16 cl_khr_spir cl_khr_icd

NULL platform behavior
 clGetPlatformInfo(NULL, CL_PLATFORM_NAME, ...)  Intel Gen OCL Driver
 clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, ...)   Success [Intel]
 clCreateContext(NULL, ...) [default]            Success [Intel]
 clCreateContextFromType(NULL, CL_DEVICE_TYPE_CPU)  No devices found in platform
 clCreateContextFromType(NULL, CL_DEVICE_TYPE_GPU)  Success (1)
   Platform Name                                 Intel Gen OCL Driver
   Device Name                                   Intel(R) HD Graphics Skylake ULT GT1
 clCreateContextFromType(NULL, CL_DEVICE_TYPE_ACCELERATOR)  No devices found in platform
 clCreateContextFromType(NULL, CL_DEVICE_TYPE_CUSTOM)  No devices found in platform
 clCreateContextFromType(NULL, CL_DEVICE_TYPE_ALL)  Success (1)
   Platform Name                                 Intel Gen OCL Driver
   Device Name                                   Intel(R) HD Graphics Skylake ULT GT1

ICD loader properties
 ICD loader Name                                 OpenCL ICD Loader
 ICD loader Vendor                               OCL Icd free software
 ICD loader Version                              2.2.8
 ICD loader Profile                              OpenCL 1.2
    NOTE:    your OpenCL library declares to support OpenCL 1.2,
        but it seems to support up to OpenCL 2.1 too.

Et le resultat du test tools.master
Code :
./print-devices
platform 0: vendor 'Intel'
 device 0: 'Intel(R) HD Graphics Skylake ULT GT1'
ngux:~/Downloads/tools-master/ $ ./cl-demo 1000 10
Choose platform:
[0] Intel
Enter choice: 0
Choose device:
[0] Intel(R) HD Graphics Skylake ULT GT1
Enter choice: 0
---------------------------------------------------------------------
NAME: Intel(R) HD Graphics Skylake ULT GT1
VENDOR: Intel
PROFILE: FULL_PROFILE
VERSION: OpenCL 1.2 beignet 1.1.1
EXTENSIONS: cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_fp16 cl_khr_spir cl_khr_icd
DRIVER_VERSION: 1.1.1

Type: GPU
EXECUTION_CAPABILITIES: Kernel Native
GLOBAL_MEM_CACHE_TYPE: Read-Write (2)
CL_DEVICE_LOCAL_MEM_TYPE: Global (2)
SINGLE_FP_CONFIG: 0x6
QUEUE_PROPERTIES: 0x2

VENDOR_ID: 32902
MAX_COMPUTE_UNITS: 12
MAX_WORK_ITEM_DIMENSIONS: 3
MAX_WORK_GROUP_SIZE: 512
PREFERRED_VECTOR_WIDTH_CHAR: 16
PREFERRED_VECTOR_WIDTH_SHORT: 8
PREFERRED_VECTOR_WIDTH_INT: 4
PREFERRED_VECTOR_WIDTH_LONG: 2
PREFERRED_VECTOR_WIDTH_FLOAT: 4
PREFERRED_VECTOR_WIDTH_DOUBLE: 0
MAX_CLOCK_FREQUENCY: 1000
ADDRESS_BITS: 32
MAX_MEM_ALLOC_SIZE: 1073741824
IMAGE_SUPPORT: 1
MAX_READ_IMAGE_ARGS: 128
MAX_WRITE_IMAGE_ARGS: 8
IMAGE2D_MAX_WIDTH: 8192
IMAGE2D_MAX_HEIGHT: 8192
IMAGE3D_MAX_WIDTH: 8192
IMAGE3D_MAX_HEIGHT: 8192
IMAGE3D_MAX_DEPTH: 2048
MAX_SAMPLERS: 16
MAX_PARAMETER_SIZE: 1024
MEM_BASE_ADDR_ALIGN: 1024
MIN_DATA_TYPE_ALIGN_SIZE: 128
GLOBAL_MEM_CACHELINE_SIZE: 64
GLOBAL_MEM_CACHE_SIZE: 8192
GLOBAL_MEM_SIZE: 2147483648
MAX_CONSTANT_BUFFER_SIZE: 134217728
MAX_CONSTANT_ARGS: 8
LOCAL_MEM_SIZE: 65536
ERROR_CORRECTION_SUPPORT: 0
PROFILING_TIMER_RESOLUTION: 80
ENDIAN_LITTLE: 1
AVAILABLE: 1
COMPILER_AVAILABLE: 1
MAX_WORK_GROUP_SIZES: 512 512 512
---------------------------------------------------------------------
*** Kernel compilation resulted in non-empty log message.
*** Set environment variable CL_HELPER_PRINT_COMPILER_OUTPUT=1 to see more.
*** NOTE: this may include compiler warnings and other important messages
***   about your code.
*** Set CL_HELPER_NO_COMPILER_OUTPUT_NAG=1 to disable this message.
0.000188 s
0.063956 GB/s
GOOD



RE: OpenCL sous Ubuntu avec Intel(R) HD Graphics. est-ce possible? - pascal - 07-01-18

En théorie oui, en pratique non. Le driver Beignet OpenCL d'intel est buggé (il y a eu une discussion avec une personne d'intel sur la liste de diffusion dev si mes souvenirs sont bons). Et en plus bien souvent l'OpenCL intel est moins puissant que le CPU. Pour OpenCL il est conseillé une NVIDIA ou AMD, et encore sous Linux AMD pose des problèmes avec certaines anciennes cartes.


RE: OpenCL sous Ubuntu avec Intel(R) HD Graphics. est-ce possible? - aurelienpierre - 07-01-18

Il faut préciser un truc important : une carte graphique, à la base, c'est fait pour faire tourner OpenGL ou DirectX, donc du rendu vidéo.

Mais une carte graphique, c'est massivement multi-cœur (min 144 sur des cartes bas de gamme) et ça a une architecture un peu différente de celle des processeurs. Et il peut-être intéressant d'ouvrir cette puissance de calcul à autre chose qu'aux jeux vidéos.

Pour ça, Nvidia a sorti CUDA, mais c'est une librairie proprio qui ne marche que sur des cartes graphiques Nvidia. Le groupe Khronos a donc sorti un standard multi-vendeurs pour : OpenCL.

Tous les modules darktable ont une version processeur classique, optimisée avec les jeux d'instructions spécifiques en fonction de l'architecture. Certains ont en bonus une version OpenCL pour carte graphique.

Mais utiliser OpenCL sur le processeur, ça revient à rajouter une couche peu optimisée par dessus les instructions natives du processeur, pour lesquelles dt a déjà tout ce qu'il faut. Ça n'a aucun intérêt…


RE: OpenCL sous Ubuntu avec Intel(R) HD Graphics. est-ce possible? - Ngux - 08-01-18

(07-01-18, 13:00)pascal a écrit : En théorie oui, en pratique non. Le driver Beignet OpenCL d'intel est buggé (il y a eu une discussion avec une personne d'intel sur la liste de diffusion dev si mes souvenirs sont bons). Et en plus bien souvent l'OpenCL intel est moins puissant que le CPU. Pour OpenCL il est conseillé une NVIDIA ou AMD, et encore sous Linux AMD pose des problèmes avec certaines anciennes cartes.

Merci Pascal. C'est tout à fait l'info dont j'avais besoin. Je passe en [Résolu]

(07-01-18, 16:55)aurelienpierre a écrit : Mais utiliser OpenCL sur le processeur, ça revient à rajouter une couche peu optimisée par dessus les instructions natives du processeur, pour lesquelles dt a déjà tout ce qu'il faut. Ça n'a aucun intérêt…

Merci Aurélien. J'ai posé la question pour Linux mais du coup je pense à DT sur Window où là j'ai bien OpenCL.

Me conseilles-tu de décocher l'OpenCL sur Windows ?