Au fil des flows

11nov/126

Une solution pour travailler sur du code ensemble, BitBucket

Posted by Fabien Arcellier

Si je ne devais choisir qu'un outil pour m'aider dans le développement, mon choix se porterait sans hésitation sur le gestionnaire de sources.
Que ce soit en traçant, en conservant toutes les modifications ou en permettant de jeter du code sans le commenter en pensant "ça peut servir plus tard", cet outil est à mon sens indispensable.

Aujourd'hui, je n'envisage pas de me lancer dans un projet qui représente plus d'un jour de travail sans un gestionnaire de source derrière.

Quel gestionnaire de source ?

J'utilise Subversion au quotidien, que ce soit au travail ou pour des projets personnels. C'est un outil qui remplit très bien son rôle à mon sens à condition d'être une équipe réduite et mature dans son fonctionnement.

logo de subversion

Chez Eurosonic, je l'ai mis en place en 2010, lors de mon arrivée en temps qu'apprenti. Depuis, tous les projets informatiques et une partie des projets électroniques sont hébergés dessus.

Aujourd'hui, Subversion possede quelques faiblesses dû à son mode de fonctionnement. C'est une gestion des dépôts dites centralisée. C'est à dire un projet est disponible au travers d'un seul serveur pour plusieurs clients. Cette architecture, simple à comprendre et à mettre en oeuvre, pose lors d'un usage avancé quelques difficultés.

Pour tous les concours Intel Accelerate précédents, Maxime et moi l'avons jusqu'à présent utilisé. J'hebergeai les dépôts sur le vps sur lequel tourne ce blog.

Cette fois, je souhaitai sortir de ma zone de confort et aller plus loin. J'ai proposé que nous utilisions Git pour héberger nos codes sources.

Logo de git

Difference

Il existe des gestionnaires de sources où le client et le serveur ne sont pas différenciés. Ces derniers temps, vous pouvez trouver de nombreuses références sur internet.

Dans subversion, vous déclarez créez un dépôt pour votre projet sur un serveur. Ce serveur sera le chef d'orchestre de votre projet. C'est lui qui gerera toutes les demandes de modification (commande commit), la mise en à jour du poste de travail (commande update)

Comment marche subversion ? (Dépots centralisés)

Dans le cas de git, chaque utilisateur a un dépôt sur sa machine. Cette solution peut à première vue faire peur. La réalité est différente. On garde souvent un référentiel et vous allez dialoguer avec le référentiel pour envoyer vos modifications ou mettre à jour votre poste de travail. Finalement y'a une différence ?

Oui, vous pouvez très bien pour certaines modifications dialoguer directement avec 2 autres développeurs, vu que vous avez un serveur sur votre machine, les commits se font sur celle ci. Vous pouvez l'utiliser hors ligne (si vous etes dans le train par exemple) et resynchroniser votre poste en récupérant une connexion internet.

Comment marche git ? (Dépots décentralisé)

BitBucket, votre serveur de reference à faible cout

J'avais déjà envisagé cette possibilité le concours précédent mais je l'avais écarté. Je n'avais pas pris le temps de l'installer sur mon serveur. Je trouve l'administration des dépots assez contraignante. Je souhaitai employer un service externe pour l'hébergement

Depuis 2 ans au travers de GitHub par exemple, il est était possible de disposer d'un dépôt publique gratuitement. Dans un projet personnel, c'est une force. Pour un concours de programmation comme Intel Accelerate, c'est un peu dérangeant.

Recemment, j'ai découvert l'offre de BitBucket. C'est très alléchant. L'hébergement d'un dépôt privé est gratuit jusqu'à 5 utilisateurs.

Donc cette fois ci, pas d'excuse. Nous passons sous Git ! Le projet est crée et tout le code source que nous avons écrit est déjà dessus. Ca promet d'être une expérience intéressante.

Les outils

Je ne connais pas encore bien les outils, voici ceux que j'ai déjà utilisé.

Git : La ligne de commande, un indispensable pour l'automatisation
Tortoise Git : Portage de Tortoise SVN vers Git, un indispensable sous windows
Git-Cola : Gui sous linux

Remplis sous: Non classé 6 Commentaires
30mai/120

Utiliser Intel VTune pour identifier les goulets d’etranglements

