2014-10-28 128 views
2

我在SAS 9.1.3(在服务器上),并且具有一个宏循环一个数组喂计算密集型的集合,其被附加出到建模步骤一张桌子。我想知道是否可以为阵列的每个元素设置最大运行时间。这样,任何运行时间超过3分钟的元素都将被跳过,并且下一个项目被输入。使在SAS的宏超时甲步骤设定的间隔后

例如,我使用proc nlin和by语句为每个类构建单独的模型数据集和一个类未能收敛;我怎么跳过那个班?

位小众的要求,希望有人能够协助!

回答

2

我能想到的这里唯一的办法是使之按组分别从静止运行的每个,在一个或多个SAS/CONNECT会话重写代码,有家长会杀死对方一个集超时后,然后重新组合幸存的输出。

以DOM和乔指出,这不是一个简单的任务,但如果你足够热衷于学习SAS的这一方面有可能。一个好地方,开始为这样的事情会是这个页面:

http://support.sas.com/rnd/scalability/tricks/connect.html

我能够使用的例子有和其他地方作为一个简单的并行处理框架的基础(在SAS 9.1.3 ,巧合!),但有很多细节需要考虑。为了让您的各种商店冒险的想法,如果你走这条路线:

  • 学习如何你使用(将常用的自动执行文件中的任何基础设施,以登录到通过SAS/CONNECT服务器工作吗?你需要什么调用选项使用?)
  • 解释给你的系统管理员/为什么你需要并行
  • 管理异步会议
  • 进行同步之间的宏变量,宏定义,图书馆和格式运行多个进程同事会议
  • 模糊不清gs(我无法使用通常的选项来同步库,必须通过call execute来滚动我自己的...)

人们可以在这个主题上写一篇(冗长的)SUGI论文,我相信如果你环顾四周,那里会有很多这样的论文。

+0

这是一个很好的答案,尽管它可能超出了我的能力。感谢所有相同的帮助! – analystic 2014-10-30 23:14:47

2

通常,SAS以线性方式运行。所以你不能编写一个步骤来监视同一个程序中的另一个步骤。你可以做的是在SAS/CONNECT会话中运行你的代码,并用启动会话的进程监视它。这不是微不足道的,以及如何超出Stack Overflow的范围。

对于数据的步骤,使用datetime()函数来获取当前系统日期和时间。这是以秒为单位测量的。您可以检查数据步骤中的时间。用stop;声明停止数据步骤。

现在您特意询问了关于打破PROC内的特定步骤的问题。这必须由SAS开发人员在PROC中实施。如果可能的话,它将记录在程序的文件中。在http://support.sas.com/documentation/处查看SAS文档。

对于PROC NLIN,我不认为这是一个“破X后”参数。您可以使用跟踪参数来跟踪模型执行以查看挂起的内容。然后,您可以尝试改变收敛参数,以尝试加速缓慢且收敛严重的模型。

+0

您也可以使用SAS以外的程序来监视进程监视器并杀死SAS进程,虽然这可能是过度的。也在本网站的范围之外。 – Joe 2014-10-28 14:24:38

+0

我跟踪参数存在的问题是没有任何东西被proc步骤返回。这一步骤持续了很长时间,我必须杀死sas进程。 – analystic 2014-10-28 23:02:20

+0

尝试缩小问题的范围,找出问题所在。如果你可以说,这些数据运行和这些数据不会,然后搞清楚为什么不应该太难。如果您认为这是一个SAS错误,那么请提交一张票到SAS TS。 – DomPazz 2014-10-29 02:54:58

相关问题