我在SAS 9.1.3(在服务器上),并且具有一个宏循环一个数组喂计算密集型的集合,其被附加出到建模步骤一张桌子。我想知道是否可以为阵列的每个元素设置最大运行时间。这样,任何运行时间超过3分钟的元素都将被跳过,并且下一个项目被输入。使在SAS的宏超时甲步骤设定的间隔后
例如,我使用proc nlin和by语句为每个类构建单独的模型数据集和一个类未能收敛;我怎么跳过那个班?
位小众的要求,希望有人能够协助!
我在SAS 9.1.3(在服务器上),并且具有一个宏循环一个数组喂计算密集型的集合,其被附加出到建模步骤一张桌子。我想知道是否可以为阵列的每个元素设置最大运行时间。这样,任何运行时间超过3分钟的元素都将被跳过,并且下一个项目被输入。使在SAS的宏超时甲步骤设定的间隔后
例如,我使用proc nlin和by语句为每个类构建单独的模型数据集和一个类未能收敛;我怎么跳过那个班?
位小众的要求,希望有人能够协助!
我能想到的这里唯一的办法是使之按组分别从静止运行的每个,在一个或多个SAS/CONNECT会话重写代码,有家长会杀死对方一个集超时后,然后重新组合幸存的输出。
以DOM和乔指出,这不是一个简单的任务,但如果你足够热衷于学习SAS的这一方面有可能。一个好地方,开始为这样的事情会是这个页面:
http://support.sas.com/rnd/scalability/tricks/connect.html
我能够使用的例子有和其他地方作为一个简单的并行处理框架的基础(在SAS 9.1.3 ,巧合!),但有很多细节需要考虑。为了让您的各种商店冒险的想法,如果你走这条路线:
call execute
来滚动我自己的...)人们可以在这个主题上写一篇(冗长的)SUGI论文,我相信如果你环顾四周,那里会有很多这样的论文。
通常,SAS以线性方式运行。所以你不能编写一个步骤来监视同一个程序中的另一个步骤。你可以做的是在SAS/CONNECT会话中运行你的代码,并用启动会话的进程监视它。这不是微不足道的,以及如何超出Stack Overflow的范围。
对于数据的步骤,使用datetime()
函数来获取当前系统日期和时间。这是以秒为单位测量的。您可以检查数据步骤中的时间。用stop;
声明停止数据步骤。
现在您特意询问了关于打破PROC内的特定步骤的问题。这必须由SAS开发人员在PROC中实施。如果可能的话,它将记录在程序的文件中。在http://support.sas.com/documentation/处查看SAS文档。
对于PROC NLIN,我不认为这是一个“破X后”参数。您可以使用跟踪参数来跟踪模型执行以查看挂起的内容。然后,您可以尝试改变收敛参数,以尝试加速缓慢且收敛严重的模型。
这是一个很好的答案,尽管它可能超出了我的能力。感谢所有相同的帮助! – analystic 2014-10-30 23:14:47