Posted by Fabien Arcellier

Je viens de publier un billet de blog sur la plateforme Intel Software France.

C'est le premier concours Accelerate sur lequel nous avons aussi facilement accès aux outils d'Intel tel qu'Intel Inspector, ou Intel VTune.
Lors de l'édition précédente, Maxime et moi avions souffert de ce manque. Nous avions identifié trop tard un goulet dans notre code en nous connectant en mode bureau sur la MTL par SSH pour exécuter Vtune et en regardant le profil d'exécution.

Cette fois ci, Intel a publié une version non commerciale de Intel Parallel Studio. J'ai trouvé l'ensemble facile à installer. J'ai beaucoup apprécié d'avoir accès facilement à ces outils.

J'écris ce billet pour décrire l'une de nos expériences lors du dernier concours.

Retrouvez ce billet sur le portail ISN (Intel Software)

Remplis sous: Non classé Aucun commentaire
29mai/120

Nous avons recu les resultat d’Intel Accelerate

Posted by Fabien Arcellier

J'écris ces quelques lignes pour exprimer ma joie. Même plus, mais je serai incapable de le faire vivre par écrit. Nous avons atteint un classement que nous n'espérions pas. Nous avons fini 4ème de la zone EMEA.
Chose surprenante, je pensai que c'etait grâce à la participation communautaire et pourtant, il semblerait que les performances de notre code soit honorable.

Merci à tout ceux qui ont partagé ce moment, et félicitation à Jérôme et Matthias qui pour leur première participation ont terminé 26 ème.

Merci aussi à toutes les personnes chez Intel qui ont mis tout en oeuvre pour rendre ce concours aussi agréable que possible. Que ce soit Xavier, Paul ou Anthony, ils nous ont offert un environnement où exprimer notre créativité extrêmement accessible. J'ai hate de participer au prochain concours.

Remplis sous: Non classé Aucun commentaire
16mai/123

Le debut du printemps etait bien charge mais au combien passionnant …

Posted by Fabien Arcellier

Suite à mon précédent billet, il c'est écoulé près de 1 mois. Finalement, contrairement à ce que je pensai, nous nous sommes pris au jeu pour le concours Accelerate organisé par Intel.

Ou en sommes nous pour Accelerate ?

Avec Maxime, nous avons consacré au moins une cinquantaine d'heures là dessus. Nous aurions aimé faire plus mais le rythme de l'apprentissage rend toujours l'investissement très lourd à moins de faire une croix sur tout loisir.
Aucun regret, au contraire, j'ai encore appris énormément et consolidé certaines connaissances. Même si nous avons moins participé sur le forum, nous n'en sommes pas moins resté actif. Nous avons même organisé notamment une présentation du concours à l'école. C'etait l'occasion de rencontrer les élèves de l'école des mines qui voulaient aussi participer.

J'espere réussir, dans les prochains jours, à prendre le temps d'écrire un article de présentation autour de Intel vTune. C'est vraiment un outil efficace, pratique et très facile à utiliser pour identifier les hotspots dans un algorithme et optimiser le parallélisme.

Je rédigerai aussi probablement une présentation de la solution technique que nous avons remise.

Et le 4L trophy ?

Ce dernier mois a été intense pour nous. Nous avons laissé le 4L Trophy un peu en retrait. Nous sommes toujours dedans et nous voici de retour plus motivé que jamais.

Maxime n'est pas resté inactif pour le 4L trophy. Il a publié le 20 avril sur notre site internet www.4l-trophy-2013.com un billet de blog sur les démarches administratives à engager pour participer à ce rallye.

Elodie et Cyril viennent de rédiger il y'a quelques jours un billet relatant leur expérience pour obtenir une dérogation auprès de désertour, l'organisateur du 4L trophy. Elodie n'étant plus étudiante, c'etait nécessaire.

Si vous êtes dans ce cas, suivez le guide.

Plus que jamais, nous sommes à la recherche de partenaires pour monter ce projet. C'est toujours l'étape la plus délicate. Je le reconnais on se sent parfois démuni de devoir demander de l'argent pour ce genre d'initiative. Nous avons l'impression de chercher à profiter du système.

Remplis sous: Non classé 3 Commentaires
19avr/121

