Ponto a ponto com NWChemEnd-to-end with NWChem

Neste artigo, você vai percorrer um exemplo de obter contagens de portão para simulação de química quântica, a partir de um deck de entrada NWChem.In this article, you will walk through an example of getting gate counts for quantum chemistry simulation, starting from an NWChem input deck. Antes de prosseguir com este exemplo, certifique-se de que instalou o Docker, seguindo o guia de instalação e validação.Before proceeding with this example, make sure that you've installed Docker, following the installation and validation guide.

Para obter mais informações:For more information:

Nota

Este exemplo requer que o Windows PowerShell Core seja executado.This example requires Windows PowerShell Core to run. Descarregue PowerShell Core para Windows, macOS ou Linux em https://github.com/PowerShell/PowerShell .Download PowerShell Core for Windows, macOS, or Linux at https://github.com/PowerShell/PowerShell.

Importar Módulos PowerShell necessáriosImporting Required PowerShell Modules

Se ainda não o fez, clone o repositório Microsoft/Quantum,que contém amostras e utilitários para trabalhar com o Kit de Desenvolvimento Quântico:If you haven't already done so, clone the Microsoft/Quantum repository, which contains samples and utilities for working with the Quantum Development Kit:

git clone https://github.com/Microsoft/Quantum

Depois de Microsoft/Quantum clonado, execute na pasta e cd utilities/ importe o módulo PowerShell para trabalhar com Docker e NWChem:Once you've cloned Microsoft/Quantum, perform cd into the utilities/ folder and import the PowerShell module for working with Docker and NWChem:

cd utilities
Import-Module InvokeNWChem.psm1

Nota

Por predefinição, o Windows impede o funcionamento de quaisquer scripts ou módulos como medida de segurança.By default, Windows prevents the running of any scripts or modules as a security measure. Para permitir que os módulos, como Invoke-NWChem.psm1 o Windows, possam ter de alterar a política.To allow modules such as Invoke-NWChem.psm1 to run on Windows, you may need to change the policy. Para tal, executar o Set-ExecutionPolicy comando:To do so, run the Set-ExecutionPolicy command:

Set-ExecutionPolicy RemoteSigned -Scope Process

A apólice reverterá quando sair do PowerShell.The policy will revert when you exit PowerShell. Se quiser guardar a apólice, use um valor diferente -Scope para:If you would like to save the policy, use a different value for -Scope:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Deve agora ter o Convert-NWChemToBroombridge comando disponível:You should now have the Convert-NWChemToBroombridge command available:

Get-Command -Module InvokeNWChem

Em seguida, importaremos o Get-GateCount comando fornecido com a amostra GetGateCount.Next, we'll import the Get-GateCount command provided with the GetGateCount sample. Para obter todos os detalhes, consulte as instruções fornecidas com a amostra.For full details, see the instructions provided with the sample. Em seguida, executar o seguinte, substituindo <runtime> por qualquer win10-x64 , osx-x64 linux-x64 ou, dependendo do seu sistema operativo:Next, run the following, substituting <runtime> with either win10-x64, osx-x64, or linux-x64, depending on your operating system:

cd ../Chemistry/GetGateCount
dotnet publish --self-contained -r <runtime>
Import-Module ./bin/Debug/netcoreapp2.1/<runtime>/publish/get-gatecount.dll

Deve agora ter o Get-GateCount comando disponível:You should now have the Get-GateCount command available:

Get-Command Get-GateCount

Decks de entradaInput Decks

O pacote NWChem requer um ficheiro de texto chamado deck de entrada que especifica um problema de química quântica a ser resolvido, juntamente com outros parâmetros, tais como definições de atribuição de memória.The NWChem package takes a text file called an input deck which specifies a quantum chemistry problem to be solved, along with other parameters such as memory allocation settings. Para este exemplo, vamos usar um dos decks de entrada pré-fabricados que vem com o NWChem.For this example, we'll use one of the pre-made input decks that comes with NWChem. Primeiro, clone o repositório nwchemgit/nwchem:First, clone the nwchemgit/nwchem repository:

Nota

Uma vez que este é um repositório muito grande, podemos fazer um clone raso para salvar alguma largura de banda e espaço em disco, usando o --depth 1 argumento.Since this is a very large repository, we can do a shallow clone to save some bandwidth and disk space, using the --depth 1 argument. Isto é opcional, no entanto.This is optional, however. A clonagem funcionará bem --depth 1 sem.Cloning will work just fine without --depth 1.

git clone https://github.com/nwchemgit/nwchem --depth 1

O nwchemgit/nwchem repositório vem com uma variedade de decks de entrada destinados a ser utilizados com o Kit de Desenvolvimento Quântico, listados sob a QA/chem_library_tests pasta.The nwchemgit/nwchem repository comes with a variety of input decks intended for use with the Quantum Development Kit, listed under the QA/chem_library_tests folder. Para este exemplo, usaremos o H4 deck de entrada:For this example, we'll use the H4 input deck:

cd nwchem/QA/chem_library_tests/H4
Get-Content h4_sto6g_0.000.nw

