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édentesRévision précédente
Prochaine révision
Révision précédente
developpement:activites:integration:xeonphi4jessie [2014/11/18 19:05] – [Chargement du module MIC] equemenedeveloppement:activites:integration:xeonphi4jessie [2025/05/14 07:38] (Version actuelle) – modification externe 127.0.0.1
Ligne 3: Ligne 3:
 ===== Introduction ===== ===== Introduction =====
  
 +Les accélérateurs Xeon Phi disposant d'une soixantaine constituent un intermédiaire entre les processeurs standards disposant de l'ordre de la dizaine de coeurs (AMD ou Intel) et les circuits graphiques de GPU ou GPGPU disposant de plusieurs milliers d'ALU pour les traitements.
  
 +Voici comment installer et faire fonctionner un Xeon Phi sur la distribution Debian Jessie, notamment en OpenCL.
 ===== Installation ===== ===== Installation =====
  
Ligne 99: Ligne 100:
 ==== Compilation du module noyau ==== ==== Compilation du module noyau ====
  
-Il n'est pas possible de directement créer le module MIC sans modifier le code source. En effet, les fichiers suivants doivent être modifiés pour compiler sur un noyau 3.Debian.<code>host/linvnet.c  +Il n'est pas possible de directement créer le module MIC sans modifier le code source. Heureusement, En effet, le fichier ''host/linux.c'' doit être modifié pour compiler sur un noyau 3.16 Debian.
-host/pm_ioctl.c  +
-micscif/micscif_debug.c +
-micscif/micscif_rb.c  +
-vnet/micveth_dma.c </code>+
  
 Voici les opérations nécessaires poir compiler le module associé au noyau : Voici les opérations nécessaires poir compiler le module associé au noyau :
Ligne 111: Ligne 108:
 rpm2cpio ../src/mpss-modules-3.4.1-1.src.rpm | cpio -idm rpm2cpio ../src/mpss-modules-3.4.1-1.src.rpm | cpio -idm
 tar jxf mpss-modules-3.4.1.tar.bz2  tar jxf mpss-modules-3.4.1.tar.bz2 
-wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/software/XeonPhi/PatchDebianWheezyMPSS312.patch +wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/software/XeonPhi/PatchDebianJessieMPSS341.patch 
-patch -p 1 -i ./PatchDebianWheezyMPSS312.patch+patch host/linux.c ../PatchDebianJessieMPSS341.patch
 export INSTALL_MOD_PATH=/lib/modules/$(uname -r)/extra export INSTALL_MOD_PATH=/lib/modules/$(uname -r)/extra
 export MIC_CARD_ARCH=k1om export MIC_CARD_ARCH=k1om
Ligne 171: Ligne 168:
 ==== Installation des paquets MPSS ==== ==== Installation des paquets MPSS ====
  
-Les paquets MPSS d'Intel ont été transformés avec ''alien'' dans ''/root/mpss-3.1.2''+Les paquets MPSS d'Intel ont été transformés avec ''alien'' dans ''/root/XeonPhi/mpss-3.4.1''
  
 Les paquets mpss-modules sont supprimés. Les autres installés tel que. Les paquets mpss-modules sont supprimés. Les autres installés tel que.
 <code> <code>
-cd /root/mpss-3.1.2+cd /root/XeonPhi/mpss-3.4.1
 rm *mpss-modules*deb rm *mpss-modules*deb
 ls *-lib*deb | xargs -I '{}' dpkg -i '{}' ls *-lib*deb | xargs -I '{}' dpkg -i '{}'
Ligne 181: Ligne 178:
 </code> </code>
  
-Par défaut les installations se font dans :<code>/opt/mpss/3.1.2 +Par défaut les installations se font dans :<code>/opt/mpss/3.4.1 
-/opt/intel/mic/+/opt/intel/mic
 /etc/mpss /etc/mpss
-/usr/lib64</code>+/usr/lib64 
 +/usr/linux-k1om-4.7 
 +</code>
  
