Veröffentlicht am :

Parallele Ausführung von CAS-Regressionen mit SAS/CONNECT

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Attention : Dieser Code erfordert Administratorrechte.
Das Skript initialisiert zunächst zwei SAS©/CONNECT-Sitzungen ('session1' und 'session2'), wobei jede so konfiguriert ist, dass ein entfernter SAS©-Prozess gestartet wird. Für jede Sitzung übermittelt der Code asynchron (nicht blockierend) eine Reihe von Operationen: Definition von CAS-Optionen, Verbindung zu einem bestimmten CAS-Controller, Laden der Tabelle 'cars' aus der SASHELP-Bibliothek in eine CAS-Tabelle in 'casuser' und Ausführen einer 'simple.regression'-Aktion mit unterschiedlichen Parametern für jede Sitzung (alpha, order). Die Ergebnisse jeder Regression werden dann in temporären CAS-Tabellen gespeichert und spezifische Metadaten werden über die Aktion 'table.fetch' abgerufen. Nach Abschluss der Übermittlungen wartet das Hauptskript auf den Abschluss der beiden entfernten Sitzungen, ruft deren jeweilige Protokolle und Ergebnisse ab und fährt dann mit der Trennung und dem Schließen der SAS©/CONNECT-Sitzungen fort.
Datenanalyse

Type : SASHELP


Die für die Regressionen verwendeten Daten basieren auf der Tabelle 'cars' aus der internen SASHELP-Bibliothek. Diese Tabelle wird in jede entfernte Sitzung in eine CAS-Tabelle ('casuser.cars') geladen, bevor sie von den CAS-Regressionsaktionen verwendet wird.

