运行 一个并行的 Sas 宏

Run a Sas macro in parallel

所以我有一个类似这样的宏,用objective计算信息值:

%macro iv_calc(x,event,varlist);
data main_table;
set x(keep=event varlist.);
run;

/****Steps to compute IV ****/
%mend;

X 是数据集的名称,event 是因变量名称,varlist 是宏变量格式中所有自变量的名称。 varlist 中的变量数量未知,可能在 100 到 2000+ 之间变化。因此,宏需要很长时间才能 运行。我是新手,所以我的要求是了解是否有办法将 varlist 拆分为 2,并且 运行 并行使用相同的宏(因为需要事件来计算信息值), 以减少 运行 时间。我的第一个想法是求助于 shell 脚本,但是变量的数量是未知的,这就是问题所在。任何微小的帮助将不胜感激。非常感谢。

在 SAS 中管理并行执行相当不方便,涉及 SAS MP Connect / SAS Gridsignon/rsubmit)。

shell中的并行执行是,例如:

echo "param1 param2 param3" | tr ' ' '\n' | xargs -i{} -P 2 ./run-sas.sh {}

-P 2 指定并行进程数。我在 .

中介绍了将参数传递给子 SAS 会话