-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''.+Ceci n'est plus le cas dans la Debian Jessie. 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>
 +
 +<code>ldconfig</code>
  
 La commande ''mpssinfo'' La commande ''mpssinfo''
 <code> <code>
-    MPSS mpssinfo+MpssInfo Utility Log 
 +Created Tue Nov 18 20:10:00 2014
  
-    MpssInfo Utility Log 
  
-    Created Thu Feb 13 15:52:59 2014+ System Info 
 + HOST OS Linux 
 + OS Version 3.16.0-4-amd64 
 + Driver Version : 3.4.1-1 
 + MPSS Version : NotAvailable 
 + Host Physical Memory : 529403 MB
  
-        System Info +Device No: 0, Device Namemic0
-            HOST OS            Linux +
-            OS Version        : 3.2.0-4-amd64 +
-            Driver Version        : 3.1.2-1 +
-            MPSS Version        : NotAvailable +
-            Host Physical Memory    66010 MB+
  
-    Device No: 0, Device Name: mic0 + Board 
- + Vendor ID   : 0x8086 
-        Board + Device ID   : 0x225c 
-            Vendor ID          : 0x8086 + Subsystem ID   0x7d99 
-            Device ID          : 0x225c + Coprocessor Stepping ID  2 
-            Subsystem ID          0x2500 + PCIe Width   : x16 
-            Coprocessor Stepping ID     3 + PCIe Speed   : 5 GT/s 
-            PCIe Width          : x16 + PCIe Max payload size  : 256 bytes 
-            PCIe Speed          : 5 GT/s + PCIe Max read req size  512 bytes 
-            PCIe Max payload size     : 256 bytes + Coprocessor Model  : 0x01 
-            PCIe Max read req size     4096 bytes + Coprocessor Model Ext  : 0x00 
-            Coprocessor Model     : 0x01 + Coprocessor Type  : 0x00 
-            Coprocessor Model Ext     : 0x00 + Coprocessor Family  : 0x0b 
-            Coprocessor Type     : 0x00 + Coprocessor Family Ext  : 0x00 
-            Coprocessor Family     : 0x0b + Coprocessor Stepping   C0 
-            Coprocessor Family Ext     : 0x00 + Board SKU   C0QS-7120 P/A/X/D
-            Coprocessor Stepping      B1 +
-            Board SKU          B1PRQ-7110 P/X +
- +
-    MICCTRL : micctrl --status +
- +
-    mic0: ready+
 </code> </code>
  
Ligne 238: Ligne 233:
 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 compatibility network config file /opt/intel/mic/filesystem/mic0/etc/sysconfig/network/ifcfg-mic0 for IDB. 
-[Warning] mic0: User 'root' does not have either rsa or dsa keys created+[Warning]       This may be problematic at best and will be removed in a future release, Check with the IDB release. 
 +</code>
  
- micctrl --config+<code>micctrl --config</code>
  
 +<code>
 mic0: mic0:
 ============================================================= =============================================================
 +    Config Version: 1.1
 +
     Linux Kernel:   /usr/share/mpss/boot/bzImage-knightscorner     Linux Kernel:   /usr/share/mpss/boot/bzImage-knightscorner
 +    Map File:       /usr/share/mpss/boot/System.map-knightscorner
     BootOnStart:    Enabled     BootOnStart:    Enabled
     Shutdowntimeout: 300 seconds     Shutdowntimeout: 300 seconds
  
     ExtraCommandLine: highres=off     ExtraCommandLine: highres=off
-    PowerManagment cpufreq_on;corec6_on;pc3_on;pc6_on +    PowerManagmentcpufreq_on;corec6_on;pc3_on;pc6_on
- +
-    UserAuthentication: Local+
  
     Root Device:   Dynamic Ram Filesystem /var/mpss/mic0.image.gz from:     Root Device:   Dynamic Ram Filesystem /var/mpss/mic0.image.gz from:
