我有一个.NET应用程序,它将产生在MS HPC群集上运行的任务。我们没有使用任何花哨的DryadLINQ东西,只是远程执行集群上的exe并通过命令行传递参数。任务将是.NET代码,我希望调用应用程序在HPC上发生错误时获取实际的Exception对象。
实现这一目标的最佳通用技术是什么?
如果您需要更多信息,请与我们联系。
谢谢!
答案 0 :(得分:1)
当您使用批处理调度程序时,无法将异常从可执行文件传递回客户端HPC应用程序。如果知道您排队的任务或作业之一失败,那么您可以保留SchedulerJob对象并向OnJobState或OnTaskState事件添加回调。每当您的工作(或该工作中的任务)改变状态时,您将获得jobid / taskid并在回调中声明更改信息;然后你可以检查状态是否变为“失败”并对该信息采取行动。
要将任务或作业标记为“失败”,请使用非零退出代码退出可执行文件。如果您需要有关实际异常的详细信息,您可以做的最好的事情是将其打印到stdout。
如果您确实需要所有异常详细信息,则可以选择使用SOA框架进行计算。 优点是:
您的计算请求看起来像WCF 方法调用
你会得到详细的例外情况 你的代码抛出
您可以使用SOA调试器 扩展到Visual Studio进行调试 你的代码
缺点是:
以下是一些可以帮助您入门的资源(搜索“Windows HPC SOA”可以为您提供更多信息):