Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
developpement:activites:integration:xeonphi4wheezy [2014/04/23 14:29]
equemene
developpement:activites:integration:xeonphi4wheezy [2015/01/07 10:04] (Version actuelle)
Ligne 12: Ligne 12:
 Il est supposé que le système hôte est une Debian Wheezy standard, sur une architecture AMD64. Le socle présenté ici était un Intel Grizzly disposant 7120. De manière à ne pas toucher au matériel embarqué et polluer le disque dur de la machine, l'​équipement démarre par PXE et monte un disque par iSCSI. Il est supposé que le système hôte est une Debian Wheezy standard, sur une architecture AMD64. Le socle présenté ici était un Intel Grizzly disposant 7120. De manière à ne pas toucher au matériel embarqué et polluer le disque dur de la machine, l'​équipement démarre par PXE et monte un disque par iSCSI.
  
-La Debian Wheezy disposait d'un noyau 3.2 version 54 (maintenant 57). Un @lspsioffrait pour ce matériel la sortie suivante :+La Debian Wheezy disposait d'un noyau 3.2 version 54 (maintenant 57). Un ''​lspsi'' ​offrait pour ce matériel la sortie suivante :
 <​code>​08:​00.0 Co-processor:​ Intel Corporation Device 225c (rev 11)</​code>​ <​code>​08:​00.0 Co-processor:​ Intel Corporation Device 225c (rev 11)</​code>​
  
-Le composant MIC n'est donc pas intégré à la liste de périphériques PCI reconnus. La commande @update-pciids@ permet de mettre cette base à jour. Un nouveau lancement de @lspci | grep -i phioffre la sortie suivante :+Le composant MIC n'est donc pas intégré à la liste de périphériques PCI reconnus. La commande @update-pciids@ permet de mettre cette base à jour. Un nouveau lancement de ''​lspci | grep -i phi'' ​offre la sortie suivante :
 <​code>​08:​00.0 Co-processor:​ Intel Corporation Xeon Phi coprocessor SE10/7120 series (rev 11)</​code>​ <​code>​08:​00.0 Co-processor:​ Intel Corporation Xeon Phi coprocessor SE10/7120 series (rev 11)</​code>​
  
Ligne 99: Ligne 99:
 vnet/​micveth_dma.c </​code>​ vnet/​micveth_dma.c </​code>​
  
 +Voici les opérations nécessaires poir compiler le module associé au noyau :
 <​code>​ <​code>​
 mkdir mpss-modules mkdir mpss-modules
Ligne 115: Ligne 116:
 ==== Chargement du module MIC ==== ==== Chargement du module MIC ====
  
-Chargement du module par la commande ​@modprobe mic@+Chargement du module par la commande ​''​modprobe mic''​
  
 Dans le ''​dmesg''​ on obtient : Dans le ''​dmesg''​ on obtient :
Ligne 168: Ligne 169:
 /​opt/​intel/​mic/​ /​opt/​intel/​mic/​
 /etc/mpss /etc/mpss
-/​usr/​lib64</​cdoe>+/​usr/​lib64</​code>
  
-Ceci n'est plus le cas dans la Debian Wheezy.+Ceci n'est plus le cas dans la Debian Wheezy. Il est donc nécessaire de rajouter (salement) un chemin allant chercher les librairies dans ''/​usr/​lib64''​.
  
-Installation d'un ''​LD_LIBRARY_PATH''​ sur ''/​usr/​lib64''​+Installation d'un ''​LD_LIBRARY_PATH''​ sur ''/​usr/​lib64'' ​:
 <​code>​echo /usr/lib64 >> /​etc/​ld.so.conf.d/​mic.conf</​code>​ <​code>​echo /usr/lib64 >> /​etc/​ld.so.conf.d/​mic.conf</​code>​
  
Ligne 214: Ligne 215:
 </​code>​ </​code>​
  
-Pour démarrer le système ​MPSSDmais il s'​attend à trouver un /​var/​lock/​subsys pour créer un /​var/​lock/​subsys/​mpssd+Pour démarrer le système ​sur le Xeon Phile démon ''​mpssd'' ​s'​attend à trouver un ''​/​var/​lock/​subsys'' ​pour créer un ''​/​var/​lock/​subsys/​mpssd''​. Voici une solution pour que, à chaque démarrage, l'​opération soit réalisée :
 <​code>​ <​code>​
 mkdir /​var/​lock/​subsys mkdir /​var/​lock/​subsys
Ligne 220: Ligne 221:
 </​code>​ </​code>​
  