1 Codeblock
SAS/CONNECT
Erklärung :
Dieser Block richtet zwei separate SAS/CONNECT-Sitzungen, 'session1' und 'session2', ein. Jedes 'signon' initiiert einen entfernten SAS-Prozess, der die parallele oder verteilte Ausführung von Code ermöglicht. Die Option 'sascmd' gibt den Befehl an, der zur Initialisierung des entfernten SAS-Prozesses ausgeführt werden soll.
Kopiert!
1signon session1 sascmd="!sascmd -nosyntaxcheck -noterminal";
2signon session2 sascmd="!sascmd -nosyntaxcheck -noterminal";
3 
2 Codeblock
DATA STEP Data
Erklärung :
Dieser Block übermittelt Code asynchron (WAIT=NO) an 'session1'. Er konfiguriert die CAS-Optionen für die entfernte Sitzung, stellt eine Verbindung zum angegebenen CAS-Controller mit einem erweiterten Timeout her, stellt alle Caslibs zur Verfügung und verwendet dann einen DATA STEP, um die Tabelle 'cars' aus SASHELP in eine neue CAS-Tabelle namens 'cars' in der Caslib 'casuser' zu laden. Diese Tabelle dient als Quelle für die CAS-Analysen.
Kopiert!
1rsubmit session1 wait=no;
2options casdatalimit=10G;
3options compress=yes;
4 
5cas host="19w47mpp-2.gtp-americas.sashq-d.openstack.sas.com"
6 port=5570
7 sessopts=(TIMEOUT=99,DQLOCALE=ENUSA);
8 
9caslib _all_ assign;
10 
11DATA casuser.cars;
12 SET sashelp.cars;
13RUN;
3 Codeblock
PROC CAS Data
Erklärung :
In 'session1' führt dieser Block eine 'simple.regression'-Aktion über PROC CAS aus. Er spezifiziert 'mpg_highway' als Zielvariable und 'weight' als Eingabevariable, mit einem Signifikanzniveau Alpha von 0.05 und einer polynomialen Ordnung von 3. Die Regressionsergebnisse werden in einer CAS-Tabelle 'reg1' gespeichert, und spezifische Variablen dieser Ergebnisse werden für die spätere Analyse über die Aktion 'table.fetch' abgerufen.
Kopiert!
1PROC CAS;
2SESSION casauto;
3SIMPLE.regression RESULT=reg STATUS=rc /
4 alpha=0.05,
5 order=3,
6 target="mpg_highway",
7 inputs={"weight"},
8 TABLE={caslib="casuser", name="cars"};
9RUN;
10 IF (rc.severity == 0) THEN DO;
11 saveresult reg casout="reg1";
12 
13 TABLE.fetch /
14 fetchvars={
15 {name="response", label="Response"},
16 {name="regressor", label="Regressor"},
17 "intercept", "linear", "quadratic",
18 "ymean", "Ystd", "xmean" , "Xstd"},
19 TABLE="reg1",
20 index=false;
21 END;
22RUN;
23QUIT;
24endrsubmit;
4 Codeblock
DATA STEP Data
Erklärung :
Dieser Block, asynchron an 'session2' übermittelt, ähnelt dem entsprechenden Block in 'session1'. Er konfiguriert die CAS-Optionen, stellt eine Verbindung zum selben CAS-Controller her, stellt die Caslibs zur Verfügung und lädt die Tabelle 'cars' aus SASHELP in eine CAS-Tabelle 'casuser.cars'. Dies ermöglicht es 'session2', unabhängig und parallel für eigene CAS-Analysen zu arbeiten.
Kopiert!
1rsubmit session2 wait=no;
2options casdatalimit=10G;
3options compress=yes;
4 
5cas host="19w47mpp-2.gtp-americas.sashq-d.openstack.sas.com"
6 port=5570
7 sessopts=(TIMEOUT=99,DQLOCALE=ENUSA);
8 
9caslib _all_ assign;
10 
11DATA casuser.cars;
12 SET sashelp.cars;
13RUN;
5 Codeblock
PROC CAS Data
Erklärung :
In 'session2' führt dieser Block ebenfalls eine 'simple.regression'-Aktion über PROC CAS auf 'casuser.cars' aus, jedoch mit unterschiedlichen Parametern: einem Alpha-Niveau von 0.15 und einer polynomialen Ordnung von 2. Die Ergebnisse werden in einer CAS-Tabelle 'reg2' gespeichert, und dieselben Schlüsselvariablen werden wie in 'session1' abgerufen, um einen Vergleich oder eine Analyse der verschiedenen Regressionsmodelle zu ermöglichen.
Kopiert!
1PROC CAS;
2SESSION casauto;
3SIMPLE.regression RESULT=reg2 STATUS=rc /
4 alpha=0.15,
5 order=2,
6 target="mpg_highway",
7 inputs={"weight"},
8 TABLE={caslib="casuser", name="cars"};
9RUN;
10 IF (rc.severity == 0) THEN DO;
11 saveresult reg2 casout="reg2";
12 
13 TABLE.fetch /
14 fetchvars={
15 {name="response", label="Response"},
16 {name="regressor", label="Regressor"},
17 "intercept", "linear", "quadratic",
18 "ymean", "Ystd", "xmean" , "Xstd"},
19 TABLE="reg2",
20 index=false;
21 END;
22 
23RUN;
24QUIT;
25 
26endrsubmit;
6 Codeblock
SAS/CONNECT
Erklärung :
Dieser letzte Block verwaltet die Synchronisation und das Schließen der SAS/CONNECT-Sitzungen. Die Anweisung 'waitfor _all_ session1 session2;' blockiert die Ausführung des Hauptprogramms, bis beide entfernten Sitzungen ihre Aufgaben abgeschlossen haben. 'rget' wird dann verwendet, um die Protokolle und Ergebnisse (falls vorhanden) jeder Sitzung abzurufen. Schließlich trennt 'signoff' die Verbindung und beendet die SAS/CONNECT-Sitzungen ordnungsgemäß.
Kopiert!
1waitfor _all_ session1 session2;
2 
3rget session1;
4 
5rget session2;
6 
7signoff session1;
8signoff session2;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : Copyright © 2021, SAS Institute Inc., Cary, NC, USA. All Rights Reserved. SPDX-License-Identifier: Apache-2.0