SAS中的并行处理

时间:2018-12-07 20:03:30

标签: multithreading parallel-processing sas sas-macro proc-sql

明智的StackOverflow用户。我对SAS 9.4中的并行处理有疑问:

我知道SAS通常以顺序或线性方式执行过程,但是,我也知道SAS也能够并行执行过程。我的问题是:如何设置?我检查了几个博客,但没有取得任何成功。我的代码的总体布局是这样的:

MACRO VARIABLES;
%syslput _all_;
RSubmit;
Data step to slightly modify variables;
Run;
EndRSubmit;

PROC SQL 1;
Connect to server statement;
SQL code;
QUIT;
...
PROC SQL n;
Connect to server statement;
SQL code;
QUIT;

理想情况下,我希望并行执行8条PROC SQL代码,而不是线性执行。任何帮助或建议,将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:0)

不是很线程化,但是如果您能够使用RSUBMIT,则可以选择发送代码的位置,然后再次控制计算机。您仍然必须等待输出,但它不会启动或按住计算机。

RSUBMIT CONNECTWAIT=NO;

不确定在RSUBMIT之后是否需要斜杠,但是文档中没有任何显示。

https://documentation.sas.com/?docsetId=connref&docsetTarget=p1eyablk3vvdlkn1h5euyczvt585.htm&docsetVersion=9.4&locale=en

答案 1 :(得分:0)

如果您的代码片段是独立的,您可以提交它们并在单独的 SAS 会话中并行运行。即使这些会话被称为“远程”,您甚至可以在一台机器上运行它们。以下是一个“远程”会话的示例:

/* Prosess 1 */
signon task1;
rsubmit task1 wait=no;

   PROC SQL n;
   Connect to server statement;
   SQL code;
   QUIT;

endrsubmit;

您可以有多个这样的 RSUBMIT/ENDRSUBMIT 会话。

最后你需要使用

同步你的结果
waitfor _all_;
signoff _all_;

您可以在 Running SAS programs in parallel using SAS/CONNECT® 博文中找到此方法的详细说明。