-Lancement avec la commande suivante : ''​micctrl --initdefaults''​ dont la sortie est la suivante ​+Lancement avec la commande suivante : ''​micctrl ​\-\-initdefaults''​ dont la sortie est la suivante ​
 <​code>​ <​code>​
 [Warning] mic0: Generating compat network config file.  This will be removed in the 3.2 release [Warning] mic0: Generating compat network config file.  This will be removed in the 3.2 release
Ligne 286: Ligne 287:
 Vérification du nombre de processeurs avec ''​cat /​proc/​cpuinfo | grep ^processor | wc -l''​ lequel donne ''​244''​. Vérification du nombre de processeurs avec ''​cat /​proc/​cpuinfo | grep ^processor | wc -l''​ lequel donne ''​244''​.
  
 +==== Installation du composant OpenCL ====
  
-===== Historique =====+=== Installation des composants OpenCL standards ​===
  
 +<​code>​
 +apt-get install amd-clinfo amd-libopencl1 amd-opencl-icd
 +</​code>​
  
-==== Des débuts difficiles pour une prise en main impossible ====+=== Vérification du fonctionnement de OpenCL avec clinfo ​===
  
-La société Intel a mis à disposition fin octobre 2013 un Xeon Phi 7120P à disposition de Emmanuel Quémenerdu Centre Blaise Pascal.+<​code>​ 
 +Number of platforms: ​                1 
 +  Platform Profile: ​                ​FULL_PROFILE 
 +  Platform Version: ​                ​OpenCL 1.2 AMD-APP (938.2) 
 +  Platform Name:                 AMD Accelerated Parallel Processing 
 +  Platform Vendor: ​                ​Advanced Micro DevicesInc. 
 +  Platform Extensions: ​                ​cl_khr_icd cl_amd_event_callback cl_amd_offline_devices
  
