Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
developpement:activites:integration:xeonphi4jessie [2014/11/19 09:59] equemene [Compilation du module noyau] |
developpement:activites:integration:xeonphi4jessie [2015/01/07 10:04] (Version actuelle) |
||
---|---|---|---|
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 421: | Ligne 422: | ||
<code> | <code> | ||
- | python-pyopencl python-pyopencl-doc | + | apt-get install python-pyopencl python-pyopencl-doc |
</code> | </code> | ||
Ligne 427: | 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 444: | 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 465: | 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 : ==== | ||
Ligne 480: | Ligne 464: | ||
==== 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> | ||
+ | |||
+ | Pour les paquets corrects : | ||
+ | <code> | ||
+ | ls opencl-*pset*.rpm opencl-*mic*.rpm | xargs -I '{}' alien --scripts '{}' | ||
+ | </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> | </code> | ||
+ | Les paquets générés sont les suivants : | ||
<code> | <code> | ||
opencl-1.2-base_4.5.0.8-2_amd64.deb | opencl-1.2-base_4.5.0.8-2_amd64.deb | ||
Ligne 498: | Ligne 510: | ||
</code> | </code> | ||
- | La conversion des paquets ''RPM'' en paquets Debian pose quelques problèmes. La priorité du ''update-alternatives'' ne respecte pas les standards Debian. Il est donc nécessaire de les modifier. | + | Vérification des périphériques OpenCL détectés : |
- | <code> | + | |
- | sed -i "s/\-2147489047/65536/g" /var/lib/dpkg/info/opencl-1.2-base.postinst | + | |
- | sed -i "s/\-2147489047/65536/g" /var/lib/dpkg/info/opencl-1.2-intel-cpu.postinst | + | |
- | apt-get -f install | + | |
- | </code> | + | |
- | + | ||
- | + | ||
<code> | <code> | ||
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 577: | Ligne 579: | ||
Preferred work group size multiple: 128 | Preferred work group size multiple: 128 | ||
Execution time of test: 0.0179208 s | Execution time of test: 0.0179208 s | ||
- | Results OK | ||
- | =============================================================== | ||
- | Platform name: NVIDIA CUDA | ||
- | Platform profile: FULL_PROFILE | ||
- | Platform vendor: NVIDIA Corporation | ||
- | Platform version: OpenCL 1.1 CUDA 6.5.18 | ||
- | --------------------------------------------------------------- | ||
- | Device name: Tesla K40m | ||
- | Device type: GPU | ||
- | Device memory: 11519 MB | ||
- | Device max clock speed: 745 MHz | ||
- | Device compute units: 15 | ||
- | Device max work group size: 1024 | ||
- | Device max work item sizes: [1024, 1024, 64] | ||
- | Data points: 8388608 | ||
- | Workers: 256 | ||
- | Preferred work group size multiple: 32 | ||
- | Execution time of test: 0.000614816 s | ||
Results OK | Results OK | ||
</code> | </code> |