Calcul sur GPU

L'article du développement GPU accelerated Quantitative Trait Loci Detection.pdf

Le développement se trouve dans le fichier source:/trunk/src/analyse/cuda_qtlmap_linear.cu

Le modèle objet

QTLMapGenericModelCalcul est une classe générique pour implémenter le flow générique d'execution pour la detection de QTL :

  1. Initialisation des structures : start_analysis : source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L140
  2. Critère de convergence de l'estimation des effets: source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L141
  3. Calcul XX' pour la partie constante à la position (effet famille et de nuisance) calcul_XT_X_A: source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L142
  4. Calcul XX' pour la partie constante * variable (effet QTL/Haplotype) calcul_XT_X_B: source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L143
  5. Calcul XX' pour la partie variable * variable calcul_XT_X_C: source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L144
  6. calcul_Cholesky_Decomposition: source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L145
  7. calcul_RHS : source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L146
  8. calcul_LU : source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L147
  9. calcul_SIGSQ : source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L148

Il y a 3 classes qui implémentent cette classe abstraite :

  1. QTLMapHomoscedasticModelCalcul (source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L151):
    Analyse homoscedastique (calcul=3)
  2. QTLMapHeteroscedasticModelCalcul (source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L200) :
    Analyse heteroscedastique (calcul=4)
  3. QTLMapHomoscedasticAnimalModelCalcul (source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L171) :
    Analyse prenant en compte la matrice de parenté (experimental voir Modèle_Animal)

L’implémentation consiste à "coder" les différentes fonctions (étape du workflow) citées plus haut (9 fonctions).

exemple code de calcul_SIGSQ : * pour l'analyse homo : source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L2001 * pour l'analyse hetero : source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L2166

Le flow générique (execution de l'algo quelque soit l'instanciation de l'analyse (homo,hetero,animale)) se trouve dans la fonction cuda_model_resolv_genome_ (source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L2279)

L'appel Fortran

Le code fortran qui appel la fonction cuda_model_resolv_genome_ se trouve dans le module incidence de QTLMap (package analyse) :

GPU accelerated Quantitative Trait Loci Detection.pdf - Article JCB (611,518 ko) Olivier Filangi, 03/06/2014 14:01