Ci-dessous, les différences entre deux révisions de la page.
developpement:activites:integration:xeonphi4jessie [2014/11/18 21:15] equemene [Conversion des RPM en DEB] |
developpement:activites:integration:xeonphi4jessie [2015/01/07 10:04] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Installation d'un Xeon Phi sous Debian Jessie ====== | ||
- | |||
- | ===== Introduction ===== | ||
- | |||
- | |||
- | |||
- | ===== Installation ===== | ||
- | |||
- | ==== Détection du périphérique ==== | ||
- | |||
- | |||
- | Il est supposé que le système hôte est une Debian Jessie standard, sur une architecture AMD64. Le socle présenté ici était un Dell Poweredge R720 disposant d'une carte Xeon Phi SE10/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 Jessie disposait d'un noyau 3.16 version 7. Un ''lspci | grep -i phi'' offre la sortie suivante : | ||
- | <code>42:00.0 Co-processor: Intel Corporation Xeon Phi coprocessor SE10/7120 series (rev 20)</code> | ||
- | |||
- | ==== Création des paquets Intel ==== | ||
- | |||
- | Les composants fournis par Intel sont présents sur le site Intel [[https://software.intel.com/en-us/articles/intel-manycore-platform-software-stack-mpss#downloads|MPSS pour Manycore Platform Software Stack]]. | ||
- | |||
- | Il n'existe que les paquets pour quelques distributions RedHat ou dérivées : récupération de la dernière version RedHat | ||
- | <code>mkdir /root/XeonPhi ; cd /root/XeonPhi | ||
- | wget http://registrationcenter.intel.com/irc_nas/4862/mpss-3.4.1-linux.tar</code> | ||
- | |||
- | Vérification de la somme de hashage ''md5sum mpss-3.4.1-linux.tar'' :<code>e985afee031baf542090883d3752fcfa</code> | ||
- | |||
- | La documentation [[http://registrationcenter.intel.com/irc_nas/4862/mpss_users_guide.pdf|MPSS User Guide]] est indispensable pour commencer. | ||
- | |||
- | ==== Préparation du système ==== | ||
- | |||
- | * Installation de quoi transformer les paquets RPM en DEB<code>apt-get install alien</code> | ||
- | * Installation de qui construire des paquets Debian :<code>apt-get install pbuilder</code> | ||
- | * Installation de quoi compiler un module noyau : <code>apt-get install kernel-package | ||
- | apt-get purge texlive* | ||
- | apt-get autoremove</code> | ||
- | |||
- | ==== Transformation des paquets RPM en DEB ==== | ||
- | |||
- | <code> | ||
- | tar xvf mpss-3.4.1-linux.tar | ||
- | cd mpss-3.4.1 | ||
- | ls *.rpm | xargs -I '{}' alien --scripts '{}' | ||
- | </code> | ||
- | |||
- | La liste des paquets crés est la suivante :<code> | ||
- | glibc2.12.2pkg-libmicaccesssdk0_3.4.1-2_amd64.deb | ||
- | glibc2.12.2pkg-libmicaccesssdk-dev_3.4.1-2_amd64.deb | ||
- | glibc2.12.2pkg-libmicmgmt0_3.4.1-2_amd64.deb | ||
- | glibc2.12.2pkg-libmicmgmt-dev_3.4.1-2_amd64.deb | ||
- | glibc2.12.2pkg-libmicmgmt-doc_3.4.1-2_amd64.deb | ||
- | glibc2.12.2pkg-libodmdebug0_3.4.1-2_amd64.deb | ||
- | glibc2.12.2pkg-libodmdebug-dev_3.4.1-2_amd64.deb | ||
- | glibc2.12.2pkg-libsettings0_3.4.1-2_amd64.deb | ||
- | glibc2.12.2pkg-libsettings-dev_3.4.1-2_amd64.deb | ||
- | glibc2.12.2pkg-mpss-flash_3.4.1-2_amd64.deb | ||
- | glibc2.12.2pkg-mpss-memdiag-kernel_3.4.1-2_amd64.deb | ||
- | glibc2.12.2pkg-mpss-rasmm-kernel_3.4.1-2_amd64.deb | ||
- | intel-composerxe-compat-k1om_3.4.1-2_amd64.deb | ||
- | libscif0_3.4.1-2_amd64.deb | ||
- | libscif-dev_3.4.1-2_amd64.deb | ||
- | libscif-doc_3.4.1-2_amd64.deb | ||
- | mpss-boot-files_3.4.1-2_amd64.deb | ||
- | mpss-coi_3.4.1-2_amd64.deb | ||
- | mpss-coi-dev_3.4.1-2_amd64.deb | ||
- | mpss-coi-doc_3.4.1-2_amd64.deb | ||
- | mpss-coi-staticdev_3.4.1-2_amd64.deb | ||
- | mpss-core_3.4.1-2_amd64.deb | ||
- | mpss-core-dev_3.4.1-2_amd64.deb | ||
- | mpss-daemon_3.4.1-2_amd64.deb | ||
- | mpss-daemon-dev_3.4.1-2_amd64.deb | ||
- | mpss-eclipse-cdt-mpm_3.4.1-2_amd64.deb | ||
- | mpss-hstreams_3.4.1-2_amd64.deb | ||
- | mpss-hstreams-dev_3.4.1-2_amd64.deb | ||
- | mpss-hstreams-doc_3.4.1-2_amd64.deb | ||
- | mpss-license_3.4.1-2_amd64.deb | ||
- | mpss-miccheck_3.4.1-1_amd64.deb | ||
- | mpss-miccheck-bin_3.4.1-1_amd64.deb | ||
- | mpss-micmgmt_3.4.1-2_amd64.deb | ||
- | mpss-micmgmt-doc_3.4.1-2_amd64.deb | ||
- | mpss-micmgmt-python_3.4.1-2_amd64.deb | ||
- | mpss-micsmc-gui_3.4.1-2_amd64.deb | ||
- | mpss-mpm_3.4.1-2_amd64.deb | ||
- | mpss-mpm-doc_3.4.1-2_amd64.deb | ||
- | mpss-myo_3.4.1-2_amd64.deb | ||
- | mpss-myo-dev_3.4.1-2_amd64.deb | ||
- | mpss-myo-doc_3.4.1-2_amd64.deb | ||
- | mpss-offload_3.4.1-2_amd64.deb | ||
- | mpss-offload-dev_3.4.1-2_amd64.deb | ||
- | mpss-sciftutorials_3.4.1-2_amd64.deb | ||
- | mpss-sciftutorials-doc_3.4.1-2_amd64.deb | ||
- | mpss-sdk-k1om_3.4.1-2_amd64.deb | ||
- | mpss-sysmgmt-micdiagnostic_3.4.1-2_amd64.deb | ||
- | mpss-sysmgmt-micras_3.4.1-2_amd64.deb | ||
- | mpss-sysmgmt-python_3.4.1-2_amd64.deb | ||
- | netperf_2.6.0-1_amd64.deb | ||
- | netperf-doc_2.6.0-1_amd64.deb | ||
- | </code> | ||
- | |||
- | ==== 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.2 Debian.<code>host/linvnet.c | ||
- | 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 : | ||
- | <code> | ||
- | mkdir mpss-modules | ||
- | cd mpss-modules | ||
- | rpm2cpio ../src/mpss-modules-3.4.1-1.src.rpm | cpio -idm | ||
- | tar jxf mpss-modules-3.4.1.tar.bz2 | ||
- | # wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/software/XeonPhi/PatchDebianWheezyMPSS312.patch | ||
- | # patch -p 1 -i ./PatchDebianWheezyMPSS312.patch | ||
- | export INSTALL_MOD_PATH=/lib/modules/$(uname -r)/extra | ||
- | export MIC_CARD_ARCH=k1om | ||
- | make | ||
- | make install | ||
- | depmod -a | ||
- | </code> | ||
- | |||
- | |||
- | ==== Chargement du module MIC ==== | ||
- | |||
- | Il y a de fortes chances pour que le module ''mic_host'' aie été chargé. Il faut donc le décharger et définir une exclusion<code>rmmod mic_host | ||
- | echo blacklist mic_host > /etc/modprobe.d/mic.conf | ||
- | </code> | ||
- | |||
- | Chargement du module par la commande ''modprobe mic'' | ||
- | |||
- | Dans le ''dmesg'' on obtient : | ||
- | <code> | ||
- | [37935.298427] mic 0000:42:00.0: irq 172 for MSI/MSI-X | ||
- | [37935.298475] mic0: Transition from state ready to resetting | ||
- | [37945.235599] [sched_delayed] sched: RT throttling activated | ||
- | [37945.235980] mic_probe 66:0:0 as board #0 | ||
- | [37945.236136] mic: number of devices detected 1 | ||
- | [37946.237184] mic0: Resetting (Post Code 12) | ||
- | [37946.237217] mic0: Transition from state resetting to ready | ||
- | [37946.237248] My Phys addrs: 0xff3c720000 and scif_addr 0x8021bdf040 | ||
- | </code> | ||
- | |||
- | En tapant ''ip link show'' on obtient : | ||
- | <code> | ||
- | 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN mode DEFAULT | ||
- | link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 | ||
- | 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000 | ||
- | link/ether 00:1e:67:7f:e4:eb brd ff:ff:ff:ff:ff:ff | ||
- | 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 | ||
- | link/ether 00:1e:67:7f:e4:ec brd ff:ff:ff:ff:ff:ff | ||
- | 4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 | ||
- | link/ether 00:1e:67:7f:e4:ed brd ff:ff:ff:ff:ff:ff | ||
- | 5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000 | ||
- | link/ether 00:1e:67:7f:e4:ee brd ff:ff:ff:ff:ff:ff | ||
- | 7: mic0: <BROADCAST> mtu 64512 qdisc noop state DOWN mode DEFAULT qlen 1000 | ||
- | link/ether 4c:79:ba:32:0f:71 brd ff:ff:ff:ff:ff:ff | ||
- | </code> | ||
- | |||
- | Copie du paramétrage pour le module MIC chargé au démarrage | ||
- | <code> | ||
- | cat /root/XeonPhi/mpss-3.4.1/mpss-modules/mic.conf >> /etc/modprobe.d/mic.conf | ||
- | echo mic >> /etc/modules | ||
- | </code> | ||
- | |||
- | Création du ''initrd'' | ||
- | <code> | ||
- | update-initramfs -k all -u | ||
- | </code> | ||
- | |||
- | Sachant que j'utilise plutôt dracut pour la création de mes ''initrd''<code>dpkg-reconfigure dracut</code> | ||
- | ==== Installation des paquets MPSS ==== | ||
- | |||
- | 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. | ||
- | <code> | ||
- | cd /root/XeonPhi/mpss-3.4.1 | ||
- | rm *mpss-modules*deb | ||
- | ls *-lib*deb | xargs -I '{}' dpkg -i '{}' | ||
- | ls *deb | grep -v '\-lib' | xargs -I '{}' dpkg -i '{}' | ||
- | </code> | ||
- | |||
- | Par défaut les installations se font dans :<code>/opt/mpss/3.4.1 | ||
- | /opt/intel/mic | ||
- | /etc/mpss | ||
- | /usr/lib64 | ||
- | /usr/linux-k1om-4.7 | ||
- | </code> | ||
- | |||
- | 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'' : | ||
- | <code>echo /usr/lib64 >> /etc/ld.so.conf.d/mic.conf</code> | ||
- | |||
- | <code>ldconfig</code> | ||
- | |||
- | La commande ''mpssinfo'' | ||
- | <code> | ||
- | MpssInfo Utility Log | ||
- | Created Tue Nov 18 20:10:00 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 | ||
- | |||
- | Device No: 0, Device Name: mic0 | ||
- | |||
- | Board | ||
- | Vendor ID : 0x8086 | ||
- | Device ID : 0x225c | ||
- | Subsystem ID : 0x7d99 | ||
- | Coprocessor Stepping ID : 2 | ||
- | PCIe Width : x16 | ||
- | PCIe Speed : 5 GT/s | ||
- | PCIe Max payload size : 256 bytes | ||
- | PCIe Max read req size : 512 bytes | ||
- | Coprocessor Model : 0x01 | ||
- | Coprocessor Model Ext : 0x00 | ||
- | Coprocessor Type : 0x00 | ||
- | Coprocessor Family : 0x0b | ||
- | Coprocessor Family Ext : 0x00 | ||
- | Coprocessor Stepping : C0 | ||
- | Board SKU : C0QS-7120 P/A/X/D | ||
- | </code> | ||
- | |||
- | Pour démarrer le système sur le Xeon Phi, le 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> | ||
- | mkdir /var/lock/subsys | ||
- | sed -i "s/^exit/mkdir\ \/var\/lock\/subsys\nexit/g" /etc/rc.local | ||
- | </code> | ||
- | |||
- | Lancement avec la commande suivante : ''micctrl \-\-initdefaults'' dont la sortie est la suivante | ||
- | <code> | ||
- | [Warning] mic0: Generating compatibility network config file /opt/intel/mic/filesystem/mic0/etc/sysconfig/network/ifcfg-mic0 for IDB. | ||
- | [Warning] This may be problematic at best and will be removed in a future release, Check with the IDB release. | ||
- | </code> | ||
- | |||
- | <code>micctrl --config</code> | ||
- | |||
- | <code> | ||
- | mic0: | ||
- | ============================================================= | ||
- | Config Version: 1.1 | ||
- | |||
- | Linux Kernel: /usr/share/mpss/boot/bzImage-knightscorner | ||
- | Map File: /usr/share/mpss/boot/System.map-knightscorner | ||
- | BootOnStart: Enabled | ||
- | Shutdowntimeout: 300 seconds | ||
- | |||
- | ExtraCommandLine: highres=off | ||
- | PowerManagment: cpufreq_on;corec6_on;pc3_on;pc6_on | ||
- | |||
- | Root Device: Dynamic Ram Filesystem /var/mpss/mic0.image.gz from: | ||
- | Base: CPIO /usr/share/mpss/boot/initramfs-knightscorner.cpio.gz | ||
- | CommonDir: Directory /var/mpss/common | ||
- | Micdir: Directory /var/mpss/mic0 | ||
- | |||
- | Network: Static Pair | ||
- | Hostname: r720-mic0.cluster.zone. | ||
- | MIC IP: 172.31.1.1 | ||
- | Host IP: 172.31.1.254 | ||
- | Net Bits: 24 | ||
- | NetMask: 255.255.255.0 | ||
- | MtuSize: 64512 | ||
- | MIC MAC: 4c:79:ba:1a:1e:78 | ||
- | Host MAC: 4c:79:ba:1a:1e:79 | ||
- | |||
- | LDAP: Disabled | ||
- | NIS: Disabled | ||
- | |||
- | Cgroup: | ||
- | Memory: Disabled | ||
- | |||
- | Console: hvc0 | ||
- | VerboseLogging: Disabled | ||
- | CrashDump: /var/crash/mic 16GB | ||
- | </code> | ||
- | |||
- | Lancement du démon avec ''mpssd'' | ||
- | |||
- | 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> | ||
- | mic0: online (mode: linux image: /usr/share/mpss/boot/bzImage-knightscorner) | ||
- | </code> | ||
- | |||
- | 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> | ||
- | auto mic0 | ||
- | iface mic0 inet static | ||
- | address 172.31.1.254 | ||
- | netmask 255.255.255.0 | ||
- | broadcast 172.31.1.255 | ||
- | network 172.31.1.0 | ||
- | post-up /sbin/iptables -t nat -A POSTROUTING -s 172.31.1.0/24 -o eth0 -j MASQUERADE | ||
- | </code> | ||
- | |||
- | <code> | ||
- | echo mic >> /etc/modules | ||
- | update-initramfs -k all -u | ||
- | </code> | ||
- | |||
- | Chargement de l'interface réseau avec ''ifup mic0'' | ||
- | |||
- | Connexion sur le xeon-phi avec ''ssh 172.31.1.1'' | ||
- | |||
- | Vérification du nombre de processeurs avec ''cat /proc/cpuinfo | grep ^processor | wc -l'' lequel donne ''244''. | ||
- | |||
- | ==== Installation du composant OpenCL ==== | ||
- | |||
- | === Installation des composants OpenCL standards === | ||
- | |||
- | <code> | ||
- | apt-get install amd-clinfo amd-opencl-icd ocl-icd-libopencl1 ocl-icd-dev | ||
- | </code> | ||
- | |||
- | === Vérification du fonctionnement de OpenCL avec clinfo === | ||
- | |||
- | <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 Devices, Inc. | ||
- | Platform Extensions: cl_khr_icd cl_amd_event_callback cl_amd_offline_devices | ||
- | |||
- | 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 : ==== | ||
- | |||
- | Il n'est pas possible de disposer directement de la dernière version OpenCL par un simple | ||
- | |||
- | <code> | ||
- | 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> | ||
- | |||
- | ==== Conversion des RPM en DEB ==== | ||
- | |||
- | <code> | ||
- | ls *.rpm | xargs -I '{}' alien --scripts '{}' | ||
- | </code> | ||
- | |||
- | <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 ==== | ||
- | |||
- | <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 ===== | ||
- | |||
- | |||
- | |||