0

我有一个 .NET 应用程序,它将生成要在 MS HPC 集群上运行的任务。我们没有使用任何花哨的 DryadLINQ 东西,只是在集群上远程执行一个 exe 并通过命令行传递参数。该任务将是 .NET 代码,我希望调用应用程序在 HPC 发生错误时获取实际的异常对象。

完成此任务的最佳通用技术是什么?

如果您需要更多信息,请告诉我。

谢谢!

4

1 回答 1

1

使用批处理调度程序时,您无法将异常从可执行文件传递回客户端 HPC 应用程序。如果知道您排队的任务或作业之一失败就足够了,那么您可以保留一个 SchedulerJob 对象并向 OnJobState 或 OnTaskState 事件添加回调。每当您的工作(或该工作中的任务)更改状态时,您将在回调中获得 jobid/taskid 和状态更改信息;然后您可以检查状态是否更改为“失败”并根据该信息采取行动。

要将任务或作业标记为“失败”,请使用非零退出代码退出可执行文件。如果您需要有关实际异常的详细信息,最好将其打印到标准输出。

如果您确实需要所有异常详细信息,另一种方法可能是使用 SOA 框架进行计算。优点是:

  • 您的计算请求看起来像 WCF 方法调用

  • 当你的代码抛出时,你会得到详细的异常

  • 您可以使用 Visual Studio 的 SOA 调试器扩展来调试您的代码

缺点是:

  • 从现有代码库开始编写和部署应用程序更加复杂。

以下是一些帮助您入门的资源(搜索“Windows HPC SOA”应该会让您获得更多信息):

MSDN SOA 文档

于 2010-09-20T17:44:00.140 回答