Publicado el :
Rendimiento CREATION_INTERNE

Demostración de ejecución paralela SAS/CONNECT

Este código también está disponible en: Deutsch English Français
Este programa ilustra la técnica de procesamiento paralelo al lanzar dos sesiones SAS©/CONNECT (sess1 y sess2). Utiliza la opción `wait=no` en la instrucción `rsubmit` para ejecutar simultáneamente dos pasos `DATA _NULL_` que contienen cada uno una instrucción `sleep(10)`. El script mide el tiempo total de ejecución para probar que las tareas se ejecutaron en paralelo (tiempo total < suma de los tiempos individuales). Nota: El código contiene referencias explícitas a la arquitectura SAS© 9 Grid (opciones de metadatos, `grdsvc_enable`) que requerirían una adaptación para un entorno SAS© Viya 4 nativo.
Análisis de datos

Type : CREATION_INTERNE


No se leen datos externos. Uso de funciones del sistema (time, sleep) y macrovariables para la lógica de prueba.

1 Bloque de código
OPTIONS / MACRO
Explicación :
Definición de las opciones de conexión al servidor de metadatos (específico de SAS 9) y activación del servicio de grid para permitir las envíos paralelos.
¡Copiado!
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 Bloque de código
SAS/CONNECT
Explicación :
Captura de la hora de inicio, inicialización de la primera sesión remota (sess1) y envío asíncrono (wait=no) de una tarea de espera de 10 segundos.
¡Copiado!
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 Bloque de código
SAS/CONNECT
Explicación :
Inicialización de la segunda sesión (sess2) y envío asíncrono de una segunda tarea de espera idéntica.
¡Copiado!
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 Bloque de código
SAS/CONNECT
Explicación :
Comando de sincronización que espera la finalización de todas las tareas enviadas (waitfor) seguido del cierre de las sesiones.
¡Copiado!
1waitfor _all_;
2SIGNOFF _all_;
5 Bloque de código
DATA STEP
Explicación :
Captura de la hora de finalización y paso de Data Step para calcular y mostrar la duración total transcurrida, validando el paralelismo.
¡Copiado!
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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Author: Greg Wootton Date: 04DEC2018