A molécula em questão é um sistema de 4 átomos de hidrogénio que estão dispostos numa certa geometria que depende de um ângulo, o parâmetro alpha como indicado no nome do h4_sto6g_alpha.nw convés.The molecule in question is a system of 4 hydrogen atoms that are arranged in a certain geometry that depends on one angle, the parameter alpha as indicated in the name h4_sto6g_alpha.nw of the deck. H4 é uma referência molecular conhecida para a química computacional desde a década de 1970.H4 is a known molecular benchmark for computational chemistry since the 1970s. O parâmetro sto6g é indicativo de que o convés implementa uma representação no que diz respeito a um orbital do tipo Slater, especificamente, uma representação no que diz respeito a uma base STO-nG definida com 6 funções base gaussianas.The parameter sto6g is indicative that the deck implements a representation with respect to a Slater-type orbital, specifically, a representation with respect to an STO-nG basis set with 6 Gaussian basis functions. Este deck de entrada contém ainda várias instruções para o motor de contração de tensores NWChem (TCE) que direcionam a NWChem para produzir as informações necessárias para a interoperação com o Kit de Desenvolvimento Quântico:This input deck furthermore contains several instructions to the NWChem Tensor Contraction Engine (TCE) that direct NWChem to produce the information needed for interoperating with the Quantum Development Kit:

...
set tce:print_integrals T
set tce:qorb 18
set tce:qela  9
set tce:qelb  9

Produção e consumo de produção de Broombridge da NWChemProducing and Consuming Broombridge Output from NWChem

Agora tem tudo o que precisa para produzir e consumir documentos de Broombridge.You now have everything you need to produce and consume Broombridge documents. Para executar o NWChem e produzir um documento broombridge para o h4_sto6g_0.000.nw deck de entrada, Convert-NWChemToBroombridge corra:To run NWChem and produce a Broombridge document for the h4_sto6g_0.000.nw input deck, run Convert-NWChemToBroombridge:

Nota

A primeira vez que executar este comando, o Docker descarregará a nwchemorg/nwchem-qc imagem por si.The first time you run this command, Docker will download the nwchemorg/nwchem-qc image for you. Isto pode demorar um pouco, dependendo da velocidade de ligação, possivelmente proporcionando uma oportunidade para tomar um café.This may take a little while, depending on your connection speed, possibly providing an opportunity to get a cup of coffee.

Convert-NWChemToBroombridge h4_sto6g_0.000.nw 

Isto irá produzir um documento de Broombridge chamado h4_sto6g_0.000.yaml que pode usar Get-GateCount com:This will produce a Broombridge document called h4_sto6g_0.000.yaml that you can use with Get-GateCount:

Get-GateCount -Format YAML h4_sto6g_0.000.yaml

Deve agora ver a saída da consola que contém estimativas de recursos tais como contagem de recursos, contagem de rotações, contagem de CNOT, etc. para vários métodos de simulação quântica:You should now see console output which contains resource estimation such as T-count, rotations count, CNOT count, etc. for various quantum simulation methods:

IntegralDataPath    : C:\Users\martinro\REPOS\nwchem\qa\chem_library_tests\h4\h4_sto6g_0.000.yaml
HamiltonianName     : hamiltonian_0
SpinOrbitals        : 8
Method              : Trotter
TCount              : 0
RotationsCount      : 92
CNOTCount           : 520
ElapsedMilliseconds : 327

IntegralDataPath    : C:\Users\martinro\REPOS\nwchem\qa\chem_library_tests\h4\h4_sto6g_0.000.yaml
HamiltonianName     : hamiltonian_0
SpinOrbitals        : 8
Method              : Qubitization
TCount              : 438
RotationsCount      : 516
CNOTCount           : 2150
ElapsedMilliseconds : 528

IntegralDataPath    : C:\Users\martinro\REPOS\nwchem\qa\chem_library_tests\h4\h4_sto6g_0.000.yaml
HamiltonianName     : hamiltonian_0
SpinOrbitals        : 8
Method              : Optimized Qubitization
TCount              : 3540
RotationsCount      : 18
CNOTCount           : 7932
ElapsedMilliseconds : 721

