Enchainement des params GPU sans transferts de données entre les params
physiq_mod
- Nettoyer
physiqpour pouvoir enchainer lesCALL param - Délimiter la (les) région(s) de calcul à effectuer sur GPU
- Générer le code GPU pour les params en question (avec
autocompare=False). Dans un 2ème temps, GPUM pourra "découvrir" les params dans les régions de calcul GPU et GPU-iser directement
Transfert des arguments (exemple cpu to gpu)
A effectuer en début de région GPU.
- Ajouter un
includeavant région GPUinclude s2s_cpu2gpu.incavec:
call lscp_args2gpu(args, ...)
lscp_args2gpu a la même signature que lscp. Elle est contenue dans le module de lscp et appelle les routines existantes type lscp_argin.
Avantages:
- ne pas avoir à modifier
physiq(sauf leUSE lmdz_lscp, ONLY: lscpenUSE lmdz_lscp) - ne pas avoir à déclarer les arguments de lscp_args2gpu (déjà fait dans
physiq) - simple copier/coller de
lscp(args)enlscp_args2gpu(args)dansphysiq.
Transfert des variables de module (exemple cpu to gpu)
A effectuer en début de région GPU.
- Ajouter soit un
includeavant région GPUinclude s2s_cpu2gpu.incavec:
call lscp_modin(s2s_create)
call lscp_modin(s2s_update_device)
à condition de changer le USE lmdz_lscp, ONLY: lscp en USE lmdz_lscp.
Ou sinon, à faire dans un module séparé.
Avantages:
- toutes les routines
_modinet_modoutexistent déjà et on gère les variables de module pour tout l'arbre d'appel de la param.
- Renommer toutes les variables de module pour éviter les conflits de nom.
Par exemple:
RTTenlmdz_lscp_ini__RTTetRTTenyomcst_mod_h__RTT