Accelerate your code 2012, c’est parti !

Posted by Fabien Arcellier

J'ai l'impression que notre première participation à ce concours remonte à hier. Pourtant c'etait il y'a un an à présent. Depuis, nous avons avec Maxime participé à toutes les éditions avec un plaisir renouvellé à chaque fois.

Depuis le 16 avril, c'est reparti. Vous trouverez l'énoncé sur le site d'Intel.
Anthony, Paul et Xavier, de Intel Software France, ont décidé de nous faire travailler sur l'ADN cette fois ci.

Le principe du concours reste le même :
- Ecrire un programme qui marche
- Ecrire le programme le plus rapide possible
- Ecrire le programme le plus rapide possible exploitant le plus grand nombre de processeurs disponibles
- Partager son expérience au sein de la communauté

Chaque fois, il s'agit d'un problème se basant sur dont l'algorithme de résolution n'est pas trivial. Au cours des concours précédents, nous avions beaucoup plus de mal à trouver l'algorithme optimal plutôt qu'à optimiser le parallélisme.

Ce n'est pas tout à fait vrai, le problème précédent, nous avions échoué à paralléliser l'analyse du fichier.

Avec le 4L trophy, nous pensions ne pas participer à cette édition. Apres de nombreux doutes et hésitations, nous avons tranché. Vous nous retrouverez bien dans la course. Ce serait trop dommage de ne pas profiter une fois de plus de l'occasion surtout que le problème est très intéressant.

Quelques details sur le sujet

Le programme prend en entrée une référence d'ADN. Une suite de lettre ACGT.

Voici un exemple :

GTAAATGTACCCCAGTAAAGCATCTTAATGTATCTAAGCCACAGAAACTTGCACGATCTCCTGCAAGAATATCCCCGCAC
ATCAAAGATGGAGAGAAAGATAAACACAGAGAAAAACATCCGAATTCATCCCCTAGGACATATAAATGGAGCTTTCAGCT
CA

A partir de cette référence, le programme résultat devra extraire les sous parties présentes dans d'autres fichiers (Un fichier peut contenir plusieurs chaines ADN).

Le programme devra donner les résultats sous la forme suivante :

test_sequence_1
1 910 771 1680
911 1680 1 770
1681 2088 1681 2088

les 2 premiers nombres représentent la position du début et de la fin du motif dans le fichier de reference. Les 2 nombres suivants sont la position dans l'une des séquences d'entrée.

Qu'est ce que c'est la programmation parallele ?

A l'heure d'aujourd'hui, nous commençons à atteindre les limites pour la miniaturisation des puces. La solution choisie par les fondeurs est de créer des processeurs avec de plus en plus de coeurs.

Pour profiter de ces architectures, vous devez écrire du code capable de s'exécuter sur plusieurs unités de calcul.

Pour ça, vous avez plusieurs librairies à votre disposition. La base c'est pThread, l'implémentation des threads posix sous linux. C'est une librairie bas niveau qui vous laisse un contrôle totale sur le fonctionnement de votre programme. La contrepartie c'est que vous devez gérer une complexité plus élevée. La librairie OpenMp suit la philosophie totalement inverse. Vous gérez peu de choses, vous indiquez seulement au compilateur quels sont les parties parallèles (et les boucles parallèles) de votre programme.

Voici un exemple d'un code (assez stupide, vous pouvez le dire) utilisant la librairie open mp pour s'exécuter sur plusieurs processeurs :

#include<stdio.h>
#include<omp.h>

int main (int argc, char const *argv[])
{
  int k;
  #pragma omp parallel for num_threads(8)
  for(k=0;k<100;k++)
  {
    int i = 0;
    sleep(1); // Le sleep permet de simuler une tache prenant un certain temps
    printf("k : %d managed by the thread %d \n",k,omp_get_thread_num());
  }

  return 0;
}

Je remet le lien des 2 articles que nous avions postés sur le site d'Intel à l'occasion de la première édition :
- Résolution du problème des smallbrains numbers
- Recherche de nombres premiers particuliers (Une solution au second problème)

Rien à dire, ce fut une sacré expérience et nous espérons que cette fois ci ce sera encore aussi plaisant.

Remplis sous: Non classé 1 commentaire