-    Base:      /usr/share/mpss/boot/initramfs-knightscorner.cpio.gz + Base:      CPIO /usr/share/mpss/boot/initramfs-knightscorner.cpio.gz 
-    CommonDir: /var/mpss/common.filelist + CommonDir: Directory /var/mpss/common 
-    MicDir:    /var/mpss/mic0.filelist+ Micdir:    Directory /var/mpss/mic0
  
     Network:       Static Pair     Network:       Static Pair
-        Hostname:  grizzly-mic0+        Hostname:  r720-mic0.cluster.zone.
         MIC IP:    172.31.1.1         MIC IP:    172.31.1.1
         Host IP:   172.31.1.254         Host IP:   172.31.1.254
Ligne 266: Ligne 264:
         NetMask:   255.255.255.0         NetMask:   255.255.255.0
         MtuSize:   64512         MtuSize:   64512
-        MIC MAC:   4c:79:ba:32:0f:70 +        MIC MAC:   4c:79:ba:1a:1e:78 
-        Host MAC:  4c:79:ba:32:0f:71+        Host MAC:  4c:79:ba:1a:1e:79 
 + 
 +    LDAP:          Disabled 
 +     NIS:          Disabled 
 + 
 +    Cgroup: 
 +        Memory:    Disabled
  
     Console:        hvc0     Console:        hvc0
     VerboseLogging: Disabled     VerboseLogging: Disabled
 +    CrashDump:      /var/crash/mic 16GB
 </code> </code>
  
Ligne 276: Ligne 281:
  
 Connaissance de d'état de la carte avec ''micctrl --status'' Connaissance de d'état de la carte avec ''micctrl --status''
 +
 +Au début, j'ai :
 +<code>
 +mic0: booting (mode: linux image: /usr/share/mpss/boot/bzImage-knightscorner)
 +</code>
 +
 +Après quelques secondes :
 <code> <code>
 mic0: online (mode: linux image: /usr/share/mpss/boot/bzImage-knightscorner) mic0: online (mode: linux image: /usr/share/mpss/boot/bzImage-knightscorner)
 </code> </code>
  
-Définition de l'adresse statique de l'interface mic0 dans ''/etc/network/interfaces''+Définition de l'adresse statique de l'interface mic0 dans ''/etc/network/interfaces''. De la configuration suivante :<code> 
 +# mic0 BEGIN 
 +auto mic0 
 +iface mic0 inet static 
 +        address 172.31.1.254 
 +        netmask 255.255.255.0 
 +# mic0 END 
 +</code> 
 + 
 +Je préfère passer à une configuration plus étoffée :
 <code> <code>
 auto mic0 auto mic0
Ligne 307: Ligne 328:
  
 <code> <code>
-apt-get install amd-clinfo amd-libopencl1 amd-opencl-icd+apt-get install amd-clinfo amd-opencl-icd ocl-icd-libopencl1 ocl-icd-dev
 </code> </code>
  
Ligne 401: Ligne 422:
  
 <code> <code>
-python-pyopencl python-pyopencl-doc+apt-get install python-pyopencl python-pyopencl-doc
 </code> </code>
  
Ligne 407: Ligne 428:
  
 <code> <code>
- python /usr/share/doc/python-pyopencl-doc/examples/benchmark-all.py + python /usr/share/doc/python-pyopencl-doc/examples/benchmark.py 
 </code> </code>
  
Ligne 424: Ligne 445:
 ('Device compute units:', 32) ('Device compute units:', 32)
 Execution time of test: 0.00112901 s 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 Results OK
 </code> </code>