Há muitas coisas a fazer a partir daqui:There are many things to go do from here:

  • Experimente diferentes decks de entrada predefinidos, por exemplo, variando o parâmetro alpha em h4_sto6g_alpha.nw ,Try out different predefined input decks, e.g., by varying the parameter alpha in h4_sto6g_alpha.nw,
  • Tente modificar os decks editando diretamente os decks NWChem, por exemplo, explorando STO-nG modelos para várias escolhas de n,Try modifying the decks by editing the NWChem decks directly, e.g., exploring STO-nG models for various choices of n,
  • Experimente outros decks de entrada NWChem pré-definidos que estão disponíveis em nwchem/qa/chem_library_tests ,Try other predefined NWChem input decks that are available at nwchem/qa/chem_library_tests,
  • Experimente um conjunto de referências YAML pré-definidas de Broombridge que foram geradas a partir da NWChem e estão disponíveis como parte do repositório Microsoft/Quantum.Try out a suite of predefined Broombridge YAML benchmarks that were generated from NWChem and are available as part of the Microsoft/Quantum repository. Estes critérios de referência incluem:These benchmarks include:
    • pequenas moléculas como o hidrogénio molecular (H2), Beryllium (Be), o hino de lítio (LiH),small molecules such as molecular hydrogen (H2), Beryllium (Be), Lithium hydride (LiH),
    • moléculas maiores como o ozono (O3), beta-caroteno, citosina, e muito mais.larger molecules such as ozone (O3), beta-carotene, cytosine, and many more.
  • Experimente as setas EMSL frontais gráficas que apresentam uma interface com o Microsoft Quantum Development Kit.Try out the graphical front-end EMSL Arrows that features an interface to the Microsoft Quantum Development Kit.

Produção de Broombridge Output a partir de Setas EMSLProducing Broombridge Output from EMSL Arrows

Para começar com as setas EMSL da frente baseadas na Web, navegue por um navegador aqui.To get started with web-based front end EMSL Arrows, navigate a browser here.

Nota

Executar Setas EMSL num navegador web requer que o JavaScript seja ativado.Running EMSL Arrows in a web browser requires JavaScript to be enabled. Consulte estas instruções sobre como ativar o JavaScript no seu navegador.Please refer to these instructions on how to enable JavaScript in your browser.

Primeiro, introduza uma molécula na caixa de consulta que diz Enter an esmiles, esmiles reaction, or other Arrows input, then push the "Run Arrows" button.First, enter a molecule in the query box that says Enter an esmiles, esmiles reaction, or other Arrows input, then push the "Run Arrows" button.

Pode introduzir muitas moléculas pelo seu nome coloquial, como "cafeína" em vez de "1,3,7-Trimethylxanthine".You can enter many molecules by their colloquial name, such as "caffeine" instead of "1,3,7-Trimethylxanthine".

Em seguida, clique no botão que diz theory{qsharp_chem} .Next, click the button that says theory{qsharp_chem}. Isto irá preencher ainda mais a caixa de consulta com uma instrução que dirá a corrida para exportar a produção no formato YAML de Broombridge.This will populate the query box further with an instruction that will tell the run to export output in the Broombridge YAML format.

Agora, relógio Run Arrows ligado.Now, clock on Run Arrows. Dependendo do tamanho da entrada, isto pode demorar um pouco.Depending on the size of the input, this might take a while. Ou, caso o modelo em particular já tenha sido calculado anteriormente, pode ser feito extremamente rápido, uma vez que apenas equivalerá a uma procura numa base de dados.Or, in case the particular model has already been computed before, it can be done extremely fast as it will only amount to a lookup in a database. Em qualquer dos casos, você será levado para uma nova página que contém uma infinidade de informações sobre a corrida particular de NWChem contra o convés especificado pela sua entrada.In either case, you will be taken to a new page that contains a plethora of information about the particular run of NWChem against the deck specified by your input.

Pode descarregar e guardar o ficheiro YAML de Broombridge a partir da secção que começa com o seguinte cabeçalho:You can download and save the Broombridge YAML file from the section that starts with the following header:

+==================================================+
||              Molecular Calculation             ||
+==================================================+

Id     = 48443

NWOutput = Link to NWChem Output (download)

Datafiles:
qsharp_chem.yaml-2018-10-23-14:37:42 (download)
...

Clique em download , que guarda uma cópia local com um nome de ficheiro único, como qsharp_chem48443.yaml (o nome em particular será diferente para cada execução).Click on download, which saves a local copy with a unique file name such as qsharp_chem48443.yaml (the particular name will be different for each run). Em seguida, pode processar este ficheiro como acima, por exemplo, comYou can then further process this file as above, e.g., with

Get-GateCount -Format YAML qsharp_chem48443.yaml

para obter contagem de recursos.to get resource counts.

Você pode desfrutar do construtor de moléculas 3D que pode ser acedido a partir do Arrows Entry - 3D Builder separador na página inicial em EMSL Arrows.You might enjoy the 3D molecule builder that can be accessed from the Arrows Entry - 3D Builder tab on the EMSL Arrows start page. Clicar na imagem 3D JSMol da molécula mostrada permitirá editá-la.Clicking the JSMol 3D picture of the shown molecule will let you allow to edit it. Pode mover átomos, arrastar os átomos para longe para que as suas distâncias inter-moleculares mudem, adicione/remova átomos, etc. Para cada uma destas escolhas, uma vez theory{qsharp_chem} adicionadas na caixa de consulta, podes então gerar uma instância do esquema YAML de Broombridge e explorá-la ainda mais utilizando a Biblioteca de Química Quântica.You can move atoms around, drag atoms apart so that their inter-molecular distances change, add/remove atoms, etc. For each of these choices, once you added theory{qsharp_chem} in the query box, you can then generate an instance of the Broombridge YAML schema and further explore it using the Quantum Chemistry Library.