-La carte Intel Xeon Phi 7120P se présente sous forme d'une carte PCI Express d'une taille équivalente à celle d'une carte Nvidia GTX Titan ou Nvidia TeslaElle nécessite ​connecteurs 6 broches pour son alimentationdeux emplacements PCIun port PCI-Express 16x et une longueur suffisante.+  Platform Name:                 AMD Accelerated Parallel Processing 
 +Number of devices: ​                1 
 +  Device Type:                     ​CL_DEVICE_TYPE_CPU 
 +  Device ID:                     ​4098 
 +  Board name:                      
 +  Max compute units: ​                32 
 +  Max work items dimensions: ​            3 
 +    Max work items[0]: ​                ​1024 
 +    Max work items[1]: ​                ​1024 
 +    Max work items[2]: ​                ​1024 
 +  Max work group size:                 ​1024 
 +  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 
 +  Native vector width char:             16 
 +  Native vector width short: ​            8 
 +  Native vector width int:             4 
 +  Native vector width long:             2 
 +  Native vector width float: ​            4 
 +  Native vector width double: ​            0 
 +  Max clock frequency: ​                ​1200Mhz 
 +  Address bits:                     64 
 +  Max memory allocation: ​            ​16898804736 
 +  Image support: ​                Yes 
 +  Max number of images read arguments: ​        128 
 +  Max number of images write arguments: ​        8 
 +  Max image 2D width: ​                ​8192 
 +  Max image 2D height: ​                ​8192 
 +  Max image 3D width: ​                ​2048 
 +  Max image 3D height: ​                ​2048 
 +  Max image 3D depth: ​                ​2048 
 +  Max samplers within kernel: ​            16 
 +  Max size of kernel argument: ​            ​4096 
 +  Alignment (bits) of base address: ​        ​1024 
 +  Minimum alignment (bytes) for any datatype: ​    128 
 +  Single precision floating point capability 
 +    Denorms: ​                    Yes 
 +    Quiet NaNs:                     Yes 
 +    Round to nearest even:             Yes 
 +    Round to zero:                 Yes 
 +    Round to +ve and infinity: ​            Yes 
 +    IEEE754-2008 fused multiply-add: ​        Yes 
 +  Cache type:                     ​Read/​Write 
 +  Cache line size:                 64 
 +  Cache size:                     ​32768 
 +  Global memory size:                 ​67595218944 
 +  Constant buffer size:                 ​65536 
 +  Max number of constant args:             8 
 +  Local memory type:                 ​Global 
 +  Local memory size:                 ​32768 
 +  Kernel Preferred work group size multiple: ​    1 
 +  Error correction support: ​            0 
 +  Unified memory for Host and Device: ​        1 
 +  Profiling timer resolution: ​            1 
 +  Device endianess: ​                ​Little 
 +  Available: ​                    Yes 
 +  Compiler available: ​                Yes 
 +  Execution capabilities: ​                 
 +    Execute OpenCL kernels: ​            Yes 
 +    Execute native function: ​            Yes 
 +  Queue properties: ​                 
 +    Out-of-Order: ​                No 
 +    Profiling :                     Yes 
 +  Platform ID:                     ​0x7f926ed1bce0 
 +  Name:                         Intel(R) Xeon(R) CPU E5-2680 0 @ 2.70GHz 
 +  Vendor: ​                    ​GenuineIntel 
 +  Device OpenCL C version: ​            ​OpenCL C 1.2  
 +  Driver version: ​                2.0 (sse2,​avx) 
 +  Profile: ​                    ​FULL_PROFILE 
 +  Version: ​                    ​OpenCL 1.2 AMD-APP (938.2) 
 +  Extensions: ​                    ​cl_khr_fp64 cl_amd_fp64 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_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_byte_addressable_store cl_khr_gl_sharing cl_ext_device_fission cl_amd_device_attribute_query cl_amd_vec3 cl_amd_printf cl_amd_media_ops cl_amd_popcnt  
 +</​code>​ 
 + 
 +Seuls les processeurs CPU sont détectés 
 + 
 +=== Installation des composants Python OpenCL === 
 + 
 +<​code>​ 
 +python-pyopencl python-pyopencl-doc 
 +</​code>​ 
 + 
 +=== Vérification du fonctionnement === 
 + 
 +<​code>​ 
 + ​python /​usr/​share/​doc/​python-pyopencl-doc/​examples/​benchmark-all.py  
 +</​code>​ 
 + 
 +<​code>​ 
 +('Execution time of test without OpenCL: ​', 7.673499822616577, ​'s') 
 +=============================================================== 
 +('​Platform name:',​ 'AMD Accelerated Parallel Processing'​) 
 +('​Platform profile:',​ '​FULL_PROFILE'​) 
 +('​Platform vendor:',​ '​Advanced Micro Devices, Inc.'​) 
 +('​Platform version:',​ '​OpenCL 1.2 AMD-APP (938.2)'​) 
 +--------------------------------------------------------------- 
 +('​Device name:''​Intel(R) Xeon(R) CPU E5-2680 0 @ 2.70GHz'​) 
 +('​Device type:''​CPU'​) 
 +('​Device memory: ', 64463, '​MB'​) 
 +('​Device max clock speed:',​ 1200, '​MHz'​) 
 +('​Device compute units:',​ 32) 
 +Execution time of test: 0.00112901 s 
 +Results OK 
 +root@grizzly:​~#​ ^C 
 +root@grizzly:​~#​ python /​usr/​share/​doc/​python-pyopencl-doc/​examples/​benchmark-all.py  
 +('​Execution time of test without OpenCL: ', 7.43899393081665,​ '​s'​) 
 +=============================================================== 
 +('​Platform name:',​ 'AMD Accelerated Parallel Processing'​) 
 +('​Platform profile:',​ '​FULL_PROFILE'​) 
 +('​Platform vendor:',​ '​Advanced Micro Devices, Inc.'​) 
 +('​Platform version:',​ '​OpenCL 1.2 AMD-APP (938.2)'​) 
 +--------------------------------------------------------------- 
 +('​Device name:',​ '​Intel(R) Xeon(R) CPU E5-2680 0 @ 2.70GHz'​) 
 +('​Device type:',​ '​CPU'​) 
 +('​Device memory: ', 64463, '​MB'​) 
 +('​Device max clock speed:',​ 1200, '​MHz'​) 
 +('​Device compute units:',​ 32) 
 +Execution time of test: 0.000632971 s 
 +Results OK 
 +</​code>​ 
 + 
 +Intel publie ses [[http://​software.intel.com/​en-us/​vcsource/​tools/​opencl-sdk-xe|versions de OpenCL]]. 
 + 
 +La dernière version est la 3.2.1.16712 
 + 
 +==== Récupération de la dernière version : ==== 
 + 
 +<​code>​ 
 +cd /root 
 +wget http://​registrationcenter.intel.com/​irc_nas/​3809/​intel_sdk_for_ocl_applications_xe_2013_r3_sdk_3.2.1.16712_x64.tgz 
 + 
 +tar xzf intel_sdk_for_ocl_applications_xe_2013_r3_sdk_3.2.1.16712_x64.tgz 
 +cd /​root/​intel_sdk_for_ocl_applications_xe_2013_r3_sdk_3.2.1.16712_x64 
 +</​code>​ 
 + 
 +==== Conversion des RPM en DEB ==== 
 + 
 +<​code>​ 
 +ls *.rpm | xargs -I '​{}'​ alien --scripts '​{}'​ 
 +</​code>​ 
 + 
 +<​code>​ 
 +opencl-1.2-base_3.2.1.16712-2_amd64.deb generated 
 +opencl-1.2-devel_3.2.1.16712-2_amd64.deb generated 
 +opencl-1.2-intel-cpu_3.2.1.16712-2_amd64.deb generated 
 +opencl-1.2-intel-devel_3.2.1.16712-2_amd64.deb generated 
 +</​code>​ 
 + 
 +==== Installation des paquets ==== 
 + 
 +<​code>​ 
 +dpkg -i *.deb 
 +</​code>​ 
 + 
 +Un lien est réalisé entre ''/​opt/​intel/​opencl-1.2-3.2.1.16712'' ​et '/​etc/​alternatives/​opencl-intel-runtime'​ 
 + 
 +<​code>​ 
 +echo /​etc/​alternatives/​opencl-intel-runtime/​lib64 >> /​etc/​ld.so.conf.d/​mic.conf  
 +echo /​etc/​alternatives/​opencl-intel-runtime/​libmic >> /​etc/​ld.so.conf.d/​mic.conf  
 +ldconfig 
 + 
 +clinfo | grep "​Device Type"  
 +</​code>​ 
 + 
 +Plus besoin d'​établir les liens pour l'​ICD. 
 + 
 +3 composants sont détectés : 
 +<​code>​ 
 +  Device Type:                     ​CL_DEVICE_TYPE_CPU 
 +  Device Type:                     ​CL_DEVICE_TYPE_CPU 
 +  Device Type:                     ​CL_DEVICE_TYPE_ACCRLERATOR 
 +</​code>​ 
 + 
 +Lancement du test Python OpenCL '​python /​usr/​share/​doc/​python-pyopencl-doc/​examples/​benchmark-all.py'​ :<​code>​ 
 +('​Execution time of test without OpenCL: ', 7.768199920654297,​ '​s'​) 
 +=============================================================== 
 +('​Platform name:',​ 'AMD Accelerated Parallel Processing'​) 
 +('​Platform profile:',​ '​FULL_PROFILE'​) 
 +('​Platform vendor:',​ '​Advanced Micro Devices, Inc.'​) 
 +('​Platform version:',​ '​OpenCL 1.2 AMD-APP (938.2)'​) 
 +--------------------------------------------------------------- 
 +('​Device name:',​ '​Intel(R) Xeon(R) CPU E5-2680 0 @ 2.70GHz'​) 
 +('​Device type:',​ '​CPU'​) 
 +('​Device memory: ', 64463, '​MB'​) 
 +('​Device max clock speed:',​ 1200, '​MHz'​) 
 +('​Device compute units:',​ 32) 
 +Execution time of test: 0.000990689 s 
 +Results OK 
 +=============================================================== 
 +('​Platform name:',​ '​Intel(R) OpenCL'​) 
 +('​Platform profile:',​ '​FULL_PROFILE'​) 
 +('​Platform vendor:',​ '​Intel(R) Corporation'​) 
 +('​Platform version:',​ '​OpenCL 1.2 LINUX'​) 
 +--------------------------------------------------------------- 
 +('​Device name:',​ ' ​      ​Intel(R) Xeon(R) CPU E5-2680 0 @ 2.70GHz'​) 
 +('​Device type:',​ '​CPU'​) 
 +('​Device memory: ', 64463, '​MB'​) 
 +('​Device max clock speed:',​ 2700, '​MHz'​) 
 +('​Device compute units:',​ 32) 
 +/​usr/​lib/​python2.7/​dist-packages/​pyopencl/​__init__.py:​36:​ CompilerWarning:​ Non-empty compiler output encountered. Set the environment variable PYOPENCL_COMPILER_OUTPUT=1 to see more. 
 +  "to see more.",​ CompilerWarning) 
 +Execution time of test: 0.00065297 s 
 +Results OK 
 +=============================================================== 
 +('​Platform name:',​ '​Intel(R) OpenCL'​) 
 +('​Platform profile:',​ '​FULL_PROFILE'​) 
 +('​Platform vendor:',​ '​Intel(R) Corporation'​) 
 +('​Platform version:',​ '​OpenCL 1.2 LINUX'​) 
 +--------------------------------------------------------------- 
 +('​Device name:',​ '​Intel(R) Many Integrated Core Acceleration Card'​) 
 +('​Device type:',​ '​ACCELERATOR'​) 
 +('​Device memory: ', 5772, '​MB'​) 
 +('​Device max clock speed:',​ 1100, '​MHz'​) 
 +('​Device compute units:',​ 240) 
 +Execution time of test: 0.00400693 s 
 +Results OK 
 +</​code>​ 
 +===== Historique =====
  
-La première étape a été de trouver un socle pour l'​accueillir de manière transitoire et réaliser les premiers tests. ​ 
  
  
developpement/activites/integration/xeonphi4wheezy.1398256196.txt.gz · Dernière modification: 2015/01/07 10:04 (modification externe)