Ceci est une ancienne révision du document !
La société Intel a mis à disposition fin 2013 des Intel Xeon Phi de manière à évaluer leurs performances en OpenCL. Les
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 lspsi
offrait pour ce matériel la sortie suivante :
08:00.0 Co-processor: Intel Corporation Device 225c (rev 11)
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 :
08:00.0 Co-processor: Intel Corporation Xeon Phi coprocessor SE10/7120 series (rev 11)
Les composants fournis par Intel sont présents sur le site Intel 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
wget http://registrationcenter.intel.com/irc_nas/3778/mpss-3.1.2-rhel-6.5.tar
La documentation MPSS User Guide est indispensable pour commencer.
apt-get install alien
apt-get install pbuilder
apt-get install kernel-package
tar xvf mpss-3.1.2-rhel-6.5.tar cd mpss-3.1.2 ls *.rpm | xargs -I '{}' alien --scripts '{}'
La liste des paquets crés est la suivante :
glibc2.12.2pkg-libmicaccesssdk0_3.1.2-2_amd64.deb glibc2.12.2pkg-libmicaccesssdk-dev_3.1.2-2_amd64.deb glibc2.12.2pkg-libmicaccesssdk-doc_3.1.2-2_amd64.deb glibc2.12.2pkg-libmicmgmt0_3.1.2-2_amd64.deb glibc2.12.2pkg-libmicmgmt-dev_3.1.2-2_amd64.deb glibc2.12.2pkg-libmicmgmt-doc_3.1.2-2_amd64.deb glibc2.12.2pkg-libodmdebug0_3.1.2-2_amd64.deb glibc2.12.2pkg-libodmdebug-dev_3.1.2-2_amd64.deb glibc2.12.2pkg-libsettings0_3.1.2-2_amd64.deb glibc2.12.2pkg-libsettings-dev_3.1.2-2_amd64.deb intel-composerxe-compat-k1om_3.1.2-2_amd64.deb libscif0_3.1.2-2_amd64.deb libscif-dev_3.1.2-2_amd64.deb libscif-doc_3.1.2-2_amd64.deb mpss-boot-files_3.1.2-2_amd64.deb mpss-coi_3.1.2-2_amd64.deb mpss-coi-dev_3.1.2-2_amd64.deb mpss-coi-doc_3.1.2-2_amd64.deb mpss-daemon_3.1.2-2_amd64.deb mpss-daemon-dev_3.1.2-2_amd64.deb mpss-eclipse-cdt-mpm_3.1.2-2_amd64.deb mpss-flash_3.1.2-2_amd64.deb mpss-license_3.1.2-2_amd64.deb mpss-metadata_3.1.2-2_amd64.deb mpss-metadata-dev_3.1.2-2_amd64.deb mpss-miccheck_3.1.2-1_amd64.deb mpss-miccheck-bin_3.1.2-1_amd64.deb mpss-micmgmt_3.1.2-2_amd64.deb mpss-micmgmt-doc_3.1.2-2_amd64.deb mpss-micmgmt-python_3.1.2-2_amd64.deb mpss-modules-2.6.32-431.el6.x86-64_3.1.2-2_amd64.deb mpss-modules-dev-2.6.32-431.el6.x86-64_3.1.2-2_amd64.deb mpss-modules-headers_3.1.2-2_amd64.deb mpss-modules-headers-dev_3.1.2-2_amd64.deb mpss-mpm_3.1.2-2_amd64.deb mpss-mpm-doc_3.1.2-2_amd64.deb mpss-myo_3.1.2-2_amd64.deb mpss-myo-dev_3.1.2-2_amd64.deb mpss-myo-doc_3.1.2-2_amd64.deb mpss-rasmm-kernel_3.1.2-2_amd64.deb mpss-sciftutorials_3.1.2-2_amd64.deb mpss-sciftutorials-doc_3.1.2-2_amd64.deb mpss-sdk-k1om_3.1.2-2_amd64.deb mpss-sysmgmt-micras_3.1.2-2_amd64.deb mpss-sysmgmt-micsmc-gui_3.1.2-2_amd64.deb mpss-sysmgmt-python_3.1.2-2_amd64.deb
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.
host/linvnet.c host/pm_ioctl.c micscif/micscif_debug.c micscif/micscif_rb.c vnet/micveth_dma.c
Voici les opérations nécessaires poir compiler le module associé au noyau :
mkdir mpss-modules cd mpss-modules rpm2cpio ../src/mpss-modules-3.1.2-1.el6.src.rpm | cpio -idmv tar jxf mpss-modules-3.1.2.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
Chargement du module par la commande @modprobe mic@
Dans le dmesg
on obtient :
[ 5486.230236] vnet: mode: dma, buffers: 62 [ 5486.230446] mic 0000:08:00.0: setting latency timer to 64 [ 5486.230662] mic 0000:08:00.0: irq 145 for MSI/MSI-X [ 5486.230701] mic0: Transition from state ready to resetting [ 5496.148217] sched: RT throttling activated [ 5496.150412] mic_probe 8:0:0 as board #0 [ 5496.150545] mic: number of devices detected 1 [ 5497.148253] mic0: Resetting (Post Code 12) [ 5497.148272] mic0: Transition from state resetting to ready [ 5497.148320] My Phys addrs: 0x87cba60000 and scif_addr 0x8818b192c0
En tapant ip link show
on obtient :
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
Copie du paramétrage pour le module MIC chargé au démarrage
cp /root/mpss-3.1.2/mpss-modules/mic.conf /etc/modprobe.d update-initramfs -k all -u
Les paquets MPSS d'Intel ont été transformés avec alien
dans /root/mpss-3.1.2
Les paquets mpss-modules sont supprimés. Les autres installés tel que.
cd /root/mpss-3.1.2 rm *mpss-modules*deb ls *-lib*deb | xargs -I '{}' dpkg -i '{}' ls *deb | grep -v '\-lib' | xargs -I '{}' dpkg -i '{}'
Par défaut les installations se font dans :
/opt/mpss/3.1.2 /opt/intel/mic/ /etc/mpss /usr/lib64</cdoe> Ceci n'est plus le cas dans la Debian Wheezy. Installation d'un ''LD_LIBRARY_PATH'' sur ''/usr/lib64'' <code>echo /usr/lib64 >> /etc/ld.so.conf.d/mic.conf
La commande mpssinfo
MPSS : mpssinfo MpssInfo Utility Log Created Thu Feb 13 15:52:59 2014 System Info 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 Device ID : 0x225c Subsystem ID : 0x2500 Coprocessor Stepping ID : 3 PCIe Width : x16 PCIe Speed : 5 GT/s PCIe Max payload size : 256 bytes PCIe Max read req size : 4096 bytes Coprocessor Model : 0x01 Coprocessor Model Ext : 0x00 Coprocessor Type : 0x00 Coprocessor Family : 0x0b Coprocessor Family Ext : 0x00 Coprocessor Stepping : B1 Board SKU : B1PRQ-7110 P/X MICCTRL : micctrl --status mic0: ready
Pour démarrer le système MPSSD, mais il s'attend à trouver un /var/lock/subsys pour créer un /var/lock/subsys/mpssd
mkdir /var/lock/subsys sed -i "s/^exit/mkdir\ \/var\/lock\/subsys\nexit/g" /etc/rc.local
Lancement avec la commande suivante : micctrl –initdefaults
dont la sortie est la suivante
[Warning] mic0: Generating compat network config file. This will be removed in the 3.2 release [Warning] mic0: User 'root' does not have either rsa or dsa keys created micctrl --config mic0: ============================================================= Linux Kernel: /usr/share/mpss/boot/bzImage-knightscorner BootOnStart: Enabled Shutdowntimeout: 300 seconds ExtraCommandLine: highres=off PowerManagment cpufreq_on;corec6_on;pc3_on;pc6_on UserAuthentication: Local Root Device: Dynamic Ram Filesystem /var/mpss/mic0.image.gz from: Base: /usr/share/mpss/boot/initramfs-knightscorner.cpio.gz CommonDir: /var/mpss/common.filelist MicDir: /var/mpss/mic0.filelist Network: Static Pair Hostname: grizzly-mic0 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:32:0f:70 Host MAC: 4c:79:ba:32:0f:71 Console: hvc0 VerboseLogging: Disabled
Lancement du démon avec mpssd
Connaissance de d'état de la carte avec micctrl –status
mic0: online (mode: linux image: /usr/share/mpss/boot/bzImage-knightscorner)
Définition de l'adresse statique de l'interface mic0 dans /etc/network/interfaces
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
echo mic >> /etc/modules update-initramfs -k all -u
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
.
La société Intel a mis à disposition fin octobre 2013 un Xeon Phi 7120P à disposition de Emmanuel Quémener, du Centre Blaise Pascal.
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 Tesla. Elle nécessite 2 connecteurs 6 broches pour son alimentation, deux emplacements PCI, un port PCI-Express 16x et une longueur suffisante.
La première étape a été de trouver un socle pour l'accueillir de manière transitoire et réaliser les premiers tests.