Ligne 445: Ligne 450:
 Intel publie ses [[http://software.intel.com/en-us/vcsource/tools/opencl-sdk-xe|versions de OpenCL]]. 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 : ==== ==== Récupération de la dernière version : ====
  
-<code> +Il n'est pas possible de disposer directement de la dernière version OpenCL par un simple 
-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 +<code> 
-cd /root/intel_sdk_for_ocl_applications_xe_2013_r3_sdk_3.2.1.16712_x64+cd /root/XeonPhi 
 +wget http://registrationcenter.intel.com/irc_nas/4181/opencl_runtime_14.2_x64_4.5.0.8.tgz 
 +tar xzf opencl_runtime_14.2_x64_4.5.0.8.tgz  
 +cd pset_opencl_runtime_14.1_x64_4.5.0.8/rpm
 </code> </code>
  
 ==== Conversion des RPM en DEB ==== ==== Conversion des RPM en DEB ====
  
 +La conversion peut se réaliser "brutalement" avec un ''alien'', mais les paquets ne sont pas très propres...
 +
 +Installation des outils pour la conversion des paquets :
 <code> <code>
-ls *.rpm | xargs -I '{}' alien --scripts '{}'+apt-get install builder alien
 </code> </code>
  
 +Pour les paquets corrects :
 <code> <code>
-opencl-1.2-base_3.2.1.16712-2_amd64.deb generated +ls opencl-*pset*.rpm opencl-*mic*.rpm | xargs -I '{}' alien --scripts '{}'
-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> </code>
 +
 +Pour les paquets à modifier :
 +<code>
 +ls opencl-*base-4*.rpm opencl-*cpu*.rpm | xargs -I '{}' alien -g --scripts '{}'
 +# On degage la possibilite de mettre la libOpenCL de Intel a la place de la standard
 +sed -i "s/update\-alternatives/exit\nupdate\-alternatives/g" opencl-1.2-base-4.5.0.8/debian/postinst
 +# On rentre dans l'archive
 +cd opencl-1.2-base-4.5.0.8
 +# On build le paquet
 +debuild
 +cd ..
 +# On remplace la priorite du update-alternatives sur l'installation de l'ICD Intel
 +sed -i "s/\-2147489047/65536/g" opencl-1.2-intel-cpu-4.5.0.8/debian/postinst
 +# On rentre dans l'archive
 +cd opencl-1.2-intel-cpu-4.5.0.8
 +# on build le paquet
 +debuild
 +cd ..
 +</code>
 +
 +Les paquets générés sont les suivants :
 +<code>
 +opencl-1.2-base_4.5.0.8-2_amd64.deb
 +opencl-1.2-base-pset_4.5.0.8-2_all.deb
 +opencl-1.2-intel-cpu_4.5.0.8-2_amd64.deb
 +opencl-1.2-intel-mic_4.5.0.8-2_amd64.deb
 +</code>
 +
  
 ==== Installation des paquets ==== ==== Installation des paquets ====
Ligne 476: Ligne 510:
 </code> </code>
  
-Un lien est réalisé entre ''/opt/intel/opencl-1.2-3.2.1.16712'' et '/etc/alternatives/opencl-intel-runtime' +Vérification des périphériques OpenCL détectés :
 <code> <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"  clinfo | grep "Device Type" 
 </code> </code>
- 
-Plus besoin d'établir les liens pour l'ICD. 
  
 3 composants sont détectés : 3 composants sont détectés :
Ligne 496: Ligne 523:
  
 Lancement du test Python OpenCL 'python /usr/share/doc/python-pyopencl-doc/examples/benchmark-all.py' :<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')+Execution time of test without OpenCL:  0.0567140579224 s
 =============================================================== ===============================================================
-('Platform name:', 'AMD Accelerated Parallel Processing') +Platform name: AMD Accelerated Parallel Processing 
-('Platform profile:', 'FULL_PROFILE') +Platform profile: FULL_PROFILE 
-('Platform vendor:', 'Advanced Micro Devices, Inc.') +Platform vendor: Advanced Micro Devices, Inc. 
-('Platform version:', 'OpenCL 1.2 AMD-APP (938.2)')+Platform version: OpenCL 1.2 AMD-APP (1526.3)
 --------------------------------------------------------------- ---------------------------------------------------------------
-('Device name:', 'Intel(R) Xeon(R) CPU E5-2680 0 2.70GHz') +Device name: Intel(R) Xeon(R) CPU E5-2637 v2 3.50GHz 
-('Device type:', 'CPU') +Device type: CPU 
-('Device memory: ', 64463, 'MB') +Device memory:  516995 MB 
-('Device max clock speed:', 1200, 'MHz') +Device max clock speed: 1333 MHz 
-('Device compute units:'32) +Device compute units: 16 
-Execution time of test: 0.000990689 s+Device max work group size: 1024 
 +Device max work item sizes: [1024, 10241024] 
 +Data points: 8388608 
 +Workers: 256 
 +Preferred work group size multiple: 1 
 +Execution time of test: 0.00852657 s
 Results OK Results OK
 =============================================================== ===============================================================
-('Platform name:', 'Intel(R) OpenCL') +Platform name: Intel(R) OpenCL 
-('Platform profile:', 'FULL_PROFILE') +Platform profile: FULL_PROFILE 
-('Platform vendor:', 'Intel(R) Corporation') +Platform vendor: Intel(R) Corporation 
-('Platform version:', 'OpenCL 1.2 LINUX')+Platform version: OpenCL 1.2 LINUX
 --------------------------------------------------------------- ---------------------------------------------------------------
-('Device name:', '       Intel(R) Xeon(R) CPU E5-2680 0 2.70GHz') +Device name:       Intel(R) Xeon(R) CPU E5-2637 v2 3.50GHz 
-('Device type:', 'CPU') +Device type: CPU 
-('Device memory: ', 64463, 'MB') +Device memory:  516995 MB 
-('Device max clock speed:', 2700, 'MHz') +Device max clock speed: 3500 MHz 
-('Device compute units:'32) +Device compute units: 16 
-/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.+Device max work group size: 8192 
 +Device max work item sizes: [81928192, 8192] 
 +/usr/lib/python2.7/dist-packages/pyopencl/__init__.py:61: CompilerWarning: Non-empty compiler output encountered. Set the environment variable PYOPENCL_COMPILER_OUTPUT=1 to see more.
   "to see more.", CompilerWarning)   "to see more.", CompilerWarning)
