Ceci est une ancienne révision du document !


Installation d'un Xeon Phi sous Debian Wheezy

Introduction

La société Intel a mis à disposition fin 2013 des Intel Xeon Phi de manière à évaluer leurs performances en OpenCL. Les

Installation

Détection du périphérique

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)

Création des paquets Intel

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.

Préparation du système

  • Installation de quoi transformer les paquets RPM en DEB
    apt-get install alien
  • Installation de qui construire des paquets Debian :
    apt-get install pbuilder
  • Installation de quoi compiler un module noyau :
    apt-get install kernel-package

Transformation des paquets RPM en DEB

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

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.

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 MIC

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

Installation des paquets MPSS

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

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 :

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 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 :

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.

Historique

Des débuts difficiles pour une prise en main impossible

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.

developpement/activites/integration/xeonphi4wheezy.1398320889.txt.gz · Dernière modification: 2015/01/07 10:04 (modification externe)