<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>The Microsoft HPC &amp; Batch Team Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/windowshpc/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/windowshpc/feed.xml</link>
    <description>The blog for the Big Compute team in Microsoft Azure, working on HPC &amp;amp; Batch services and technologies</description>
    <lastBuildDate>Wed, 04 Apr 2018 23:32:09 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Azure Batch - VNET and Custom Image Support for Virtual Machine Pools</title>
      <link>https://docs.microsoft.com/archive/blogs/windowshpc/azure-batch-vnet-and-custom-image-support-for-virtual-machine-pools</link>
      <pubDate>Fri, 17 Mar 2017 15:28:49 GMT</pubDate>
      <dc:creator><![CDATA[Mark Scurrell - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/windowshpc/?p=4245</guid>
      <description><![CDATA[Overview

This blog post is out-of-date as it is now possible to use custom images and VNETs using...]]></description>
      <content:encoded><![CDATA[<h1 style="text-align: left">Overview</h1>
<blockquote>
<p style="text-align: center"><strong>This blog post is out-of-date as it is now possible to use custom images and VNETs using a regular 'Batch service' Batch account; a 'user subscription' Batch account is no longer required.  There is documentation available for how to use <a href="https://docs.microsoft.com/azure/batch/batch-custom-images">custom images</a> and <a href="https://docs.microsoft.com/azure/batch/batch-virtual-network">VNETs</a>.</strong></p>
</blockquote>
Two of the most frequently requested capabilities for Azure Batch are now available – the ability for the VMs in a VirtualMachine pool to be created from a custom image and the ability for the pool VMs to be part of a virtual network (VNET).

Copying and installing software, copying data, and configuring the OS when a standard VM image is used can be very time consuming, lengthening the time until the VM is ready to perform work. A custom image avoids the data copy and installation overhead – custom images are produced with everything installed and configured.  Custom images can be produced and used to create both Windows and Linux pool VMs.

Another common requirement is for pool VMs to be able to securely communicate with a license server or file server - other VMs that are part of a virtual network. The ability to associate Cloud Service pool VMs with a VNET has been available for a while, but now VirtualMachine pool VMs can now also be associated with a VNET.

To use these two new features, a new Batch account needs to be created with a specific configuration using two new account properties – pool allocation mode and key vault reference. To date, when pools have been created, the actual VMs are provisioned in system Batch service subscriptions. Now, when the new pool allocation mode property is set to “User Subscription”, pool allocation behaior changes as follows:
<ul>
 	<li>Azure Batch will create virtual machine pool VMs directly in the subscription associated with the Batch account; one or more Virtual Machine Scale Set’s (VMSSs) and associated storage accounts will be created and visible in the Azure portal, PowerShell, etc.</li>
 	<li>Virtual machine core quotas will be applied, not the Batch core quota.</li>
 	<li>The Batch client API must use Azure Active Directory authentication, which is now supported in addition to the existing account name and key authentication. Azure Batch support for Azure Active Directory is documented <a href="https://docs.microsoft.com/azure/batch/batch-aad-auth">here</a>.</li>
 	<li>It will not be possible to create Cloud Service pools.</li>
</ul>
When a Batch account has the pool allocation mode property set to “Batch Service”, the default, then pool allocation is unchanged – Cloud Services or VMSSs are created in internal Batch subscription and hidden; it is not possible to use VNETs with virtual machine pools or use custom images.
<h1>Creating “User Subscription” Batch Accounts</h1>
<h2>Subscription Access Control</h2>
The Azure Batch Service Principal must be given access to the subscription to allow Azure Batch to create resources in the subscription.

In the portal:
<ul>
 	<li>Select "Subscriptions" from the left-hand menu, then select the subscription which you will use to create the "User Subscription"Batch account.</li>
 	<li>Select the "Access Control (IAM)" menu item for the subscription.</li>
 	<li>Select the "Add" button, select "Contributor" for the role, select either "MicrosoftAzureBatch" or "Microsoft Azure Batch" as the member, then Save the change.</li>
</ul>
[caption id="attachment_4265" align="aligncenter" width="699"]<a href="https://msdnshared.blob.core.windows.net/media/2017/03/byos-subscription.png"><img width="699" height="228" class="wp-image-4265" alt="Update Subscription for Azure Batch Account" src="https://msdnshared.blob.core.windows.net/media/2017/03/byos-subscription-1024x334.png" /></a> Update Subscription for Azure Batch Account[/caption]
<h2>Create a Key Vault</h2>
A Key Vault is required that belongs to the same resource group as the new Batch account to be created.

If you have an existing Key Vault, then note the resource group and ensure it is in the same region as the new Batch account.  If you are creating a new Key Vault, then it is recommended you create it first, ahead of creating the Batch account:
<ul>
 	<li>Select "Key vaults" from the main portal menu, then select "Add".</li>
 	<li>Enter a name.</li>
 	<li>Pick an existing resource group or create a new one; note down the resource group.</li>
 	<li>Ensure you pick the same Location and the new Batch account.</li>
 	<li>Leave all other properties at their default values.</li>
</ul>
<h2>Create the “User Subscription” Batch Account</h2>
To enable pool resource allocations in your subscription, the pool allocation mode and key vault properties must be set in the “New Batch account” blade.

For the Key Vault:
<ul>
 	<li>If creating a new Key Vault, then set the Resource Group to be the same as you will use for the Batch account.</li>
 	<li>Keep all other properties as default; they will be configured as part of the "New Batch account" process.</li>
</ul>
[caption id="attachment_4275" align="alignnone" width="310"]<a href="https://msdnshared.blob.core.windows.net/media/2017/03/byos-new-user-sub-batch-account.png"><img width="310" height="707" class="size-full wp-image-4275" alt="User Subscription Batch Account" src="https://msdnshared.blob.core.windows.net/media/2017/03/byos-new-user-sub-batch-account.png" /></a> User Subscription Batch Account[/caption]

If the subscription access control has not been configured correctly, then an error will be displayed on create batch account blade and the account cannot be created.

&nbsp;
<h1>API Authentication for "User Subscription" Batch Accounts</h1>
The Batch client API must use Azure Active Directory authentication, which is now supported in addition to the existing account name and key authentication. Azure Batch support for Azure Active Directory is documented <a href="https://docs.microsoft.com/azure/batch/batch-aad-auth">here</a>.

&nbsp;
<h1>Creating Batch Pools using the "User Subscription" Batch Account</h1>
When a Batch pool is created in the 'User Subscription' account, a number of resources are created and will be visible in the portal - resource groups containing virtual machine scale sets, storage accounts, load balancers, network security groups, public IP addresses, and virtual networks.
<h2>Quotas</h2>
As VMs and other resources, such as storage accounts, are created directly in your subscription when a pool is created, then the Azure Batch core quota is not used and the compute core quota, plus other subscription resource quotas are applied.

All quota values for a subscription can be viewed in the Azure Portal – select Subscriptions, select the subscription you will use for the Batch account, select the ‘Usage + quotas’ item in the ‘Settings’ section.

For every 40 Linux VMs and 20 Windows VMs in a Batch pool, the following resources are required:
<ul>
 	<li>One storage account (Quota = “Storage Accounts”, Provider = “Microsoft.Storage”)</li>
 	<li>One public IP (Quota = “Public IP Addresses”, Provider = “Microsoft.Network”)</li>
 	<li>One virtual network (Quota = “Virtual Networks”, Provider = “Microsoft.Network”)</li>
 	<li>One network security group (Quota = “Network Security Groups”, Provider = “Microsoft.Network”)</li>
 	<li>One virtual machine scale set (Quota = “Virtual Machine Scale Sets”, Provider = “Microsoft.Compute”)</li>
 	<li>One load balancer (Quota = “Load Balancers”, Provider = “Microsoft.Network”)</li>
</ul>
The core quota at a region level or per VM family should be set:
<ul>
 	<li>Quota = “Total Regional Cores”, Provider = “Microsoft.Compute”</li>
 	<li>Quota = “… Family Cores”, Provider = “Microsoft.Compute”</li>
</ul>
<h2>Pool Creation</h2>
Pool creation is slightly different for a 'User Subscription" Batch account:
<ul>
 	<li>For "Image Type", the value of "Cloud Services (Windows only)" cannot be selected; for standard images "Markeplace (Linux/Windows)" must be selected.</li>
 	<li>A new "Image Type" value of "Custom Image (Linux/Windows)" is available.</li>
</ul>
<h2>Create a Pool using a Custom Image</h2>
Only Batch accounts with the pool allocation mode set to ‘UserSubscription’ can create pools using a custom VM image. A new property called ‘osDisk’ is specified when a pool is created.

The following conditions must be met to create a pool using a custom image:
<ul>
 	<li>One unique custom image VHD blob can support up to 40 Linux VM instances or 20 Windows VM instances. You will need to create copies of the VHD blob to create pools with more VMs.  For example, a pool with 200 Windows VMs needs 10 unique VHD blobs to be supplied in the 'osDisk' property.</li>
 	<li>The storage accounts holding the custom image VHD blobs need to be in the same subscription as the Batch account.</li>
 	<li>The specified storage accounts should be in the same region as the 'User Subscription' Batch account.</li>
 	<li>Only Standard storage is currently supported; Premium storage will be supported in the future.</li>
 	<li>You can specify one storage account with multiple custom VHD blobs or multiple storage accounts each having a single blob. We recommend you to use multiple storage accounts to get a better performance.</li>
 	<li>You need to select the appropriate nodeAgentSkuId depending on the OS of the base image of your VHD. You can get mapping of available nodeAgentSkuId to the OS Image reference by performing the List supported NodeAgentSkuId request.</li>
</ul>
To create a pool using the Azure portal:
<ul>
 	<li>Open blade for a batch account, select Pools menu item, on the Pools blade select the "Add" command; the "Add pool" blade will be displayed.</li>
 	<li>Select “Custom Image (Linux/Windows)” from Image Type dropdown, the “Custom Image” picker will be displayed, open the picker and pick one or multiple VHDs from the same container and click Select button.  The support for multiple VHDs from different storage accounts and different containers will be added soon.</li>
 	<li>Pick the correct Publisher/Offer/Sku for your custom VHDs and select the desired Caching mode, then fill all the other parameters for the pool.</li>
 	<li>To check if a pool is based on custom image see the "Operating System" property in resource summary section of Pool details blade - it should have a value of "Custom VM image".</li>
 	<li>All the custom VHDs associated with a pool are displayed on the pool properties blade.</li>
</ul>
&nbsp;
<ul></ul>
<h1>Include Pool VMs in a Virtual Network</h1>
The following conditions must be met to deploy a pool in a virtual network:
<ul>
 	<li>The specified virtual network (VNET) must be in the same Azure region as the ‘User Subscription’ Batch Account.</li>
 	<li>The specified VNET must be in the same subscription as the ‘User Subscription’ Batch Account.</li>
 	<li>The specified VNET must be an Azure Resource Manager (ARM) based VNet.  Classic VNets created via Azure Service Management are not supported.</li>
 	<li>The specified subnet should have enough free IP addresses to accommodate the number of VMs that will be in the pool. If the subnet doesn't have enough free IP addresses, the pool will partially allocate compute nodes, and a resize error will occur.</li>
 	<li>The specified subnet must allow communication from the Azure Batch service to be able to schedule tasks on the compute nodes. This can be verified by checking if the specified VNET has any associated Network Security Groups (NSG). If communication to the compute nodes in the specified subnet is denied by an NSG, then the Batch service will set the state of the compute nodes to unusable.</li>
 	<li>If the specified VNET has any associated Network Security Groups (NSG) then inbound communication must be enabled; ports 29876, 29877, and 22 for a Linux pool; 3389 for a Windows pool.</li>
</ul>
The specification of a VNET is not currently supported by the Azure Portal; the API must be used to create a pool associated with a VNET. The pool is associated with the VNET by specifying the resourceId for the VNETs subnet in the 'networkConfiguration' section of the request to create the pool.

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Microsoft HPC Pack 2016 is now available in Azure</title>
      <link>https://docs.microsoft.com/archive/blogs/windowshpc/microsoft-hpc-pack-2016-is-now-available-in-azure</link>
      <pubDate>Wed, 16 Nov 2016 23:44:46 GMT</pubDate>
      <dc:creator><![CDATA[Guang HU - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/windowshpc/?p=4215</guid>
      <description><![CDATA[We are excited to announce today the availability of the Microsoft HPC Pack 2016 in Microsoft...]]></description>
      <content:encoded><![CDATA[<span style="color: #000000;font-family: Calibri">We are excited to announce today the availability of the Microsoft HPC Pack 2016 in Microsoft Azure.</span>

<span style="color: #000000;font-family: Calibri">With this major release, we mark a new milestone in our cloud journey and in our vision to make HPC Pack solutions more reliable and effective for a broad set of users in Azure. Here are some major new features we released in this Azure version: </span>
<ul>
 	<li><strong>High Availability HPC Cluster in Azure</strong> – Enterprise customers of HPC Pack cluster take the HA of workloads running in cluster with very high priority. Starting from HPC Pack 2016, users can easily deploy a new HPC cluster with or without HA with Azure ARM templates. The multiple active HNs will not just make SLA for customer but also provide load balance to the services across the cluster. For more details, please go to <a href="https://go.microsoft.com/fwlink/?linkid=835702">this page</a> for guidance.</li>
 	<li><strong>Use AAD to manage HPC Pack cluster in Azure</strong> – with the AAD integration with HPC Pack 2016, customers can now directly leverage the AAD authentication to manage the cluster and job schedule. This also gives customers the potential to connect the on-premises AD to AAD to make authentication across the hybrid environment much simple. Please go to <a href="https://go.microsoft.com/fwlink/?linkid=835701">this Azure content page</a> for more details.</li>
 	<li><strong>Support N-series GPU VMs in Azure</strong> – with the announcement of the N-series of GPU VMs in Azure, HPC Pack will also support to add these GPU capable VMs into the HPC Pack cluster. For how to use HPC Pack cluster to manage the GPU nodes and jobs, please go to the help doc <a href="https://blogs.technet.microsoft.com/windowshpc/2015/11/16/how-to-fully-use-gpu-resources-to-run-gpgpu-jobs-in-microsoft-hpc-pack/">here</a>.</li>
 	<li><strong>Support auto grow/shrink for ARM</strong> <strong>cluster </strong>– in HPC Pack 2016, if customers deploy the cluster with Azure ARM resources, the <strong>built-in</strong> auto grow/shrink service will be supported. It works the same way as we did in classic Azure resources. For more details, please see the helps doc <a href="https://go.microsoft.com/fwlink/?linkid=835703">here</a>.</li>
 	<li><strong>Support new Windows/SQL platforms</strong> – we are going to support the latest version of major platforms: Windows Server 2016 and SQL Server 2016.</li>
</ul>
You can now directly leverage the official sample cluster deployment <a href="https://github.com/MsHpcPack/HPCPack2016">templates</a> to provision a HPC Pack 2016 cluster in Azure. The HPC Pack image is also available in the Azure marketplace.

<strong>Note:</strong> We are still working on the HPC Pack 2016 downloadable package releasing. If you want to deploy HPC Pack 2016 manually on your system, please wait for a few weeks. I will also announce it with a new blog post here.

We are in SC16 this week in Salt Lake City. If you are also in town, please come over to have a visit of Microsoft Booth. There are several cool things to exploring out. I am looking forward to talking to you if you have any comments or ideas. And of cause, you can always get in touch with us via Windows HPC forum.]]></content:encoded>
    </item>
    <item>
      <title>Introducing MPI support for Linux on Azure Batch</title>
      <link>https://docs.microsoft.com/archive/blogs/windowshpc/introducing-mpi-support-for-linux-on-azure-batch</link>
      <pubDate>Wed, 20 Jul 2016 02:00:27 GMT</pubDate>
      <dc:creator><![CDATA[Manoj Soni - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/windowshpc/?p=4195</guid>
      <description><![CDATA[We are happy to announce the release of MPI support for Linux on Azure Batch.

We earlier released...]]></description>
      <content:encoded><![CDATA[We are happy to announce the release of MPI support for Linux on Azure Batch.

We earlier released <a href="https://azure.microsoft.com/documentation/articles/batch-mpi/">MPI support for Windows</a>, and recently introduced <a href="https://azure.microsoft.com/documentation/articles/batch-linux-nodes/">Linux support on Azure Batch</a>. We now extend Batch to enable MPI for Linux. <a href="https://blogs.technet.microsoft.com/windowshpc/2016/03/29/introducing-linux-support-on-azure-batch/">Linux Support on Azure Batch</a> is in preview currently and will be generally available soon. Additionally, we also provide password-less SSH on communication-enabled Linux pools for a specific user.

By creating a pool of A8 or A9 compute nodes, Batch MPI tasks can fully leverage the high-speed, low-latency RDMA network for those Azure VMs.

To run multi-instance (MPI) tasks, your Batch pool needs to be communication-enabled (“enableInterNodeCommunication = true”) with "maxTasksPerNode set to 1". Additionally, all nodes in the pool should have MPI installed (OpenMPI, IntelMPI or any other MPI installer). You can use a Start Task to create a pool that installs MPI on the nodes, for which we provide a step-by-step later in this blog post.

Below, we present an end-to-end example of running an OpenFOAM MPI solution on Azure Batch. In it, we use IntelMPI on CentOS-HPC. Later we also cover Ubuntu and CentOS with <a href="https://www.open-mpi.org/">OpenMPI</a> using a <a href="https://mpitutorial.com/tutorials/mpi-hello-world/">HelloWorld</a> MPI solution.

<a href="https://www.openfoam.com/">OpenFOAM</a> ("<b>Open</b> source <b>F</b>ield <b>O</b>peration <b>A</b>nd <b>M</b>anipulation", <a href="https://en.wikipedia.org/wiki/OpenFOAM">wiki</a>) is a C++ toolbox for the development of customized numerical solvers, and pre-/post-processing utilities for the solution of continuum mechanics problems, including computational fluid dynamics (CFD). It is a highly compute intensive application suitable for MPI.

&nbsp;
<h2><strong>Step-by-step: OpenFOAM MPI toolbox with CentOS-HPC on Batch using IntelMPI</strong></h2>
The <a href="https://azure.microsoft.com/en-us/marketplace/partners/openlogic/centosbased71hpc/">CentOS-HPC</a> image from the Azure <a href="https://azure.microsoft.com/en-us/marketplace/virtual-machines/all/">Virtual Machines Marketplace</a> has Intel MPI in-built. We use this image to create a Batch pool of Standard_A9 VMs. We use the Azure Batch-exposed <a href="https://azure.microsoft.com/en-us/documentation/articles/batch-api-basics/#start-task">Start Task facility</a> to prepare the pool of VMs with prerequisites. We then add a MPI task to run OpenFOAM. The multi-instance task is configured to run a coordination command on all participating nodes. The coordination command sets up and prepares a NFS share with input data required to run OpenFOAM. After running the coordination command, the Batch service runs the application command on the head (or “primary”) node. The application command executes mpirun on OpenFOAM. The primary or head node compresses the result and could upload it to Azure storage. We render/generate video using <a href="https://www.paraview.org/">Paraview</a> software.

&nbsp;
<h4><strong>Prerequisites</strong></h4>
For this example we will use the <a href="https://portal.azure.com/">Azure portal</a>, thus making it a no-code example. However, the same can be done using the REST API or client libraries as shown in the sample code at the end of this post. To try this case study yourself you will require the following as pre-requisite.
<ul>
 	<li><b>Azure account</b>: If you don't already have an Azure subscription, <a href="https://azure.microsoft.com/free/">create a free Azure account</a>.</li>
 	<li><b>Batch account</b>: Once you have an Azure subscription, <a href="https://azure.microsoft.com/en-gb/documentation/articles/batch-account-create-portal/">create an Azure Batch account</a>.</li>
 	<li><b>Storage account</b>: See <a href="https://azure.microsoft.com/en-gb/documentation/articles/storage-create-storage-account/#create-a-storage-account">Create a storage account</a> in <a href="https://azure.microsoft.com/en-gb/documentation/articles/storage-create-storage-account/">About Azure storage accounts</a>.</li>
</ul>
Also, create a blob container in your Storage account. You will upload input data to this container (explained in next section).

&nbsp;
<h4><strong>OpenFOAM input data preparation</strong></h4>
Follow the <a href="https://www.openfoam.com/code/build-guide.php">OpenFOAM Build Guide</a> to build input files for OpenFOAM<i>. </i>Two input files will be generated:<i> OpenFOAM_CentOS7_HPC.tgz </i>and<i> OpenFOAM_CentOS7_HPC_libs.tgz</i>
Follow the <a href="https://www.vespalabs.org/projects/vespa-cfd-3d-model/openfoam-motorbike-tutorial">OpenFOAM Motorbike Tutorial</a> to get a geometry file that we want to use for this case study, <i>motorBike_3M.tgz</i>
Upload these three input data files to the Storage container mentioned in the previous section.

&nbsp;
<h4><strong>Prepare the coordination command script</strong></h4>
Copy the contents of the <b><a href="https://raw.githubusercontent.com/Azure/azure-batch-samples/master/Python/Batch/article_samples/mpi/data/linux/openfoam/coordination-cmd">coordination-cmd</a></b> script to a file on your local workstation:
In this file, replace “&lt;storage-account&gt;” and “&lt;container&gt;” in with your Storage account name and the name of the container to which you uploaded the prepared input data, and uncomment the <i>wget</i> commands.
Upload the modified <b>coordination-cmd</b> to the container in your Storage account, and use its blob URL in Task.multiInstanceSettings.commonResourceFiles.blobSource in later section.

&nbsp;
<h4><strong>Create CentOS-HPC pool (and prepare nodes for OpenFOAM)</strong></h4>
Go to <a href="https://portal.azure.com/">Azure portal</a>. Select the Batch account that was created. Click Pools tile followed by Add.
<div>Use the following options:</div>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="320" valign="top">Pool.enableInterNodeCommunication</td>
<td width="770" valign="top">True</td>
</tr>
<tr>
<td width="320" valign="top">Pool.maxTasksPerNode</td>
<td width="770" valign="top">1</td>
</tr>
<tr>
<td width="320" valign="top">Pool.targetDedicated</td>
<td width="770" valign="top">3</td>
</tr>
<tr>
<td width="320" valign="top">Pool.startTask.commandLine</td>
<td width="770" valign="top">nodeprep-cmd</td>
</tr>
<tr>
<td width="320" valign="top">Pool.startTask.resourceFiles.blobSource</td>
<td width="770" valign="top"><u><a href="https://raw.githubusercontent.com/Azure/azure-batch-samples/master/Python/Batch/article_samples/mpi/data/linux/openfoam/nodeprep-cmd">https://raw.githubusercontent.com/Azure/azure-batch-samples/master/Python/Batch/article_samples/mpi/data /linux/openfoam/nodeprep-cmd</a></u></td>
</tr>
<tr>
<td width="320" valign="top">Pool.startTask.resourceFiles.filePath</td>
<td width="770" valign="top">nodeprep-cmd</td>
</tr>
<tr>
<td width="320" valign="top">Pool.startTask.runElevated</td>
<td width="770" valign="top">True</td>
</tr>
<tr>
<td width="320" valign="top">Pool.startTask.WaitForSuccess</td>
<td width="770" valign="top">True</td>
</tr>
</tbody>
</table>
&nbsp;
<h4><strong>Create a Batch job</strong></h4>
Similar to Pool above, now add a new Job.
Go to <a href="https://portal.azure.com/">Azure portal</a> –&gt; Batch account –&gt; Jobs –&gt; Add Job

&nbsp;
<h4><strong>Submit MPI task for OpenFOAM</strong></h4>
Go to <a href="https://portal.azure.com/">Azure portal</a> –&gt; Batch account –&gt; Jobs –&gt; Job –&gt; Add Task. Use the following options:
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="320" valign="top">Task.commandLine</td>
<td width="770" valign="top">application-cmd 3 16 500 $AZ_BATCH_TASK_SHARED_DIR $AZ_BATCH_HOST_LIST</td>
</tr>
<tr>
<td width="320" valign="top">Task.resourceFiles.blobSource</td>
<td width="770" valign="top"><u><a href="https://raw.githubusercontent.com/Azure/azure-batch-samples/master/Python/Batch/article_samples/mpi/data/linux/openfoam/application-cmd">https://raw.githubusercontent.com/Azure/azure-batch-samples/master/Python/Batch/article_samples/mpi/data/linux/openfoam/application-cmd</a></u></td>
</tr>
<tr>
<td width="320" valign="top">Task.resourceFiles.filePath</td>
<td width="770" valign="top">application-cmd</td>
</tr>
<tr>
<td width="320" valign="top">Task.userIdentity</td>
<td width="770" valign="top">scope=pool, elevationLevel=admin</td>
</tr>
<tr>
<td width="320" valign="top">Task.multiInstanceSettings.numberOfInstances</td>
<td width="770" valign="top">3</td>
</tr>
<tr>
<td width="320" valign="top">Task.multiInstanceSettings.
coordinationCommandLine</td>
<td width="770" valign="top">$AZ_BATCH_TASK_SHARED_DIR/coordination-cmd</td>
</tr>
<tr>
<td width="320" valign="top">Task.multiInstanceSettings.commonResourceFiles.
blobSource</td>
<td width="770" valign="top"><u><a href="https://raw.githubusercontent.com/Azure/azure-batch-samples/master/Python/Batch/article_samples/mpi/data/linux/openfoam/coordination-cmd">https://raw.githubusercontent.com/Azure/azure-batch-samples/master/Python/Batch/article_samples/mpi/data/linux/openfoam/coordination-cmd</a></u></td>
</tr>
<tr>
<td width="320" valign="top">Task.multiInstanceSettings.commonResourceFiles.
filePath</td>
<td width="770" valign="top">coordination-cmd</td>
</tr>
</tbody>
</table>
&nbsp;
<h4><strong>Download the output data</strong></h4>
Once above task is submitted, Batch will run OpenFOAM on the input data. When the task completes, you can download the output file, <i>VTK.tgz</i>, by navigating to the task in the Azure portal:
<a href="https://portal.azure.com/">Azure portal</a> –&gt; Batch account –&gt; Jobs –&gt; yourJobId –&gt; Tasks -&gt; yourTaskId –&gt; Task Files -&gt; Files on node
Download the <i>VTK.tgz </i>file and decompress it into a directory on your local workstation. You can use the <a href="https://www.paraview.org/">Paraview</a> software to render the video by running the command
<i>"&lt;Path-to-ParaView-Installation\bin\pvpython.exe" “&lt;path-to-VTK-dir&gt;\genimages.py”</i>

&nbsp;
<h4><strong>OpenFOAM solution end-to-end sample code</strong></h4>
The sample code for running an end-to-end OpenFOAM MPI solution on Batch is available <a href="https://github.com/Azure/azure-batch-samples/tree/master/Python/Batch/article_samples/mpi">here</a>.

&nbsp;
<h2><strong>Run HelloWorld MPI application with Ubuntu on Batch using OpenMPI</strong></h2>
<h4><strong>Create Ubuntu pool (and install OpenMPI)</strong></h4>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="320" valign="top">Pool.enableInterNodeCommunication</td>
<td width="770" valign="top">True</td>
</tr>
<tr>
<td width="320" valign="top">Pool.maxTasksPerNode</td>
<td width="770" valign="top">1</td>
</tr>
<tr>
<td width="320" valign="top">Pool.targetDedicated</td>
<td width="770" valign="top">3</td>
</tr>
<tr>
<td width="320" valign="top">Pool.startTask.commandLine</td>
<td width="770" valign="top">/bin/sh -c "apt-get update; apt-get -y install libcr-dev mpich2 mpich2-doc"</td>
</tr>
<tr>
<td width="320" valign="top">Pool.startTask.runElevated</td>
<td width="770" valign="top">True</td>
</tr>
<tr>
<td width="320" valign="top">Pool.startTask.WaitForSuccess</td>
<td width="770" valign="top">True</td>
</tr>
</tbody>
</table>
&nbsp;
<h4><strong>Submit MPI task on Ubuntu pool</strong></h4>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="320" valign="top">Task.commandLine</td>
<td width="770" valign="top">mpirun -np 6 --host $AZ_BATCH_HOST_LIST -wdir $AZ_BATCH_TASK_SHARED_DIR $AZ_BATCH_TASK_SHARED_DIR/hello-world.exe</td>
</tr>
<tr>
<td width="320" valign="top">Task.multiInstanceSettings.numberOfInstances</td>
<td width="770" valign="top">3</td>
</tr>
<tr>
<td width="320" valign="top">Task.multiInstanceSettings.
coordinationCommandLine</td>
<td width="770" valign="top">chmod +x $AZ_BATCH_TASK_SHARED_DIR/hello-world.exe</td>
</tr>
<tr>
<td width="320" valign="top">Task.multiInstanceSettings.commonResourceFiles.
blobSource</td>
<td width="770" valign="top"><u>&lt;storage-url-hosting-hello-world-exe&gt;</u></td>
</tr>
<tr>
<td width="320" valign="top">Task.multiInstanceSettings.commonResourceFiles.
filePath</td>
<td width="770" valign="top">hello-world.exe</td>
</tr>
</tbody>
</table>
&nbsp;
<h2><strong>Run HelloWorld MPI application with CentOS on Batch using OpenMPI</strong></h2>
<h4><strong>Create CentOS pool (and install OpenMPI)</strong></h4>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="320" valign="top">Pool.enableInterNodeCommunication</td>
<td width="770" valign="top">True</td>
</tr>
<tr>
<td width="320" valign="top">Pool.maxTasksPerNode</td>
<td width="770" valign="top">1</td>
</tr>
<tr>
<td width="320" valign="top">Pool.targetDedicated</td>
<td width="770" valign="top">3</td>
</tr>
<tr>
<td width="320" valign="top">Pool.startTask.commandLine</td>
<td width="770" valign="top">/bin/sh -c "yum install -y kernel-headers --disableexcludes=all; yum -y install make gcc gcc-c++ gcc-gfortran cmake zlib-devel openmpi openmpi-devel fftw fftw-devel gsl gsl-devel gmp environment-modules; source /etc/profile.d/modules.sh; module add mpi/openmpi-$(uname -i); module load mpi/openmpi-$(uname -i)"</td>
</tr>
<tr>
<td width="320" valign="top">Pool.startTask.runElevated</td>
<td width="770" valign="top">True</td>
</tr>
<tr>
<td width="320" valign="top">Pool.startTask.WaitForSuccess</td>
<td width="770" valign="top">True</td>
</tr>
</tbody>
</table>
&nbsp;
<h4><strong>Submit MPI Task on CentOS pool</strong></h4>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="320" valign="top">Task.commandLine</td>
<td width="770" valign="top">/usr/lib64/openmpi/bin/mpirun -np 6
--host $AZ_BATCH_HOST_LIST
-wdir $AZ_BATCH_TASK_SHARED_DIR $AZ_BATCH_TASK_SHARED_DIR/hello-world.exe</td>
</tr>
<tr>
<td width="320" valign="top">Task.multiInstanceSettings.numberOfInstances</td>
<td width="770" valign="top">3</td>
</tr>
<tr>
<td width="320" valign="top">Task.multiInstanceSettings.
coordinationCommandLine</td>
<td width="770" valign="top">chmod +x $AZ_BATCH_TASK_SHARED_DIR/hello-world.exe</td>
</tr>
<tr>
<td width="320" valign="top">Task.multiInstanceSettings.commonResourceFiles.
blobSource</td>
<td width="770" valign="top"><u>&lt;storage-url-hosting-hello-world-exe&gt;</u></td>
</tr>
<tr>
<td width="320" valign="top">Task.multiInstanceSettings.commonResourceFiles.
filePath</td>
<td width="770" valign="top">hello-world.exe</td>
</tr>
</tbody>
</table>
We will also talk about other feature enhancements in a future series of blogs, so stay tuned to <a href="https://blogs.technet.microsoft.com/b/windowshpc/">our blog</a>.

If you have questions about MPI on Linux in Azure Batch, or about the examples in this blog post, please visit the <a href="https://social.msdn.microsoft.com/Forums/en-US/home?forum=azurebatch">Azure Batch forum</a> and post your questions.]]></content:encoded>
    </item>
    <item>
      <title>Language support of Batch Client Library - Python</title>
      <link>https://docs.microsoft.com/archive/blogs/windowshpc/language-support-of-batch-client-library-python</link>
      <pubDate>Thu, 09 Jun 2016 18:17:59 GMT</pubDate>
      <dc:creator><![CDATA[Yiding Zhou - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/windowshpc/?p=4185</guid>
      <description><![CDATA[When Azure Batch was initially released last summer, there was only 1 client language we supported,...]]></description>
      <content:encoded><![CDATA[When Azure Batch was initially released last summer, there was only 1 client language we supported, and that was C#. But we always understand that our customers live in a diversified world, and the requirements of developers are different. This is especially true since we introduced Linux support in Azure Batch.

As a part of the Linux support in Batch, we have added support for a <a href="https://azure.microsoft.com/documentation/articles/batch-technical-overview/#batch-development-apis">series of languages</a> to the Batch SDK. At the time of this blog post, besides C#/.Net, we also support Java, Python, and Node.js.

We have updated our documentation with a <a href="https://azure.microsoft.com/documentation/articles/batch-python-tutorial/">Python version of the tutorial</a>. You can follow the guide to install the azure-batch and azure-storage packages with pip, and learn how the tutorial sample interacts with the Azure Batch service to run a simple parallel workload. We also have additional <a href="https://github.com/Azure/azure-batch-samples/tree/master/Python/Batch">Python sample code</a> on GitHub for you to try.

The Batch Python SDK provides all Batch functionality provided by the REST API with a few extra helpers, like dealing with the continuous token for paged result. Batch Python SDK requires either Python 2.7 or 3 (3.3 – 3.5). We have tested the library on both Windows and Linux platform. Note that your client environment does not need to be the same as your Batch nodes. You can create an Ubuntu-based pool from a Windows client, and vice-versa.

Finally, I highly recommend you view the <a href="https://github.com/Azure/azure-batch-samples/blob/master/Python/Batch/README.md">README</a> document on Batch sample projects. If not the introduction to the samples, at least the <em>Azure Batch on Linux Best Practices</em> section.]]></content:encoded>
    </item>
    <item>
      <title>Introducing Linux support on Azure Batch</title>
      <link>https://docs.microsoft.com/archive/blogs/windowshpc/introducing-linux-support-on-azure-batch</link>
      <pubDate>Tue, 29 Mar 2016 22:24:00 GMT</pubDate>
      <dc:creator><![CDATA[Yiding Zhou - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/windowshpc/2016/03/29/introducing-linux-support-on-azure-batch/</guid>
      <description><![CDATA[We are excited to announce today a preview of Azure Batch for Linux virtual machines. This brings...]]></description>
      <content:encoded><![CDATA[<span style="font-family: Calibri;font-size: medium">We are excited to announce today a preview of Azure Batch for Linux virtual machines. This brings the power of Batch “scheduling-as-a-service” to customers with Linux applications and workflows across industries and scientific research. </span>

<span style="font-family: Calibri;font-size: medium">Under the covers, Batch is using Virtual Machine Scale Sets to deploy and manage Linux virtual machines. The Batch agent that manages job and task execution on compute nodes is written in Python for portability. This compliments the support in Batch for Cloud Services. VM Scale Sets will provide us with additional features down the road such as custom VM images. </span>

<span style="font-family: Calibri;font-size: medium">This is a short guide about how to use Linux on Batch. A detail document will be available on <a title="https://azure.microsoft.com/en-us/documentation/services/batch/" href="/controlpanel/blogs/posteditor.aspx/Azure%20Batch%20documentation">Azure Batch documentation</a> site shortly.</span>
<ul>
	<li><span style="font-family: Calibri;font-size: medium"><a href="#prereq">Prerequisite</a></span></li>
	<li><span style="font-family: Calibri;font-size: medium"><a href="#using">Using Linux on Batch</a></span></li>
	<li><span style="font-family: Calibri;font-size: medium"><a href="#cli">Command Line Support (Azure xplat CLI)</a>
</span></li>
	<li><span style="font-family: Calibri;font-size: medium"><a href="#ssh">Troubleshooting - Using SSH</a>
</span></li>
	<li><span style="font-family: Calibri;font-size: medium"><a href="#matrix">Linux Support Matrix</a>
</span></li>
	<li><span style="font-family: Calibri;font-size: medium"><a href="#pricing">Pricing Information</a>
</span></li>
	<li><span style="font-family: Calibri;font-size: medium"><a href="#ref">Reference</a>
</span><span style="font-family: Calibri;font-size: medium">
</span></li>
</ul>
<div>
<h1><span style="font-family: Calibri Light"><a id="prereq"></a>Prerequisite</span></h1>
</div>
<strong>Batch Account</strong>

<span style="font-family: Calibri;font-size: medium">Batch account can be created on azure management portal. See <a title="https://ms.portal.azure.com/#create/Microsoft.BatchAccount" href="https://azure.microsoft.com/en-us/documentation/articles/batch-technical-overview/" target="_blank">here</a> for detail instruction.</span>

<strong>Client SDK</strong>

<span style="font-family: Calibri;font-size: medium">Batch service provides a set of SDK to interact with Batch service. </span>
<ul>
	<li><span style="font-family: Calibri;font-size: medium">Dot Net SDK can be downloaded from <a title="https://www.nuget.org/packages/Azure.Batch/" href="/controlpanel/blogs/posteditor.aspx/Nuget">Nuget</a>. </span></li>
	<li><span style="font-family: Calibri;font-size: medium">Python SDK is part of the <a title="https://pypi.python.org/pypi/azure/" href="/controlpanel/blogs/posteditor.aspx/Azure%20Python%20SDK">Azure Python SDK</a> on PyPi.</span></li>
	<li><span style="font-family: Calibri;font-size: medium">Node.js SDK can be found on <a title="https://www.npmjs.com/package/azure-batch" href="/controlpanel/blogs/posteditor.aspx/npm">npm</a>.</span></li>
	<li><span style="font-family: Calibri;font-size: medium"><span style="font-family: Calibri">Java support will come shortly in the future. </span></span></li>
</ul>
<div>
<h1><span style="font-family: Calibri Light"><a id="using"></a>Using Linux on Batch</span></h1>
</div>
<span style="font-family: Calibri;font-size: medium">If you are not familiar with Azure Batch service, <a title="https://azure.microsoft.com/en-us/documentation/articles/batch-dotnet-get-started/" href="/controlpanel/blogs/posteditor.aspx/here">here</a> is a good step by step tutorial on using Batch.</span>

<span style="font-family: Calibri;font-size: medium">A typical Batch application involves 4 steps - creating a client, creating a pool, creating a job, and adding tasks to the job. The behavior is the same as normal Batch client with the only difference being the way to specify OS of the pool virtual machines.
</span>

<span style="font-family: Calibri;font-size: medium">With Linux on Batch, instead of OS family and version, the client must specify publisher, offer, sku, and version of the VM image, plus node agent sku id. You can find supported Linux distribution in the section later in the blog post. For example, the code in section #2 creates a pool based on latest version of Ubuntu 14.04-LTS.
</span>

<span style="font-family: Calibri;font-size: medium">1. Initializing Batch Client</span>
<p style="margin-left: 30px"><span style="font-family: courier new,courier;font-size: small">creds <b>= </b>SharedKeyCredentials(account, key)</span>
<span style="font-family: courier new,courier;font-size: small"> config <b>= </b>BatchServiceConfiguration(creds, base_url <b>= </b>batch_url)</span>
<span style="font-family: courier new,courier;font-size: small"> client <b>= </b>BatchService(config)</span></p>
<span style="font-family: Calibri;font-size: medium">2. Create a pool using Python SDK.</span>
<pre style="margin-left: 30px"><span style="font-family: courier new,courier"><span style="font-size: small">new_pool </span><b><span style="font-size: small">= </span></b><span style="font-size: small">PoolAddParameter(</span><span style="font-size: small">id </span><b><span style="font-size: small">= </span></b><span style="font-size: small">"&lt;pool name&gt;"</span><span style="font-size: small">, </span><span style="font-size: small">vm_size </span><b><span style="font-size: small">= </span></b><span style="font-size: small">"e.g. STANDARD_A4"</span><span style="font-size: small">)
new_pool.target_dedicated </span><b><span style="font-size: small">= </span></b><span style="font-size: small">4
start_task </span><b><span style="font-size: small">= </span></b><span style="font-size: small">StartTask()
start_task.run_elevated </span><b><span style="font-size: small">= </span></b><span style="font-size: small">True</span><b>
</b><span style="font-size: small">start_task.command_line </span><b><span style="font-size: small">= </span></b><span style="font-size: small">'&lt;pool prep task cli&gt;'
</span><span style="font-size: small">new_pool.start_task </span><b><span style="font-size: small">= </span></b><span style="font-size: small">start_task
ir </span><b><span style="font-size: small">= </span></b><span style="font-size: small">ImageReference(
    </span><span style="font-size: small"><strong>publisher</strong> </span><b><span style="font-size: small">= </span></b><span style="font-size: small">"Canonical"</span><span style="font-size: small">,
    </span><span style="font-size: small"><strong>offer</strong> </span><b><span style="font-size: small">= </span></b><span style="font-size: small">"UbuntuServer"</span><span style="font-size: small">,
    </span><span style="font-size: small"><strong>sku</strong> </span><b><span style="font-size: small">=  </span></b><span style="font-size: small">"14.04.2-LTS"</span><span style="font-size: small">,
    </span><span style="font-size: small"><strong>version</strong> </span><b><span style="font-size: small">= </span></b><span style="font-size: small">"latest"</span><span style="font-size: small">)</span><i></i></span>
<span style="font-family: courier new,courier"><span style="font-size: small">
vmc </span><b><span style="font-size: small">= </span></b><span style="font-size: small">VirtualMachineConfiguration(
    </span><span style="font-size: small">image_reference </span><b><span style="font-size: small">= </span></b><span style="font-size: small">ir,
    </span><strong><span style="font-size: small">node_agent_sku_id </span></strong><b><span style="font-size: small">= </span></b><span style="font-size: small">"Batch.Node.Ubuntu 14.04"</span><span style="font-size: small">)

new_pool.virtual_machine_configuration </span><b><span style="font-size: small">= </span></b><span style="font-size: small">vmc</span></span></pre>
<span style="font-family: Calibri;font-size: medium">3. Submit a job using Python SDK.</span>
<pre style="margin-left: 30px"><span style="font-family: courier new,courier"><span style="font-size: small">pool_info </span><b><span style="font-size: small">= </span></b><span style="font-size: small">PoolInformation(</span><span style="font-size: small">pool_id </span><b><span style="font-size: small">= </span></b><span style="font-size: small">pool_id)
job </span><b><span style="font-size: small">= </span></b><span style="font-size: small">JobAddParameter(</span><span style="font-size: small">id</span><b><span style="font-size: small">=</span></b><span style="font-size: small">jobId, </span><span style="font-size: small">pool_info </span><b><span style="font-size: small">= </span></b><span style="font-size: small">pool_info)</span></span></pre>
<pre style="margin-left: 30px"><span style="font-family: courier new,courier"><span style="font-size: small">
job_preparation_task </span><b><span style="font-size: small">= </span></b><span style="font-size: small">JobPreparationTask()
job_preparation_task.command_line </span><b><span style="font-size: small">= </span></b><span style="font-size: small">"&lt;start up cli&gt; "
</span><span style="font-size: small">job_preparation_task.run_elevated </span><b><span style="font-size: small">= </span></b><span style="font-size: small">True <span style="font-family: courier new,courier;font-size: small"><em># If specified, task will run as su</em></span></span><b>
</b><span style="font-size: small">job.job_preparation_task </span><b><span style="font-size: small">= </span></b><span style="font-size: small">job_preparation_task
client.job.add(job)
</span></span></pre>
<div>

<span style="font-family: Calibri;font-size: medium">4. Add task to the job is also easy.
</span>
<pre style="margin-left: 30px"><span style="font-family: courier new,courier;font-size: small">taskId = '&lt;task name&gt;'
taskCmdLine = '&lt;task cli&gt;'

task = TaskAddParameter(id = taskId, command_line=taskCmdLine)
task.run_elevated = True <em># If specified, task will run as su</em>

client.task.add(bound_job.id, task)</span></pre>
<span style="font-family: Calibri Light"><span style="font-family: Calibri;font-size: medium">For advanced features, refer to MSDN and Python API reference document. </span></span>
<h1><span style="font-family: Calibri Light"><a id="cli"></a>Command Line Support (Azure x-plat CLI)
</span></h1>
<span style="font-family: Calibri Light"><span style="font-size: medium;font-family: arial,helvetica,sans-serif"><span style="font-family: Calibri;font-size: medium">Azure Batch support has been added to the latest version of Azure Command-Line Interface (xplat cli). <a href="https://azure.microsoft.com/en-us/documentation/articles/xplat-cli-install/">Install Azure CLI via npm</a> to interact with Batch service through console.</span></span><br style="font-family: Calibri;font-size: medium" /></span>

<span style="font-family: Calibri Light"><span style="font-size: medium;font-family: arial,helvetica,sans-serif"><span style="font-family: Calibri;font-size: medium">The initial release will provide account management and job/task submission through "azure batch" sub commands. Support of Linux pool management will come shortly.
</span></span></span>
<h1><span style="font-family: Calibri Light"><a id="ssh"></a>Troubleshooting - Using SSH
</span></h1>
</div>
<span style="font-family: Calibri;font-size: medium">RDP cannot be used against Linux VMs. Instead, Batch expose SSH access to all nodes in the pool. The following Python code shows how to find SSH information of the nodes. </span>
<pre style="margin-left: 30px"><span style="font-family: courier new,courier;font-size: small">nodes <b>= </b>client.compute_node.list(pool_id)
for node in nodes:
    login <b>= </b>client.compute_node.get_remote_login_settings(pool_id,
                                                          node.id)
    print("{0} {1} {2} {3}".format(node.id,
                                   node.state,
                                   login.remote_login_ip_address,
                                   login.remote_login_port)</span></pre>
<span style="font-family: Calibri;font-size: medium">Sample output. You will find the IP and SSH port of the node.
</span>
<p style="margin-left: 30px"><span style="font-size: small"><i>tvm-3436469628_1-20160320t055249z ComputeNodeState.idle <strong>52.160.94.74 50002</strong></i></span></p>
<p style="margin-left: 30px"><span style="font-size: small"><i>tvm-3436469628_2-20160320t055249z ComputeNodeState.idle <strong>52.160.94.74 50003</strong></i></span></p>
<p style="margin-left: 30px"><span style="font-size: small"><i>tvm-3436469628_3-20160320t055249z ComputeNodeState.idle <strong>52.160.94.74 50000</strong></i></span></p>
<p style="margin-left: 30px"><span style="font-size: small"><i>tvm-3436469628_4-20160320t055249z ComputeNodeState.idle <strong>52.160.94.74 50001</strong></i></span></p>
<span style="font-family: Calibri;font-size: medium">Remember to call add user beforehand for SSH logon credential. Once logged on, one can setup key based authentication just like normal Linux VM. Here is Python code to add user. Note that one will be prompted for entering a password, however, it's also possible to specify a public key for key based authentication.
</span>
<p style="margin-left: 30px"><span style="font-family: courier new,courier;font-size: small">import getpass</span></p>
<span style="font-family: courier new,courier;font-size: small">pool_id = ...</span>
<span style="font-family: courier new,courier;font-size: small">username = ...</span>
<span style="font-family: courier new,courier;font-size: small">password = getpass.getpass()</span>

<span style="font-family: courier new,courier;font-size: small">user = ComputeNodeUser()</span>
<span style="font-family: courier new,courier;font-size: small">user.name = username</span>
<span style="font-family: courier new,courier;font-size: small">user.password = password</span>
<span style="font-family: courier new,courier;font-size: small">user.is_admin = True</span>
<span style="font-family: courier new,courier;font-size: small">user.expiry_time = (datetime.datetime.today() + datetime.timedelta(days=30)).isoformat()</span>

<span style="font-family: courier new,courier;font-size: small">nodes = client.compute_node.list(pool_id)</span>
<span style="font-family: courier new,courier;font-size: small">for node in nodes:</span>
<span style="font-family: courier new,courier;font-size: small">    client.compute_node.add_user(pool_id, node.id, user)</span>
<div>
<h1><span style="font-family: Calibri Light"><a id="matrix"></a>Linux Distribution Support Matrix</span></h1>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="156"><b>Distro</b></td>
<td valign="top" width="156"><b>Publisher</b></td>
<td valign="top" width="156"><b>Offer</b></td>
<td valign="top" width="150"><b>SKU</b></td>
<td valign="top" width="168"><b>NodeAgentSKUId</b></td>
</tr>
<tr>
<td rowspan="6" valign="top" width="156">Ubuntu</td>
<td rowspan="6" valign="top" width="156">Canonical</td>
<td rowspan="6" valign="top" width="156">UbuntuServer</td>
<td valign="top" width="150">14.04.0-LTS</td>
<td valign="top" width="168">batch.node.ubuntu 14.04</td>
</tr>
<tr>
<td valign="top" width="150">14.04.1-LTS</td>
<td valign="top" width="168">batch.node.ubuntu 14.04</td>
</tr>
<tr>
<td valign="top" width="150">14.04.2-LTS</td>
<td valign="top" width="168">batch.node.ubuntu 14.04</td>
</tr>
<tr>
<td valign="top" width="150">14.04.3-LTS</td>
<td valign="top" width="168">batch.node.ubuntu 14.04</td>
</tr>
<tr>
<td valign="top" width="150">14.04.4-LTS</td>
<td valign="top" width="168">batch.node.ubuntu 14.04</td>
</tr>
<tr>
<td valign="top" width="150">15.10</td>
<td valign="top" width="168">batch.node.debian 8</td>
</tr>
<tr>
<td valign="top" width="156">Debian</td>
<td valign="top" width="156">Credativ</td>
<td valign="top" width="156">Debian</td>
<td valign="top" width="150">8</td>
<td valign="top" width="168">batch.node.debian 8</td>
</tr>
<tr>
<td rowspan="5" valign="top" width="156">SUSE</td>
<td rowspan="5" valign="top" width="156">SUSE</td>
<td valign="top" width="156">openSUSE</td>
<td valign="top" width="150">13.2</td>
<td valign="top" width="168">batch.node.opensuse 13.2</td>
</tr>
<tr>
<td valign="top" width="156">openSUSE-Leap</td>
<td valign="top" width="150">42.1</td>
<td valign="top" width="168">batch.node.opensuse 42.1</td>
</tr>
<tr>
<td valign="top" width="156">SLES</td>
<td valign="top" width="150">12</td>
<td valign="top" width="168">batch.node.opensuse 42.1</td>
</tr>
<tr>
<td valign="top" width="156">SLES</td>
<td valign="top" width="150">12-SP1</td>
<td valign="top" width="168">batch.node.opensuse 42.1</td>
</tr>
<tr>
<td valign="top" width="156">SLES-HPC</td>
<td valign="top" width="150">12</td>
<td valign="top" width="168">batch.node.opensuse 42.1</td>
</tr>
<tr>
<td rowspan="3" valign="top" width="156">CentOS</td>
<td rowspan="3" valign="top" width="156">OpenLogic</td>
<td rowspan="3" valign="top" width="156">CentOS</td>
<td valign="top" width="150">7.0</td>
<td valign="top" width="168">batch.node.centos 7</td>
</tr>
<tr>
<td valign="top" width="150">7.1</td>
<td valign="top" width="168">batch.node.centos 7</td>
</tr>
<tr>
<td valign="top" width="150">7.2</td>
<td valign="top" width="168">batch.node.centos 7</td>
</tr>
<tr>
<td valign="top" width="156">Oracle Linux</td>
<td valign="top" width="156">Oracle</td>
<td valign="top" width="156">Oracle-Linux-7</td>
<td valign="top" width="150">OL70</td>
<td valign="top" width="168">batch.node.centos 7</td>
</tr>
</tbody>
</table>
<span style="font-family: Calibri"><span style="font-size: medium"><strong>Note</strong>, this is not an exhaustive list and may subject to change. The client should use ListNodeAgentSKU REST API call to get a full list of supported image on the account.</span>
</span>

</div>
<div></div>
<div>
<h1><span style="font-family: Calibri Light"><a id="pricing"></a>Pricing</span></h1>
<span style="font-family: Calibri;font-size: medium">Azure Batch is built on Azure Cloud Service and Azure Virtual Machine technology. Batch itself is offered in free tier which means you are only charged for the compute resource you are using. When creating a pool (either through https://portal.azure.com or API), you can choose what type of pool you want to create. If you choose Cloud Service which is Windows only, you will be charged based on the <a href="https://azure.microsoft.com/en-us/pricing/details/cloud-services/">Cloud Service</a> pricing meters. If you choose Virtual Machine which provides Linux OS, you will be charged based on <a href="https://azure.microsoft.com/en-us/pricing/details/virtual-machines/#Linux">Linux Virtual Machine</a> pricing meters. At the time of this blog, Linux VM price is lower than Cloud Service/Windows VM.</span>
<h1><span style="font-family: Calibri Light"><a id="ref"></a>References</span></h1>
</div>
<span style="font-family: Calibri;font-size: medium">MSDN API reference (Coming soon.)</span>

<span style="font-family: Calibri;font-size: medium">Samples (Coming soon.)</span>

<span style="font-family: Calibri;font-size: medium"> </span>]]></content:encoded>
    </item>
    <item>
      <title>Azure Batch Service Update - Dec., 2015</title>
      <link>https://docs.microsoft.com/archive/blogs/windowshpc/azure-batch-service-update-dec-2015</link>
      <pubDate>Thu, 31 Dec 2015 11:42:00 GMT</pubDate>
      <dc:creator><![CDATA[Yiding Zhou - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/windowshpc/2015/12/31/azure-batch-service-update-dec-2015/</guid>
      <description><![CDATA[We are excited to announce the first major service update of Azure Batch since the service GA in...]]></description>
      <content:encoded><![CDATA[<p>We are excited to announce the first major service update of Azure Batch since the service GA in July, 2015. This service update brings multiple new features.</p>
<ul>
<li>Multi-instance task support. Batch service now support <strong>MPI type of workloads</strong>. Only Windows and MS-MPI combination is fully supported but we are working hard on other OS and MPI implementations. For detail, check this <a title="blog post" href="/b/windowshpc/archive/2015/12/31/announcing-the-availability-of-mpi-support-on-azure-batch.aspx">blog post</a>.</li>
</ul>
<p></p>
<ul>
<li><strong>Take node offline</strong> without deleting it. Our customers have been asking for this feature for a long time. With the Dec., 2015 service update, it&#39;s possible to disable a node from scheduling any new tasks without deleting it. This&nbsp;feature can be accessed from <span style="font-family:courier new,courier;font-size:x-small;">Microsoft.Azure.Batch.PoolOperations.DisableComputeNodeScheduling </span>and <span style="font-family:courier new,courier;font-size:x-small;">Microsoft.Azure.Batch.PoolOperations.EnableComputeNodeScheduling</span>.</li>
</ul>
<p></p>
<ul>
<li><strong>Change autoscale formula evaluation interval</strong>. By default, the Batch service adjusts a pool&#39;s size according to its autoscale formula every 15 minutes. This interval is configurable now through the property of CloudPool.AutoScaleEvaluationInterval. The minimum interval is 5 minutes, and the maximum is 168 hours. If an interval outside this range is specified, the Batch service will return a Bad Request (400) error.</li>
</ul>
<p>All features mentioned above are available across all regions immediately. To access those features, the REST API version should be &quot;2015-11-01.2.1&quot; or using <a title="Azure Batch Client Library 3.0.0" href="https://www.nuget.org/packages/Azure.Batch/3.0.0">Azure Batch Client Library 3.0.0</a>. All earlier version of REST and .NET API are still available. We will not obsolete them for now.</p>
<p style="padding:0;margin:0;"></p>]]></content:encoded>
    </item>
    <item>
      <title>Announcing the availability of MPI support on Azure Batch</title>
      <link>https://docs.microsoft.com/archive/blogs/windowshpc/announcing-the-availability-of-mpi-support-on-azure-batch</link>
      <pubDate>Wed, 30 Dec 2015 11:45:00 GMT</pubDate>
      <dc:creator><![CDATA[Yiding Zhou - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/windowshpc/2015/12/30/announcing-the-availability-of-mpi-support-on-azure-batch/</guid>
      <description><![CDATA[Update: We have a published the detail on  azure.com
We are happy to announce today the release of...]]></description>
      <content:encoded><![CDATA[<p>Update: We have a published the detail on <a href="https://azure.microsoft.com/en-us/documentation/articles/batch-mpi/"> azure.com</a></p>
<p>We are happy to announce today the release of MPI support on Azure Batch services.</p>
<p>We have released a service update recently with several feature enhancements, MPI support being the most important of them. MPI support is provided through a new feature in Batch called multi-instance task. Azure customer can now submit and run MPI tasks on their Batch pools globally. For now, only MS-MPI on Windows platform has been fully tested but we are working on support of other platform and MPI libraries.</p>
<p>Furthermore, by simply using MS-MPI on A8/A9 pool, Batch MPI tasks can fully leverage the high speed low latency RDMA network on those Azure VMs - no extra work needed.</p>
<p>A detail article on how to build, compile, and run a MPI program on Batch will be published soon.</p>
<p>We will also talk about other feature enhancement in a series of blogs so stay tuned to <a title="our blog" href="/b/windowshpc/">our blog</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>How to fully use GPU resources to run GPGPU jobs in Microsoft HPC Pack?</title>
      <link>https://docs.microsoft.com/archive/blogs/windowshpc/how-to-fully-use-gpu-resources-to-run-gpgpu-jobs-in-microsoft-hpc-pack</link>
      <pubDate>Mon, 16 Nov 2015 16:00:18 GMT</pubDate>
      <dc:creator><![CDATA[Guang HU - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/windowshpc/2015/11/16/how-to-fully-use-gpu-resources-to-run-gpgpu-jobs-in-microsoft-hpc-pack/</guid>
      <description><![CDATA[With the advent of the Graphical Processing Unit (GPU) as a general-purpose computing unit, more and...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family:Calibri;font-size:medium;">With the advent of the Graphical Processing Unit (GPU) as a general-purpose computing unit, more and more customers are moving towards GPU-based clusters to run their scientific and engineering applications. Compared to a traditional CPU, a GPU has a massively parallel architecture consisting of thousands of smaller, more efficient cores designed for handling multiple tasks simultaneously.</span></p>
<p><span style="font-family:Calibri;font-size:medium;">Before the HPC Pack 2012 R2 Update 3 released, it&rsquo;s quite difficult to use HPC Pack to fully utilize the GPU resources in HPC Pack. It&rsquo;s also hard to manage the nodes with GPU and monitor their GPU performance count easily. I would like to show some details of Update 3 that resolve these issues. </span></p>
<p><b><span style="font-family:Calibri;font-size:medium;">Deployment</span></b></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">First things first, we need to deploy the compute nodes with GPU resources in HPC Pack cluster. Are there any extra steps we need to do? What if I install a new GPU card to an existing HPC compute node, are there any other steps we need to follow?&nbsp; </span></span></p>
<p><span style="font-family:Calibri;font-size:medium;">HPC Pack provides a quite straightforward and easy way to deploy GPU nodes WITHOUT any extra steps. As long as your compute nodes installs a supported GPU card, we will recognize and handle it automatically. The only one requirement here is the GPU card should be in our supported module list. In update 3, we only support </span><a href="https://developer.nvidia.com/cuda-gpus"><span style="color:#0563c1;font-family:Calibri;font-size:medium;">NVIDIA CUDA GPUs</span></a><span style="font-family:Calibri;"><span style="font-size:medium;">.&nbsp; </span></span></p>
<p><b><span style="font-family:Calibri;font-size:medium;">Management and Monitoring</span></b></p>
<p><span style="font-family:Calibri;font-size:medium;">Before the Update 3 of HPC Pack 2012 R2, HPC admins have to manually identify and mark which nodes are GPU capable. It&rsquo;s also hard for them to easily monitor some key GPU performance counters, like GPU time, to show which GPUs are in use and how they are used.&nbsp; Here are some key features we introduced to resolve these management and monitor problems. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">In Update 3, as long as HPC Pack recognizes the GPU node, it will automatically create new node group &ldquo;GpuNodes&rdquo;. All the recognized GPU capable nodes will be listed there. </span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/68/36/7701.1.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-68-36/7701.1.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/68/36/7701.1.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-68-36/7701.1.png" border="0" /></a></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">It&rsquo;s also straight forward to find out more GPU specific details in the node properties under the &ldquo;GPU Information&rdquo; tab. &nbsp;</span></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/68/36/1715.2.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-68-36/1715.2.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/68/36/1715.2.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-68-36/1715.2.png" border="0" /></a></p>
<p><span style="font-family:Calibri;font-size:medium;">Head maps provide an easy way to find out how the nodes and system run. We are going to leverage this to show the GPUs&rsquo; performance counters as well. You can customize your own view of the heat maps to monitor GPU usage: </span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/68/36/0184.3.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-68-36/0184.3.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/68/36/0184.3.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-68-36/0184.3.png" border="0" /></a></p>
<p><span style="font-family:Calibri;font-size:medium;">And if there are multiple GPUs in one compute node, multiple metrics value will be shown as well. For example, the following screenshot shows that 8 GPUs in 2 nodes are fully used when a GPU job runs. </span></p>
<p><span style="font-family:Calibri;font-size:medium;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/68/36/3113.4.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-68-36/3113.4.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/68/36/3113.4.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-68-36/3113.4.png" border="0" /></a><br /></span></p>
<p><b><span style="font-family:Calibri;font-size:medium;">GPU Job Scheduling </span></b></p>
<p><span style="font-family:Calibri;font-size:medium;">For GPU jobs, it&rsquo;s natural to schedule based on GPU resources. Before Update 3 of HPC Pack 2012 R2, we cannot see any GPUs in compute nodes and it&rsquo;s also hard to monitor the overall GPU resources and dispatch to each node for execution. This has been improved dramatically in Update 3. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">When you create a new job, you will find out that there is a new schedule unit of &ldquo;GPU&rdquo;. This is the choice for HPC jobs that want to be scheduled based on GPU resources. </span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/68/36/3323.5.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-68-36/3323.5.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/68/36/3323.5.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-68-36/3323.5.png" border="0" /></a></p>
<p><span style="font-family:Calibri;font-size:medium;">Once you choose the GPU for the job scheduling, you need to make sure the job resources you choose have GPUs deployed. If HPC job scheduler failed to find any GPU available in the job resources selection results, the job will fail with corresponding error messages. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">We also support scheduling GPU jobs via HPC PowerShell and APIs. There are also more information and suggestions about how to schedule GPU jobs easily and CUDA coding sample. Please find more detailed info at the end of this blog. </span></p>
<p><b><span style="font-family:Calibri;font-size:medium;">Roadmaps</span></b></p>
<p><span style="font-family:Calibri;font-size:medium;">Microsoft Azure announced the plan to support N-Series VMs in the near future. HPC Pack is also planning to support the new type of VMs with GPU once they&rsquo;re available. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">This is the first step that HPC Pack is taking to introduce GPU support introduced the GPU supports. We are looking forward to hearing your feedbacks when you use it and see how we can improve it in future.&nbsp; You can reach out to us via email </span><a href="mailto:hpcpack@microsoft.com"><span style="color:#0563c1;font-family:Calibri;font-size:medium;">hpcpack@microsoft.com</span></a><span style="font-family:Calibri;font-size:medium;"> </span></p>
<p><span style="font-family:Times New Roman;font-size:medium;"> </span><span style="font-size:medium;">For more detailed information about the GPU supports in HPC Pack 2012 R2 Update 3,&nbsp;please visit the&nbsp;TechNet article <a href="https://go.microsoft.com/fwlink/?LinkId=699399"><span style="color:#0563c1;">here</span></a>.</span></p>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft HPC Pack 2012 R2 Update 3 is now available</title>
      <link>https://docs.microsoft.com/archive/blogs/windowshpc/microsoft-hpc-pack-2012-r2-update-3-is-now-available</link>
      <pubDate>Mon, 16 Nov 2015 15:58:00 GMT</pubDate>
      <dc:creator><![CDATA[Guang HU - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/windowshpc/2015/11/16/microsoft-hpc-pack-2012-r2-update-3-is-now-available/</guid>
      <description><![CDATA[Today, we are pleased to announce the Update 3 for HPC Pack 2012 R2 is now available. With this...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family:Calibri;font-size:medium;">Today, we are pleased to announce the Update 3 for HPC Pack 2012 R2 is now available. With this latest release of update, HPC Pack gets into some exciting new areas like GPU support, on-premises Linux nodes support and burst to Batch Services. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">We know that GPGPU in HPC is now getting very popular not just in academic research but also in enterprise engineering works. HPC pack customers were asking for it for quite a while. In this update, we introduced the support of the NVidia Tesla GPU So HPC Pack users can manage and monitor the supported HPC resources and schedule HPC jobs to fully leverage GPU resources.&nbsp; For more details, please go to see the follow up blog post of </span><a href="https://go.microsoft.com/fwlink/?LinkId=699412"><span style="color:#0563c1;font-family:Calibri;font-size:medium;">How to fully use GPU resources to run GPGPU jobs in Microsoft HPC Pack</span></a><span style="font-family:Calibri;font-size:medium;"> and detailed </span><a href="https://go.microsoft.com/fwlink/?LinkId=699399"><span style="color:#0563c1;font-family:Calibri;font-size:medium;">GPU supports introduction article in TechNet</span></a><span style="font-family:Calibri;font-size:medium;">. </span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">About 6 months ago, we introduced </span></span><a href="https://go.microsoft.com/fwlink/?LinkId=617894"><span style="color:#0563c1;font-family:Calibri;font-size:medium;">Azure Linux VM support for HPC Pack</span></a><span style="font-family:Calibri;font-size:medium;"> in Update 2. Now with Update 3, HPC Pack starts to support Linux for on premise compute node. Customers running high-performance computing clusters on Linux can now use HPC Pack deployment, management and scheduling capabilities, and the user experience is very similar to the Windows nodes. For more details, please go to see the </span><a href="https://go.microsoft.com/fwlink/?LinkId=699389"><span style="color:#0563c1;font-family:Calibri;font-size:medium;">description of On-premises Linux support</span></a><span style="font-family:Calibri;font-size:medium;"> in TechNet. </span></p>
<p><span style="font-family:Calibri;font-size:medium;">Microsoft introduced </span><a href="https://azure.microsoft.com/en-us/services/batch/"><span style="color:#0563c1;font-family:Calibri;font-size:medium;">Azure Batch Service</span></a><span style="font-family:Calibri;font-size:medium;"> months ago, it provides high scalable job scheduling and compute management service. From this update, HPC Pack is able to deploy Azure Batch pools from the Head Node and treat the compute resource pool as a &ldquo;fat&rdquo; node in the system and thus batch jobs and tasks can be scheduled on those pool nodes. For more information about Azure Batch support with HPC Pack, please visit </span><a href="https://go.microsoft.com/fwlink/?LinkId=699409"><span style="color:#0563c1;font-family:Calibri;font-size:medium;">burst azure batch from Microsoft HPC Pack</span></a></p>
<p><span style="font-family:Calibri;font-size:medium;">There are also great improvements introduced, for example: </span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;"><b>SOA improvements</b> &ndash; this release includes a better mapping for broker worker logs with sessions, Support Excel running under console session by default and provide SOA job view in web portal. </span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;"><b>Auto Grow/Shrink supports SOA workloads</b> - Now the service can grow nodes based on the outstanding calls in a SOA job instead of task numbers.</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;"><b>Per instance heat maps</b> - Originally we only have aggregated instance heat maps but now you can view per instance heat maps through the &ldquo;Overlaying view&rdquo;</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;"><b>Customizable Idle Detection Logic - </b>Originally the workstation nodes or the unmanaged server nodes are treated as idle through Keyboard/Mouse detection or CPU usage for process other than HPC ones. In This update we provide several customizable ways to detect whether these machines are idle. </span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;"><b>Remove the limitation on the number of parametric sweep task in a job. </b>HPC Pack used to have a limitation of 100 tasks in a parametric sweep job, now the limitation is removed<b> </b></span></span></p>
<p><b><span style="font-family:Calibri;font-size:medium;">Microsoft MPI 7.0 included. </span></b></p>
<p></p>
<p><span style="font-family:Calibri;font-size:medium;">To learn more about the detailed description and how to get the new package, please visit the </span><a href="https://go.microsoft.com/fwlink/?LinkId=699388"><span style="color:#0563c1;font-family:Calibri;font-size:medium;">what&rsquo;s new</span></a><span style="font-family:Calibri;font-size:medium;"> and </span><a href="https://go.microsoft.com/fwlink/?LinkId=699387"><span style="color:#0563c1;font-family:Calibri;font-size:medium;">release notes</span></a><span style="font-family:Calibri;font-size:medium;">. As always, we look forward to hearing from you. You can get in touch with us via the Windows HPC Forum, or you can email us directly.</span></p>
<p></p>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft MPI v7 Beta is now available</title>
      <link>https://docs.microsoft.com/archive/blogs/windowshpc/microsoft-mpi-v7-beta-is-now-available</link>
      <pubDate>Thu, 15 Oct 2015 15:18:00 GMT</pubDate>
      <dc:creator><![CDATA[Anh.Vo]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/windowshpc/2015/10/15/microsoft-mpi-v7-beta-is-now-available/</guid>
      <description><![CDATA[We are happy to announce today the Beta release of the newest version of Microsoft MPI...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family:Times New Roman;font-size:medium;">We are happy to announce today the Beta release of the newest version of Microsoft MPI (MS-MPI).</span></p>
<p><span style="font-size:medium;"><span style="font-family:Times New Roman;"><strong>MS-MPI v7 Beta</strong> is the pre-release version for the successor to <strong>MS-MPI v6 </strong>(v6.0.12436, released on 5/12/2015).</span></span></p>
<p><span style="font-family:Times New Roman;font-size:medium;">You can download a copy of <strong>MS-MPI v7 Beta</strong> </span><a href="https://www.microsoft.com/en-us/download/details.aspx?id=49443"><span style="color:#0563c1;font-family:Times New Roman;font-size:medium;">here</span></a><br /><span style="font-family:Times New Roman;font-size:medium;"> <br /> This Beta version of <strong>MS-MPI v7</strong> includes the following features, improvements, and fixes:</span></p>
<ul>
<ul>
<li>Support for the following nonblocking collective operations: MPI_Iallreduce, MPI_Iscatter, MPI_Iallgather, MPI_Iscatterv, MPI_Igatherv (in addition to the already supported MPI_Ibcast, MPI_Ireduce, MPI_Igather, and MPI_Ibarrier). For more details on these APIs please refer to the MPI 3.1 Standard document <a href="https://www.mpi-forum.org/docs/"><span style="color:#0563c1;">here</span></a></li>
</ul>
</ul>
<ul>
<ul>
<li>Support for configuring port range used for Network Direct connections using the MSMPI_ND_PORT_RANGE environment variable</li>
</ul>
</ul>
<ul>
<ul>
<li>Revamped process management (mpiexec/smpd) that will offer better reliability and performance</li>
</ul>
</ul>
<ul>
<ul>
<li>Performance improvements for collective operations</li>
</ul>
</ul>
<p><span style="font-family:Times New Roman;font-size:medium;">This Beta version of <strong>MS-MPI v7</strong> will also introduce the MS-MPI Launch Service, which allows the launching of MPI processes for local and remote machines with user provided credentials. The MS-MPI redistributable installer will install the MS-MPI launch service under &ldquo;Manual&rdquo; mode. To start the service, run the following command: </span></p>
<p style="margin-left:30px;">sc start MSMPILaunchSvc [options]<span style="font-size:medium;">.<span style="font-family:Times New Roman;"> </span></span></p>
<p><span style="font-family:Times New Roman;font-size:medium;">There are two new options to mpiexec (<strong>-pwd</strong> and <strong>-savecreds</strong>) that will allow you to provide the necessary credentials for launching processes using the launch service.&nbsp; The <strong>-pwd</strong> option allows specifying the password for the submitting users in non-interactive scenarios (e.g. using a script or scheduled task).&nbsp; Note that in this case the password is provided in clear text.&nbsp; The <strong>-savecreds</strong> option causes the provided credentials (if specified with <strong>-pwd</strong>) to be securely stored on all the hosts specified in the mpiexec command line.</span></p>
<p><span style="font-family:Times New Roman;font-size:medium;">For example, the following command will prompt for the user&#39;s password and ask the user if he or she wants to store it on the specified machines &quot;host1&quot; and &quot;host2&quot;, then launch three processes, one on the machine named &ldquo;host1&rdquo; and two on the machine named &ldquo;host2&rdquo;:</span></p>
<p style="margin-left:30px;">mpiexec &ndash;hosts 2 host1 1 host2 2 &ndash;wdir C:\MpiTests mpiapp.exe [parameters]</p>
<p><span style="font-family:Times New Roman;font-size:medium;">As another example, the following command will authenticate the user using the provided password, store it on the specified machines &quot;host1&quot; and &quot;host2&quot;, then launch three processes, one on the machine named &ldquo;host1&rdquo; and two on the machine named &ldquo;host2&rdquo;:</span></p>
<p style="margin-left:30px;">mpiexec &ndash;hosts 2 host1 1 host2 2 &ndash;wdir C:\MpiTests -pwd &lt;password&gt; -savecreds mpiapp.exe [parameters]<span style="font-family:Times New Roman;font-size:medium;"><br /></span></p>
<p><span style="font-family:Times New Roman;font-size:medium;">Once you run mpiexec with the <strong>-savecreds</strong> option on a set of nodes, you will not have to provide the password on subsequent runs for those nodes unless the password is changed. If the user is running in interactive mode, mpiexec will prompt for the password if the launch service is running&nbsp;and the password has not been provided or previously saved with the <strong>-savecreds</strong> option.</span></p>
<p><span style="font-family:times new roman,times;font-size:medium;">These are the options you can pass to the launch service at service start:</span></p>
<p style="margin-left:30px;">-p | -port &lt;port&gt; Change the port that launch service is listening on.</p>
<p style="margin-left:30px;">-g | -group &lt;group name&gt; Only allow members of the specified group to run MPI applications.&nbsp; If not specified, the default is authenticated users.</p>
<p><span style="font-size:medium;"><span style="font-family:Times New Roman;"><strong>Important:</strong> This software is a pre-release version for evaluation purposes only, and it should not be used in a production environment. Features and behavior&nbsp;may change before the final release.</span></span></p>
<p><span style="font-size:medium;"><span style="font-family:Times New Roman;"><strong>Note:</strong> The SDK components for MS-MPI (headers and libraries) ship separately from the redistributable package binary files. The SDK components are also available in this Beta release.</span></span></p>
<p><span style="font-family:times new roman,times;font-size:medium;">To learn more about MS-MPI and ways to contact us, see <a title="https://go.microsoft.com/fwlink/?LinkId=510089" href="https://go.microsoft.com/fwlink/?LinkId=510089" target="_blank"><span style="color:#0563c1;">Microsoft MPI</span></a> on MSDN</span></p>
<p></p>]]></content:encoded>
    </item>
  </channel>
</rss>