Publié le :
Performance CREATION_INTERNE

Démonstration d'exécution parallèle SAS/CONNECT

Ce code est également disponible en : Deutsch English Español
Ce programme illustre la technique de traitement parallèle en lançant deux sessions SAS©/CONNECT (sess1 et sess2). Il utilise l'option `wait=no` dans l'instruction `rsubmit` pour exécuter simultanément deux étapes `DATA _NULL_` contenant chacune une instruction `sleep(10)`. Le script mesure le temps total d'exécution pour prouver que les tâches se sont déroulées en parallèle (temps total < somme des temps individuels). Note : Le code contient des références explicites à l'architecture SAS© 9 Grid (options métadonnées, `grdsvc_enable`) qui nécessiteraient une adaptation pour un environnement SAS© Viya 4 natif.
Analyse des données

Type : CREATION_INTERNE


Aucune donnée externe lue. Utilisation de fonctions système (time, sleep) et de macro-variables pour la logique de test.

1 Bloc de code
OPTIONS / MACRO
Explication :
Définition des options de connexion au serveur de métadonnées (spécifique SAS 9) et activation du service de grille pour permettre les soumissions parallèles.
Copié !
1options
2 metaserver='meta.demo.sas.com'
3 metaport=8561
4 metaprotocol='bridge'
5 metauser='sasdemo'
6 metapass='password'
7 metarepository='Foundation'
8 metaconnect='NONE';
9 
10%let rc=%sysfunc(grdsvc_enable(_all_, server=SASApp));
2 Bloc de code
SAS/CONNECT
Explication :
Capture de l'heure de début, initialisation de la première session distante (sess1) et soumission asynchrone (wait=no) d'une tâche d'attente de 10 secondes.
Copié !
1%let st_tm=%SYSFUNC(time(),time.);
2SIGNON sess1;
3rsubmit sess1 wait=no;
4 DATA _null_;
5 rc=sleep(10,1);
6 RUN;
7 %put Note: Sess1 waited 10 seconds;
8endrsubmit;
3 Bloc de code
SAS/CONNECT
Explication :
Initialisation de la seconde session (sess2) et soumission asynchrone d'une seconde tâche d'attente identique.
Copié !
1SIGNON sess2;
2rsubmit sess2 wait=no;
3 DATA _null_;
4 rc=sleep(10,1);
5 RUN;
6 %put Note: Sess2 waited 10 seconds;
7endrsubmit;
4 Bloc de code
SAS/CONNECT
Explication :
Commande de synchronisation attendant la fin de toutes les tâches soumises (waitfor) suivie de la fermeture des sessions.
Copié !
1waitfor _all_;
2SIGNOFF _all_;
5 Bloc de code
DATA STEP
Explication :
Capture de l'heure de fin et étape Data Step pour calculer et afficher la durée totale écoulée, validant le parallélisme.
Copié !
1%let en_tm=%SYSFUNC(time(),time.) ;
2DATA _null_;
3 st_tm="&st_tm"t;
4 en_tm="&en_tm"t;
5 int=intck('seconds',st_tm,en_tm);
6 put "Interval is " int "seconds.";
7RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Author: Greg Wootton Date: 04DEC2018