-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Additional operations and test cases for Azure Quantum SDK #18239
Changes from all commits
23af574
9c635fc
4f1aafd
f4a8e20
4c03e6f
6ceb218
4066344
6a497a5
648fe78
80d4f2b
840ac69
5abaa22
4712c55
24a0559
8b6cddd
1598565
43e777f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
|
||
<PropertyGroup> | ||
<Description>Azure Quantum Jobs library samples</Description> | ||
<AssemblyTitle>Azure Quantum Jobs Samples</AssemblyTitle> | ||
<Version>1.0.0-beta.1</Version> | ||
<PackageTags>Azure;Quantum;Quantum Jobs</PackageTags> | ||
<TargetFrameworks>$(RequiredTargetFrameworks)</TargetFrameworks> | ||
<OutputType>Exe</OutputType> | ||
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
<ProjectReference Include="..\src\Azure.Quantum.Jobs.csproj" /> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<PackageReference Include="Azure.Identity" /> | ||
<PackageReference Include="Azure.Storage.Blobs" /> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<None Update="problem.json"> | ||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||
</None> | ||
</ItemGroup> | ||
|
||
</Project> |
Original file line number | Diff line number | Diff line change | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,144 @@ | ||||||||||||||||||
// Copyright (c) Microsoft Corporation. All rights reserved. | ||||||||||||||||||
// Licensed under the MIT License. | ||||||||||||||||||
|
||||||||||||||||||
using System; | ||||||||||||||||||
using System.Linq; | ||||||||||||||||||
using Azure.Identity; | ||||||||||||||||||
using Azure.Quantum.Jobs.Models; | ||||||||||||||||||
using Azure.Storage.Blobs; | ||||||||||||||||||
|
||||||||||||||||||
namespace Azure.Quantum.Jobs.Samples | ||||||||||||||||||
{ | ||||||||||||||||||
public static class Program | ||||||||||||||||||
{ | ||||||||||||||||||
public static void Main(string[] args) | ||||||||||||||||||
{ | ||||||||||||||||||
#region Snippet:Azure_Quantum_Jobs_CreateClient | ||||||||||||||||||
// Create a QuantumJobClient | ||||||||||||||||||
var subscriptionId = "your_subscription_id"; | ||||||||||||||||||
var resourceGroupName = "your_resource_group_name"; | ||||||||||||||||||
var workspaceName = "your_quantum_workspace_name"; | ||||||||||||||||||
var location = "your_location"; | ||||||||||||||||||
var storageContainerName = "your_container_name"; | ||||||||||||||||||
var credential = new DefaultAzureCredential(true); | ||||||||||||||||||
|
||||||||||||||||||
var quantumJobClient = | ||||||||||||||||||
new QuantumJobClient( | ||||||||||||||||||
subscriptionId, | ||||||||||||||||||
resourceGroupName, | ||||||||||||||||||
workspaceName, | ||||||||||||||||||
location, | ||||||||||||||||||
credential); | ||||||||||||||||||
#endregion | ||||||||||||||||||
|
||||||||||||||||||
Console.WriteLine($@"Created QuantumJobClient for: | ||||||||||||||||||
SubscriptionId: {subscriptionId} | ||||||||||||||||||
ResourceGroup: {resourceGroupName} | ||||||||||||||||||
workspaceName: {workspaceName} | ||||||||||||||||||
location: {location} | ||||||||||||||||||
"); | ||||||||||||||||||
|
||||||||||||||||||
Console.WriteLine($@"Getting Container Uri with SAS key..."); | ||||||||||||||||||
|
||||||||||||||||||
#region Snippet:Azure_Quantum_Jobs_GetContainerSasUri | ||||||||||||||||||
// Get container Uri with SAS key | ||||||||||||||||||
var containerUri = (quantumJobClient.GetStorageSasUri( | ||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What's the type of |
||||||||||||||||||
new BlobDetails(storageContainerName))).Value.SasUri; | ||||||||||||||||||
#endregion | ||||||||||||||||||
|
||||||||||||||||||
Console.WriteLine($@"Container Uri with SAS key: | ||||||||||||||||||
{containerUri} | ||||||||||||||||||
"); | ||||||||||||||||||
|
||||||||||||||||||
Console.WriteLine($@"Creating Container if not exist..."); | ||||||||||||||||||
|
||||||||||||||||||
// Create container if not exists | ||||||||||||||||||
var containerClient = new BlobContainerClient(new Uri(containerUri)); | ||||||||||||||||||
containerClient.CreateIfNotExists(); | ||||||||||||||||||
|
||||||||||||||||||
Console.WriteLine($@"Uploading data into a blob..."); | ||||||||||||||||||
|
||||||||||||||||||
#region Snippet:Azure_Quantum_Jobs_UploadInputData | ||||||||||||||||||
// Get input data blob Uri with SAS key | ||||||||||||||||||
string blobName = $"myjobinput.json"; | ||||||||||||||||||
var inputDataUri = (quantumJobClient.GetStorageSasUri( | ||||||||||||||||||
new BlobDetails(storageContainerName) | ||||||||||||||||||
{ | ||||||||||||||||||
BlobName = blobName, | ||||||||||||||||||
})).Value.SasUri; | ||||||||||||||||||
Comment on lines
+64
to
+68
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Style nit - remove all these extra parens around the method calls and change your indentation to look more like
Suggested change
|
||||||||||||||||||
|
||||||||||||||||||
// Upload input data to blob | ||||||||||||||||||
var blobClient = new BlobClient(new Uri(inputDataUri)); | ||||||||||||||||||
var problemFilename = "problem.json"; | ||||||||||||||||||
blobClient.Upload(problemFilename, overwrite: true); | ||||||||||||||||||
#endregion | ||||||||||||||||||
|
||||||||||||||||||
Console.WriteLine($@"Input data Uri with SAS key: | ||||||||||||||||||
{inputDataUri} | ||||||||||||||||||
"); | ||||||||||||||||||
|
||||||||||||||||||
Console.WriteLine($@"Creating Quantum job..."); | ||||||||||||||||||
|
||||||||||||||||||
#region Snippet:Azure_Quantum_Jobs_CreateJob | ||||||||||||||||||
// Submit job | ||||||||||||||||||
var jobId = $"job-{Guid.NewGuid():N}"; | ||||||||||||||||||
var jobName = $"jobName-{Guid.NewGuid():N}"; | ||||||||||||||||||
var inputDataFormat = "microsoft.qio.v2"; | ||||||||||||||||||
var outputDataFormat = "microsoft.qio-results.v2"; | ||||||||||||||||||
var providerId = "microsoft"; | ||||||||||||||||||
var target = "microsoft.paralleltempering-parameterfree.cpu"; | ||||||||||||||||||
var createJobDetails = new JobDetails(containerUri, inputDataFormat, providerId, target) | ||||||||||||||||||
{ | ||||||||||||||||||
Id = jobId, | ||||||||||||||||||
InputDataUri = inputDataUri, | ||||||||||||||||||
Name = jobName, | ||||||||||||||||||
OutputDataFormat = outputDataFormat | ||||||||||||||||||
}; | ||||||||||||||||||
JobDetails createdJob = (quantumJobClient.CreateJob(jobId, createJobDetails)).Value; | ||||||||||||||||||
#endregion | ||||||||||||||||||
|
||||||||||||||||||
Console.WriteLine($@"Job created: | ||||||||||||||||||
Id: {createdJob.Id} | ||||||||||||||||||
Name: {createdJob.Name} | ||||||||||||||||||
CreationTime: {createdJob.CreationTime} | ||||||||||||||||||
Status: {createdJob.Status} | ||||||||||||||||||
"); | ||||||||||||||||||
|
||||||||||||||||||
Console.WriteLine($@"Getting Quantum job..."); | ||||||||||||||||||
|
||||||||||||||||||
#region Snippet:Azure_Quantum_Jobs_GetJob | ||||||||||||||||||
// Get the job that we've just created based on its jobId | ||||||||||||||||||
JobDetails myJob = (quantumJobClient.GetJob(jobId)).Value; | ||||||||||||||||||
#endregion | ||||||||||||||||||
|
||||||||||||||||||
Console.WriteLine($@"Job obtained: | ||||||||||||||||||
Id: {myJob.Id} | ||||||||||||||||||
Name: {myJob.Name} | ||||||||||||||||||
CreationTime: {myJob.CreationTime} | ||||||||||||||||||
Status: {myJob.Status} | ||||||||||||||||||
BeginExecutionTime: {myJob.BeginExecutionTime} | ||||||||||||||||||
EndExecutionTime: {myJob.EndExecutionTime} | ||||||||||||||||||
CancellationTime: {myJob.CancellationTime} | ||||||||||||||||||
OutputDataFormat: {myJob.OutputDataFormat} | ||||||||||||||||||
OutputDataUri: {myJob.OutputDataUri} | ||||||||||||||||||
"); | ||||||||||||||||||
|
||||||||||||||||||
Console.WriteLine($@"Getting list of Quantum jobs..."); | ||||||||||||||||||
|
||||||||||||||||||
#region Snippet:Azure_Quantum_Jobs_GetJobs | ||||||||||||||||||
// Get all jobs from the workspace (.ToList() will force all pages to be fetched) | ||||||||||||||||||
var allJobs = quantumJobClient.GetJobs().ToList(); | ||||||||||||||||||
matusthemostlygreat marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||
#endregion | ||||||||||||||||||
|
||||||||||||||||||
Console.WriteLine($"{allJobs.Count} jobs found. Listing the first 10..."); | ||||||||||||||||||
foreach (JobDetails job in allJobs.Take(10)) | ||||||||||||||||||
{ | ||||||||||||||||||
Console.WriteLine($" {job.Name}"); | ||||||||||||||||||
} | ||||||||||||||||||
Console.WriteLine(); | ||||||||||||||||||
|
||||||||||||||||||
Console.WriteLine("Press [Enter] to exit..."); | ||||||||||||||||||
Console.ReadLine(); | ||||||||||||||||||
} | ||||||||||||||||||
} | ||||||||||||||||||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
{ | ||
"cost_function": { | ||
"version": "1.0", | ||
"type": "ising", | ||
"terms": [ | ||
{ | ||
"c": -3, | ||
"ids": [ 1, 0 ] | ||
}, | ||
{ | ||
"c": 5, | ||
"ids": [ 2, 0 ] | ||
}, | ||
{ | ||
"c": 9, | ||
"ids": [ 2, 1 ] | ||
}, | ||
{ | ||
"c": 2, | ||
"ids": [ 3, 0 ] | ||
}, | ||
{ | ||
"c": -4, | ||
"ids": [ 3, 1 ] | ||
}, | ||
{ | ||
"c": 4, | ||
"ids": [ 3, 2 ] | ||
} | ||
] | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This doesn't block preview, but these should be changed to unit tests or we'll never run them.