BookmarkSubscribeRSS Feed
FatCaptain
Fluorite | Level 6
Hi,

I'm looking at introducing parallel processing into several of the programs I run in order to reduce their run time.

I've used the example code from the SAS/CONNECT Parallel Processing to use as a template and have cut it back to it's most basic form;


options sascmd="sas";

signon task1;

rsubmit task1 wait=no ;
data cust2 ;
set cust (obs=10000) ;
run ;
endrsubmit;

signon task2;

rsubmit task2 wait=no ;
data accs2 ;
set accs (obs=10000) ;
run ;
endrsubmit;

waitfor _all_ task1 task2 ;

signoff task1;
signoff task2;



When run, the code writes the following series of errors to the log;
[log]
204 options sascmd="sas";
205
206 signon task1;
NOTE: Remote signon to TASK1 commencing (SAS Release 9.01.01M3P020206).
ERROR: A communication subsystem partner link setup request failure has occurred.
ERROR: Cannot locate TCP host 'TASK1'.
ERROR: Remote signon to TASK1 cancelled.
207
208 rsubmit task1 wait=no ;
NOTE: Remote signon to TASK1 commencing (SAS Release 9.01.01M3P020206).
ERROR: A communication subsystem partner link setup request failure has occurred.
ERROR: Cannot locate TCP host 'TASK1'.
ERROR: Remote submit to TASK1 cancelled.
209
210 signon task2;
NOTE: Remote signon to TASK2 commencing (SAS Release 9.01.01M3P020206).
ERROR: A communication subsystem partner link setup request failure has occurred.
ERROR: Cannot locate TCP host 'TASK2'.
ERROR: Remote signon to TASK2 cancelled.
211
212 rsubmit task2 wait=no ;
NOTE: Remote signon to TASK2 commencing (SAS Release 9.01.01M3P020206).
ERROR: A communication subsystem partner link setup request failure has occurred.
ERROR: Cannot locate TCP host 'TASK2'.
ERROR: Remote submit to TASK2 cancelled.
NOTE: The task "task1" is not an active task.
NOTE: The task "task2" is not an active task.
213
214 waitfor _all_ task1 task2 ;
215
216 signoff task1;
NOTE: A link to TASK1 does not exist. SIGNOFF is not necessary.
217 signoff task2;
NOTE: A link to TASK2 does not exist. SIGNOFF is not necessary.
[/log]


Could someone point me in the direction of what I am doing wrong? Could it be something to do with a setting in the sas autoexec or config file?

Any help would be appreciated.

Regards,

Fat Captain.
6 REPLIES 6
SASKiwi
PROC Star
You need to define what SAS server TASK1 and TASK2 should signon to.

You can assign a URL via a macro variable like so:

%let task1 = mysasserver.com;

or you can use an IP address like:

%let task1 = 99.99.99.99;

Test just signing on for starters. If that is not working nothing else will.
FatCaptain
Fluorite | Level 6
Thanks for this SASKiwi.

I managed to get the tasks to log on, run asynchronously and log off.

I don't know where the output data sets were written to but I think I'll be able to work the rest out by looking at how the signon process refers to our server in the autoexec.

Thanks again for your help.
Patrick
Opal | Level 21
Hi

Code in rsubmit blocks runs in its own SAS environment.

The output data set in your code (rsubmit block) were written to the work area of the child processes - and the work area of these child processes has been removed after the rsubmit blocks ended.

HTH
Patrick Message was edited by: Patrick
FatCaptain
Fluorite | Level 6

Thanks for confirming this Patrick.

I suspected that this might be the case as the SUGI Paper 124-29, page 3 section D (www2.sas.com/proceedings/sugi29/124-29.pdf) suggests creating a macro variable with the physical path of the child process and using this to assign a libref in the parent session. This would allow me to access the data in the work directories of the child processes before the signoff is executed and the session output lost.

I think the thing that's confusing me at the moment are the following few lines in my autoexec as it means any session I start isn't 'clean';

   

1 %let mserv=coserv66 7551;

2 %let servname=coserv66;

3 options remote=mserv;

4 signon mserv user=****** password="******";

5 rsubmit;

6 options no$syntaxcheck;

 

As I've never delved too deeply into this, I have always believed that if I ran the following;

that it would submit the code to the server named mserv rather than a task named mserv running on the server it was assigned to.

As SASKiwi pointed out in his reply, I had to assign a server to the tasks before I could tell them to signon. (this is something I've not had to do before as it was handled in the autoexec).

I've also had to specify a user and password when using the signon.

Are you aware of any papers which introduce the concepts of rsubmit, signon or task handling?

All the results I've found on Google or SAS.com are a little too technical and I think I need to start with the basics first.

 

Thanks in advance for any guidance you can give.

 

Cheers,

 

Fat Captain.

adc0016
Calcite | Level 5

signon task1 sascmd="sas";  *will fix your problem if this is PC SAS; *Remove the global options statement with sascmd="sas";

Peter_C
Rhodochrosite | Level 12

there is an option for signon or rsubmit statements    INHERITLIB

It would make writing direct to a client library straightforward from the server sessions.

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 6 replies
  • 6200 views
  • 2 likes
  • 5 in conversation