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 :
- Initialisation des structures : start_analysis : source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L140
- Critère de convergence de l'estimation des effets: source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L141
- 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
- Calcul XX' pour la partie constante * variable (effet QTL/Haplotype) calcul_XT_X_B: source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L143
- Calcul XX' pour la partie variable * variable calcul_XT_X_C: source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L144
- calcul_Cholesky_Decomposition: source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L145
- calcul_RHS : source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L146
- calcul_LU : source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L147
- calcul_SIGSQ : source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L148
Il y a 3 classes qui implémentent cette classe abstraite :
- QTLMapHomoscedasticModelCalcul (source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L151):
Analyse homoscedastique (calcul=3) - QTLMapHeteroscedasticModelCalcul (source:/trunk/src/analyse/cuda_qtlmap_linear.cu#L200) :
Analyse heteroscedastique (calcul=4) - 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) :
- source:/trunk/src/analyse/m_qtlmap_incidence.F95#L4700 (H0 compilation en simple précision)
- source:/trunk/src/analyse/m_qtlmap_incidence.F95#L4735 (H0 compilation en double précision)
- source:/trunk/src/analyse/m_qtlmap_incidence.F95#L5289 (H1 compilation en simple précision)
- source:/trunk/src/analyse/m_qtlmap_incidence.F95#L5326 (H1 compilation en double précision)