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