Skip to content

Enchainement des params GPU sans transferts de données entre les params

physiq_mod

  1. Nettoyer physiq pour pouvoir enchainer les CALL param
  2. Délimiter la (les) région(s) de calcul à effectuer sur GPU
  3. 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.

  1. Ajouter un include avant région GPU include s2s_cpu2gpu.inc avec:
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 le USE lmdz_lscp, ONLY: lscp en USE lmdz_lscp)
  • ne pas avoir à déclarer les arguments de lscp_args2gpu (déjà fait dans physiq)
  • simple copier/coller de lscp(args) en lscp_args2gpu(args) dans physiq.

Transfert des variables de module (exemple cpu to gpu)

A effectuer en début de région GPU.

  1. Ajouter soit un include avant région GPU include s2s_cpu2gpu.inc avec:
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 _modin et _modout existent déjà et on gère les variables de module pour tout l'arbre d'appel de la param.
  1. Renommer toutes les variables de module pour éviter les conflits de nom. Par exemple: RTT en lmdz_lscp_ini__RTT et RTT en yomcst_mod_h__RTT