BIF-1000 Profession de bio-informaticien - Sébastien Boisvert
BIF-1000 Profession de bio-informaticien - Sébastien Boisvert
BIF-1000 Profession de bio-informaticien - Sébastien Boisvert
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>BIF</strong>-<strong>1000</strong><br />
<strong>Profession</strong> <strong>de</strong> <strong>bio</strong>-<strong>informaticien</strong><br />
Le calcul à haute performance en <strong>bio</strong>-informatique<br />
Durée: 30 minutes<br />
<strong>Sébastien</strong> <strong>Boisvert</strong><br />
http://boisvert.info
● Institution: Université Laval<br />
● Sigle du cours: <strong>BIF</strong>-<strong>1000</strong><br />
Méta-information<br />
● Titre du cours: La profession <strong>de</strong> <strong>bio</strong>-<strong>informaticien</strong><br />
● Professeur: Patrick Lagüe<br />
●<br />
● Conférencier: <strong>Sébastien</strong> <strong>Boisvert</strong><br />
● Titre: Le calcul à haute performance en <strong>bio</strong>-informatique<br />
● Durée: 30 minutes<br />
● Lieu: Local PLT-2510, Université Laval<br />
● Date: Mercredi le 19 septembre 2012<br />
●<br />
● http://boisvert.info/<strong>BIF</strong>-<strong>1000</strong>/automne2012<br />
2
● La vie excitante d'un <strong>bio</strong>-<strong>informaticien</strong><br />
● Le calcul à haute performance en <strong>bio</strong>informatique<br />
3
● Co<strong>de</strong> source du vivant<br />
L'ADN<br />
Wikipedia, Domaine public<br />
4
● Processus <strong>bio</strong>logique<br />
La transcription<br />
Wikipedia, Creative Commons Attribution-Share Alike 3.0 Unported<br />
5
Générateurs <strong>de</strong> données <strong>bio</strong>logiques<br />
● Instrument Illumina<br />
HiSeq 2000<br />
● Séquençeur d'ADN<br />
● 600 giga bases / 11<br />
jours<br />
● L'étape limitante:<br />
analyse <strong>de</strong> données<br />
Remarques:<br />
1. Illumina et HiSeq sont <strong>de</strong>s marques déposées <strong>de</strong> Illumina Inc.<br />
6
Ordinateur<br />
● Processeur (ADN polymérase,<br />
ARN polymérase, ribosome)<br />
● Mémoire (ARN, contenu <strong>de</strong> la<br />
cellule)<br />
● Stockage (ADN, contenu <strong>de</strong> la<br />
cellule)<br />
● Logiciels (protéines)<br />
● Utilisateur (milieu extra-cellulaire)<br />
Creative Commons paternité – partage à l’i<strong>de</strong>ntique 3.0 (non transposée).<br />
7
Réseau d'ordinateurs<br />
Organisme multi-cellulaire<br />
8
Passage <strong>de</strong> messages<br />
10100101<br />
9
Boucle principale dans un jeu vidéo<br />
while(1){<br />
lire_le_clavier () ;<br />
lire_la_souris () ;<br />
lire_le_reseau () ;<br />
}<br />
mettre_a_jour_l_etat_du_jeu () ;<br />
<strong>de</strong>ssiner_sur_l_ecran () ;<br />
ecrire_sur_le_reseau () ;<br />
/* il manque un régulateur d'itérations par secon<strong>de</strong> ! */<br />
10
Boucle principale dans un logiciel<br />
distribué<br />
while(1){<br />
recevoir_les_messages () ;<br />
}<br />
lire_les_messages (<br />
avancer_l_etat_du_calcul () ;<br />
envoyer_les_messages () ;<br />
11
Courriels<br />
● Boîte <strong>de</strong> réception <strong>de</strong>s messages<br />
● Boîte d'envoi <strong>de</strong>s messages<br />
12
Envoi <strong>de</strong> messages avec MPI<br />
MPI=Message Passing Interface<br />
void send_message(struct process*current_process,uint8_t*buffer,int count,int <strong>de</strong>stination,int tag){<br />
}<br />
#if<strong>de</strong>f ASSERT<br />
assert(<strong>de</strong>stination>=0);<br />
assert(<strong>de</strong>stinationsize);<br />
#endif<br />
MPI_Request request;<br />
MPI_Isend(buffer,count,MPI_BYTE,<strong>de</strong>stination,tag,MPI_COMM_WORLD,&request);<br />
MPI_Request_free(&request);<br />
https://github.com/sebhtml/latency_checker GPLv3<br />
13
Réception <strong>de</strong> message avec MPI<br />
void receive_message(struct process*current_process,struct message*received_message){<br />
}<br />
int flag=0;<br />
MPI_Status status;<br />
MPI_Iprobe(MPI_ANY_SOURCE,MPI_ANY_TAG,<br />
MPI_COMM_WORLD,&flag,&status);<br />
received_message->tag=MESSAGE_TAG_NO_OPERATION;<br />
if(!flag)<br />
return;<br />
received_message->tag=status.MPI_TAG;<br />
received_message->source=status.MPI_SOURCE;<br />
received_message->count=0;<br />
MPI_Get_count(&status,MPI_BYTE,&(received_message->count));<br />
MPI_Recv(received_message->buffer,received_message->count,<br />
MPI_BYTE,received_message->source,received_message->tag,<br />
MPI_COMM_WORLD,&status);<br />
https://github.com/sebhtml/latency_checker GPLv3<br />
14
● Corporation financée par le gouvernement<br />
canadien<br />
● Opère <strong>de</strong>s super-ordinateurs à l'échelle du<br />
Canada<br />
● À l'Université Laval: colosse<br />
15
● 960 ordinateurs <strong>de</strong> calcul<br />
Colosse<br />
● 1920 processeurs Intel(R) Xeon(R) X5560(R)<br />
● 4 coeurs <strong>de</strong> 2.8 gigahertz par processeur<br />
● Total: 9680 coeurs<br />
● Réseau Infiniband(R) Mellanox(R) MT26428(R)<br />
● 1 000 000 000 giga octets <strong>de</strong> stockage<br />
● Système <strong>de</strong> fichiers distribué Lustre(R)<br />
● Linux (CentOS)<br />
● Rpeak: 85.3 tera FLOPS (10^12 opérations en virgule flottante par secon<strong>de</strong>)<br />
● Rmax: 77.2 tera FLOPS<br />
● http://i.top500.org/system/10195<br />
16
Logiciels sur Colosse<br />
● Besoin pour <strong>de</strong>s logiciels distribués (passage<br />
<strong>de</strong> messages)<br />
● Le même logiciel s'exécute <strong>de</strong>s centaines <strong>de</strong><br />
fois sur plusieurs ordinateurs<br />
● Un logiciel qui s'exécute s'appelle un<br />
processus<br />
● Processus distribués qui se passe <strong>de</strong>s<br />
messages pour partager <strong>de</strong>s informations<br />
17
Graphe <strong>de</strong> Bruijn<br />
18
Les systèmes logicielles “Ray”<br />
● Assemblage <strong>de</strong> novo <strong>de</strong> génomes<br />
● Métagénomes<br />
● Profilage <strong>bio</strong>logique<br />
● en C++ (portable sur systèmes POSIX(R) dont<br />
Linux(R) et Microsoft(R) Windows(R)<br />
● Utilise le passage <strong>de</strong> messages<br />
● Chaque processus envoie entre 5 000 et 10 000<br />
messages par secon<strong>de</strong> !<br />
● Licence GPLv3<br />
● <strong>Boisvert</strong> et al. (2010) Journal of Computational<br />
Biology<br />
http://dx.doi.org/doi:10.1089/cmb.2009.0238<br />
● <strong>Boisvert</strong> et al. (2012) en révision<br />
Remarque:<br />
Linux est une marque déposée <strong>de</strong> Linus Torvalds.<br />
19
Assembler <strong>1000</strong> génomes<br />
bactériens en même temps<br />
● Total: 18 hours, 25 minutes, 20 seconds<br />
● 512 processus Ray<br />
● 64 ordinateurs<br />
● ~ 1536 giga octets <strong>de</strong> mémoire distribué !<br />
● ~ 5.2 tera FLOPS<br />
20
Latence<br />
● Latence basse pour le passage <strong>de</strong> messages<br />
● 8*8*8=512<br />
● Représenter les rangs en base 8<br />
● → → → <br />
● → → → <br />
● Sur colosse, routage avec polytope régulier convexe<br />
● Aller-retour d'un message <strong>de</strong> 4000 octets: ~35<br />
microsecon<strong>de</strong>s (1 microsecon<strong>de</strong> = 10^-6 secon<strong>de</strong>)<br />
21
●<br />
●<br />
Beaucoup <strong>de</strong> messages<br />
● Rank 0: sent 1658262884 messages, received 1659261879 messages.<br />
● Rank 1: sent 1644615558 messages, received 1644613465 messages.<br />
● Rank 2: sent 1658543863 messages, received 1658541782 messages.<br />
● Rank 3: sent 1643008628 messages, received 1643006584 messages.<br />
● Rank 4: sent 1629459552 messages, received 1629457560 messages.<br />
● Rank 5: sent 1635200230 messages, received 1635198204 messages.<br />
● Rank 6: sent 1655487701 messages, received 1655485706 messages.<br />
● Rank 7: sent 1647530807 messages, received 1647528733 messages.<br />
● Rank 8: sent 1645931438 messages, received 1645929348 messages.<br />
● Rank 9: sent 1634510788 messages, received 1634508745 messages.<br />
● (502 processus Ray cachés)<br />
22
● 0,0,0 (0) -> 1,0,0 (1) Load: 77007376<br />
● 0,0,0 (0) -> 2,0,0 (2) Load: 77015518<br />
● 0,0,0 (0) -> 3,0,0 (3) Load: 77010637<br />
● 0,0,0 (0) -> 4,0,0 (4) Load: 77011423<br />
● 0,0,0 (0) -> 5,0,0 (5) Load: 77008990<br />
● 0,0,0 (0) -> 6,0,0 (6) Load: 77018635<br />
● 0,0,0 (0) -> 7,0,0 (7) Load: 77017997<br />
● 0,0,0 (0) -> 0,1,0 (8) Load: 81274715<br />
● 0,0,0 (0) -> 0,2,0 (16) Load: 77019588<br />
● 0,0,0 (0) -> 0,3,0 (24) Load: 80382939<br />
● 0,0,0 (0) -> 0,4,0 (32) Load: 78019878<br />
● 0,0,0 (0) -> 0,5,0 (40) Load: 77018488<br />
● 0,0,0 (0) -> 0,6,0 (48) Load: 77017745<br />
● 0,0,0 (0) -> 0,7,0 (56) Load: 77015266<br />
● 0,0,0 (0) -> 0,0,1 (64) Load: 81267960<br />
● 0,0,0 (0) -> 0,0,2 (128) Load: 77018529<br />
● 0,0,0 (0) -> 0,0,3 (192) Load: 77934327<br />
● 0,0,0 (0) -> 0,0,4 (256) Load: 76985462<br />
● 0,0,0 (0) -> 0,0,5 (320) Load: 76996018<br />
● 0,0,0 (0) -> 0,0,6 (384) Load: 76981051<br />
● 0,0,0 (0) -> 0,0,7 (448) Load: 73930723<br />
●<br />
Routage dynamique<br />
23
● Bibliothèque logicielle<br />
● Licence: LGPLv3<br />
24
● Compagnie <strong>de</strong> super ordinateurs<br />
● Collaboration pour porter Ray sur le produit<br />
Cray XE6<br />
● > <strong>1000</strong>0 processus Ray sur le Cray XE6<br />
Remarques:<br />
1. Cray est une marque déposée <strong>de</strong> Cray Inc.<br />
2. Il n'y a pas <strong>de</strong> lien entre Ray (le logiciel libre) et Cray (la compagnie)<br />
26
● J'ai participé à un atelier <strong>de</strong> 25 experts<br />
mondiaux organisé par Argonne.<br />
● Toutes dépenses payées<br />
● Summer 2012 Week 3: Next<br />
Generation Sequence Analysis<br />
● July 28, 2012 to August 4, 2012<br />
● Canyons Resort, 4000 Canyons<br />
Resort Drive, Park City, Utah<br />
● Ray a vraiment impressionné les<br />
experts invités !<br />
Remarque:<br />
http://www.icis.anl.gov/programs/summer2012-3a<br />
1. Argonne est géré pour le U.S. Department of Energy par UChicago Argonne, LLC.<br />
27
● Visite du laboratoire<br />
national Argonne à la<br />
mi-octobre 2012<br />
● À suivre !<br />
Remarque:<br />
1. Argonne est géré pour le U.S. Department of Energy par UChicago Argonne, LLC.<br />
28
Pério<strong>de</strong> <strong>de</strong> questions<br />
29