-Execution time of test: 0.00065297 s+Data points: 8388608 
 +Workers: 256 
 +Preferred work group size multiple: 128 
 +Execution time of test: 0.00322651 s
 Results OK Results OK
 =============================================================== ===============================================================
-('Platform name:', 'Intel(R) OpenCL') +Platform name: Intel(R) OpenCL 
-('Platform profile:', 'FULL_PROFILE') +Platform profile: FULL_PROFILE 
-('Platform vendor:', 'Intel(R) Corporation') +Platform vendor: Intel(R) Corporation 
-('Platform version:', 'OpenCL 1.2 LINUX')+Platform version: OpenCL 1.2 LINUX
 --------------------------------------------------------------- ---------------------------------------------------------------
-('Device name:', 'Intel(R) Many Integrated Core Acceleration Card') +Device name: Intel(R) Many Integrated Core Acceleration Card 
-('Device type:', 'ACCELERATOR') +Device type: ACCELERATOR 
-('Device memory: ', 5772, 'MB') +Device memory:  11634 MB 
-('Device max clock speed:', 1100, 'MHz') +Device max clock speed: 1333 MHz 
-('Device compute units:'240) +Device compute units: 240 
-Execution time of test: 0.00400693 s+Device max work group size: 8192 
 +Device max work item sizes: [8192, 81928192] 
 +Data points: 8388608 
 +Workers: 256 
 +Preferred work group size multiple: 128 
 +Execution time of test: 0.0179208 s
 Results OK Results OK
 </code> </code>
developpement/activites/integration/xeonphi4jessie.1416337505.txt.gz · Dernière modification : (modification externe)