用于 .NET 的 Azure Batch 库

Azure Batch 是一项平台服务,适用于在云中有效运行大规模并行和高性能计算 (HPC) 应用程序。 Azure Batch 可计划要在托管的虚拟机集合上运行的计算密集型工作,并且可以缩放计算资源以符合作业的需求。

使用 Azure Batch 时,可轻松定义用于大规模并行执行应用程序的 Azure 计算资源。 无需手动创建、配置和管理 HPC 群集、各个虚拟机、虚拟网络或复杂的作业和任务计划基础结构。 Azure Batch 自动执行或简化这些任务。

详细了解如何使用 Batch 运行固有并行的工作负荷。 此外,还可以详细如何使用用于 .NET 的 Batch 客户端库开始构建解决方案。 了解如何使用用于 .NET 的 Batch 管理库来管理 Batch 帐户和配额

客户端库

在 Batch 中使用客户端库运行并行工作负荷。

直接从 Visual Studio 包管理器控制台或使用 .NET Core CLI 安装 NuGet 包

Visual Studio 包管理器

Install-Package Azure.Batch

.NET Core CLI

dotnet add package Azure.Batch

示例

以下示例使用客户端 SDK 创建在 Azure Batch 中运行的作业。

/*
using Microsoft.Azure.Batch.Auth;
using Microsoft.Azure.Batch;
*/
BatchSharedKeyCredentials credentials = new BatchSharedKeyCredentials(batchUrl, accountName, accountKey);
using (BatchClient batchClient = await BatchClient.OpenAsync(credentials))
{
    //set up pool specification and information along with resource files here
    JobManagerTask jobManagerTask = new JobManagerTask()
    {
        ResourceFiles = jobManagerResourceFiles,
        CommandLine = Constants.JobManagerExecutable,

        //Determines if the job should terminate when the job manager process exits.
        KillJobOnCompletion = true,
        Id = jobManagerTaskId
    };

    string jobId = Environment.GetEnvironmentVariable("USERNAME") + DateTime.UtcNow.ToString("yyyyMMdd-HHmmss");

    CloudJob unboundJob = batchClient.JobOperations.CreateJob(jobId, poolInformation);
    unboundJob.JobManagerTask = jobManagerTask;

    // now interact with the job ...
}

管理库

使用管理库可通过编程方式管理 Batch 帐户、配额和应用程序包。

直接从 Visual Studio 包管理器控制台或使用 .NET Core CLI 安装 NuGet 包

Visual Studio 包管理器

Install-Package Microsoft.Azure.Management.Batch

.NET Core CLI

dotnet add package Microsoft.Azure.Management.Batch

示例

以下示例检索订阅的配额、创建帐户,并重新生成主帐户密钥。

/*
using Microsoft.Azure.Management.Batch;
using Microsoft.Azure.Management.Batch.Models;
using Microsoft.Rest;
*/
using (BatchManagementClient batchManagementClient = new BatchManagementClient(new TokenCredentials(accessToken)))
{
    batchManagementClient.SubscriptionId = subscriptionId;

    // Get the account quota for the subscription
    BatchLocationQuota quotaResponse = await batchManagementClient.Location.GetQuotasAsync(location);
    Console.WriteLine("Your subscription can create {0} account(s) in the {1} region.", quotaResponse.AccountQuota, location);

    // Create account
    await batchManagementClient.BatchAccount.CreateAsync(ResourceGroupName, accountName, 
        new BatchAccountCreateParameters() { Location = location });

    // Regenerate primary account key
    BatchAccountKeys newKeys = await batchManagementClient.BatchAccount.RegenerateKeyAsync(
        ResourceGroupName, account.Name, AccountKeyType.Primary);
}

示例

详细了解可在应用中使用的示例 .NET 代码