Challenges
Datasets
Workspaces
Papers
Discussions
Leaderboard
Log inSign up
Challenges
Datasets
Workspaces
Papers
Discussions
Leaderboard
Blog
Job Board
Q3AS

© 2026 Aqora Quantum S.A.S.

TermsPrivacyLegal Notice

Proceeding Series of the Brazilian Society of Computational and Applied Mathematics

Descrição em VHDL de algoritmos quânticos

Pedro Henrique G. Marchi, Renata Reiser, Mauricio Lima Pilla

Published Aug 25, 2015• 0 citations
Publisher

Abstract

Relevantes aplicações do VHDL (VHSIC Hardware Description Language) [4] estão no campo da programação de dispositivos lógicos como FPGA e das aplicações específicas de circuitos integrados ASICs (Application Specific Integrated Circuits). Ao contrário da programação essencialmente baseada em computações sequenciais, no VHDL a programação é concorrente. Ao evitar a limitação gerada pelo acesso à memória sequencial, torna-se uma linguagem atrativa para execução de algoritmos paralelos. Pela geração do código VHDL e aplicação de FPGAs, tem-se uma opção para gerar um aumento significativo na velocidade e no número de qubits quando da simulação quântica, fornecendo uma alternativa de análise e desenvolvimento de algoritmos quânticos. Assim, a motivação para uso de VHDL neste trabalho é buscar uma descrição dos circuitos quânticos a partir dos padrões estabelecidos para os circuitos clássicos. A principal contribuição na atual etapa de trabalho, é viabilizar a simulação do paralelismo quântico associada às portas unitárias que compõem um conjunto universal para manipulação de circuitos quânticos. Em particular, uma biblioteca de métodos para especificação de coeficientes, os quais são definidos por números complexos normalizados, está em desenvolvimento incluindo operações aritméticas e considerando a representação polar, baseada no módulo e ângulo. O principal objetivo é o desenvolvimento de uma extensão da biblioteca qEx-VHDL, pela construção de um módulo qEx-VHDL-FP, contendo funções específicas para manipulação de qubits e portas lógicas unidimensionais [1], [2]. Se um bit de informação pode armazenar um dos dois valores 0 ou 1, um registrador clássico de n bits pode armazenar um conjunto de 2n elementos ({0, 1, ..., 2n-1}) por vez. No computador quântico, a unidade básica de informação é o qubit, interpretado por um vetor bidimensional do espaço de Hilbert, o qual é definido como um espaço vetorial complexo munido do produto interno [Nielsen e Chuang 2000]. Além de armazenar 0 ou 1, o qubit também armazena a superposição de ambos 0 e 1. Assim, a representação de um qubit na representação de Dirac é dada pela expressão Ψ α 0 β 1 , onde α e β são as amplitudes dos estados básicos, números complexos normalizados ( 1). Mais especificamente, α(ρα,θα) e β(ρβ,θβ) são a representação polar definida pelo módulo e ângulo dos respectivos coeficientes do qubit Ψ . A transformação dos possíveis estados de registradores quânticos pode ser modelada por operadores unitários, referidos como portas quânticas. Tais dispositivos quânticos podem executar uma operação unitária fixada, sobre qubits selecionados, em período determinado no tempo. Um operador unitário U é interpretado como uma matriz unitária U. Operadores quânticos de um qubit são denominados portas elementares. Outras operações não unitárias são operadores de controle e medida (neste caso, interpretadas por projeções do vetor correspondente ao qubit sobre um par de subespaços ortogonais) [3]. Para a realização dos cálculos, consideramos o número complexo a na notação polar, (cos ) , sendo indicando o módulo e o ângulo correspondente. Essa notação reduz significativamente o número de cálculos em algumas operações se comparada com a notação algébrica. Nas operações de multiplicação e exponenciação, tem-se: (cos ( ) ( )); (cos () ()). Nesta representação são realizados cálculos apenas sobre os valores do módulo e do ângulo de cada um dos complexos. Estas vantagens que se aplicam na etapa de modelagem dos dados também são estendidas na especificação em VHDL, pois é possível fazer uma descrição simplificada, e consequentemente, a geração de hardware mais simples para executar as operações (aritméticas). Na Figura 1, análoga às demais operações, tem-se os cálculos da multiplicação, que foram otimizados em apenas um operador e a implementação dos valores utiliza um sistema de Ponto Flutuante, com precisão de 32 bits, 1 bit de sinal, expoentes de 8 bits e mantissa de 23 bits. Figura 1: Biblioteca qEx-VHDL-FP – Multiplicações de Complexos

DOI
10.5540/03.2015.003.01.0090

Related papers

Simulação de um Algoritmo quântico, com Transformadas de Fourier quânticas

André Paulo Pires Miranda Ferreira da Silva

Computação quântica é uma área de grande desenvolvimento hoje em dia e isso traz uma necessidade para desenvolver hardware e software. Uma vez que o hardware disponível é muito pouco e o software precisa de ser testado, existe uma necessidade de uma boa plataforma para testar as soluções de software. Simular um computador quântico num computador clássico não é ideal, contudo é uma resposta viável a esta necessidade, para um pequeno número de qubits. Além disso, os computadores quânticos necessitam dos computadores clássicos de forma a criar um sistema real prático, isto apresenta-se como uma excelente oportunidade para testar técnicas de programação clássica para melhorar a programação quântica. Esta tese propõe o uso de programação clássica para melhorar a implementação de um algoritmo de adição modular usando transformadas de Fourier quânticas. Os principais objectivos deste trabalho são: simular um circuito quântico; testar um algoritmo quântico e compará-lo com o seu equivalente clássico; implementar o algoritmo de adição modular, usando as capacidades de aceleração de computação das transformadas de Fourier quânticas e optimizá-lo; Testar e implementar códigos quânticos de correcção de erros; fazer um teste num computador quântico real.De forma a testar a linguagem e comparar um algoritmo quântico com um clássico, fez-se um teste ao algoritmo de Shor que está disponível de raiz na plataforma liquid. Apesar do algoritmo de Shor ter, teoricamente, uma dependência de tipo polinomial com a dimensão do problema, os testes realizados mostraram que o tempo de computação tem um comportamento exponencial. Simular um algoritmo quântico num computador clássico requer tempo de computação que cresce de forma exponencial, pois é necessário armazenar e processar todos os estados do sistema, que é um espaço de Hilbert de dimensão 2^n.O algoritmo de adição modular usando transformadas de Fourier quânticas foi implementado na plataforma liquid. Seguidamente fizeram-se melhorias e optimizações. O número de operações teórico é O(n^2). Contudo, depois de fazer melhorias ao circuito, removendo gates desnecessárias para casos específicos, o número de operações passa a ter um valor mínimo de Omega(n). Com este tipo de alterações o sistema pode apresentar melhorias no que respeito ao tempo de simulação até um factor de ordem 10. Isto mostra que programar um algoritmo quântico tendo em conta casos específicos pode melhorar imenso o desempenho da simulação.Os códigos de correção de erros quânticos foram implementados num circuito simples, com as ferramentas disponíveis na plataforma liquid, e obteve-se um sistema que consegue lidar com erros com probabilidade inferior ou igual a 2%, com uma taxa de sucesso na sua correção de 95%. Contudo são necessários circuitos muito grandes, pouco exequíveis.A plataforma disponibilizada pela IBM para fazer testes num computador quântico real, foi utilizada para testar o algoritmo de adição modular e adição normal (com carry bit). Uma vez que esta plataforma tem um número limitado de gates, reforça a ideia de que se deve otimizar os algoritmos tendo em conta casos particulares. Os resultados destes testes mostram também que é importante utilizar correcção de erros quânticos, mas para que isso seja viável é necessário que haja mais qubits disponíveis ou outro tipo de códigos.

•Oct 10, 2018•0 citations

Aplicações de uma estrutura algébrica Q-Deformada em teoria da informação: portas quânticas generalizadas

Reinan Bezerra da Silva Santos, Bruno Gomes da Costa

Em computação quântica e especificamente na modelagem de circuitos quânticos de computação, uma porta lógica quântica (ou simplesmente porta quântica) é um circuito quântico básico que opera sobre um pequeno número de qubits, que são as unidades básicas de informação constituída por um sistema quântico de dois estados. Estes são os alicerces de construção de circuitos quânticos da mesma forma que as portas lógicas clássicas são para os circuitos digitais convencionais. No presente trabalho, pretendemos investigar aplicações da mecânica quântica não linear q-deformada em computação quântica, assim como a construção de suas portas lógicas quânticas que possam descrever fenômenos de interesse da comunidade científica nas áreas de computação quântica, teoria quântica, entre outras. Para a escrita dos trabalhos, utilizamos a linguagem de programação LaTeX, e para o desenvolvimento de gráficos ou resoluções de equações diferenciais, fizemos o uso da linguagem de programação Python. Para isso, promovemos estudos sobre alguns tópicos de computação quântica, álgebras generalizadas, linguagem de programação Python, entre outros. Nesta etapa do projeto, consideramos as seguintes referências bibliográficas: computação quântica, álgebra q-deformada, mecânica quântica não linear, circuitos quânticos, fenômenos de decoerência quântica, e etc. e promover as suas aplicações na construção do projeto, a fim de obter resultados que auxiliem a outros pesquisadores destes tópicos de pesquisa. Foram criados circuitos e analisamos a sua entropia em relação ao parâmetro de deformação algébrico q, analisamos também a taxa de variação da modificação dos estados e das probabilidades de estados dos qubits presentes nos circuitos simulados, sendo estudados também as plotagens acerca das funções generalizadas presentes nos artigos que foram usados como base neste trabalho e projeto. e para uma melhor consolidação dos resultados, criamos uma biblioteca no python que nos auxiliou no trabalho. Foi percebido que usando a matemática não usual presente nos artigos acerca da álgebra q-deformada, o parâmetro q consegue ter um enorme controle de entropia e velocidade de convergência do circuito quântico deformado em alguns respectivos algoritmos quânticos. Vendo que a sua velocidade de convergência pode ser modificada, para maior ou menor do que a usual, verifica-se aqui a extrema importância do parâmetro q em simulações e convergências de resultados acerca dos temas aqui trabalhados.

Jornada de Iniciação Científica e Extensão•Nov 10, 2021•0 citations

Estruturando computaçõoes quânticas gerais e completas em Haskell : abordagem das setas

Juliana Kaizer Vizzotto

Computaçãao quântica pode ser entendida como transformação da informação codificada no estado de um sistema físico quântico. A idéia básica da computação quântica é codificar dados utilizando bits quânticos (qubits). Diferentemente do bit clássico, o qubit pode existir em uma superposição dos seus estados básicos permitindo o “paralelismo quântico”, o qual é uma característica importante da computação quântica visto que pode aumentar consideravelmente a velocidade de processamento dos algoritmos. Entretanto, tipos de dados quânticos são bastante poderosos não somente por causa da superposição de estados. Existem outras propriedades ímpares como medida e emaranhamento. Nesta tese, nós discutimos que um modelo realístico para computações quânticas deve ser geral com respeito a medidas, e completo com respeito a comunicação entre o mundo quântico e o mundo clássico. Nós, então, explicamos e estruturamos computações quânticas gerais e completas em Haskell utilizando construções conhecidas da área de semântica e linguagens de programação clássicas, como mônadas e setas. Em mais detalhes, esta tese se concentra nas seguintes contribuições. Mônadas e Setas. Paralelismo quântico, emaranhamento e medida quântica certamente vão além do escopo de linguagens funcionais “puras”. Nós mostramos que o paralelismo quântico pode ser modelado utilizando-se uma pequena generalização de mônadas, chamada mônadas indexadas ou estruturas Kleisli. Além disso, nós mostramos que a medida quântica pode ser explicada utilizando-se uma generalização mais radical de mônadas, as assim chamadas setas, mais especificamente, setas indexadas, as quais definimos nesta tese. Este resultado conecta características quânticas “genéricas” e “completas” `a construções semânticas de linguagens de programação bem fundamentadas. Entendendo as Interpretações da Mecânica Quântica como Efeitos Computacionais. Em um experimento hipotético, Einstein, Podolsky e Rosen demonstraram algumas consequências contra-intuitivas da mecânica quântica. A idéia básica é que duas partículas parecem sempre comunicar alguma informação mesmo estando separadas por uma distância arbitrariamente grande. Existe muito debate e muitos artigos sobre esse tópico, mas é interessante notar que, como proposto por Amr Sabry, essas características estranhas podem ser essencialmente modeladas por atribuições a variáveis globais. Baseados nesta idéia nós modelamos este comportamento estranho utilizando noções gerais de efeitos computacionais incorporados nas noções de mônadas e setas. Provando Propriedades de Programas Quânticos Utilizando Leis Algébricas. Nós desenvolvemos um trabalho preliminar para fazer provas equacionais sobre algoritmos quânticos escritos em uma sublinguagem pura de uma linguagem de programação funcional quântica, chamada QML.

•Jan 1, 2006•0 citations

Uma arquitetura de co-processador para simulação de algoritmos quânticos em FPGA

Calebe Micael de Oliveira Conceicao

Simuladores quânticos têm tido um importante papel no estudo e desenvolvimento da computação quântica ao longo dos anos. A simulação de algoritmos quânticos em computadores clássicos é computacionalmente difícil, principalmente devido à natureza paralela dos sistemas quânticos. Para acelerar essas simulações, alguns trabalhos propõem usar hardware paralelo programável como FPGAs, o que diminui consideravelmente o tempo de execução. Contudo, essa abordagem tem três problemas principais: pouca escalabilidade, já que apenas transfere a complexidade do domínio do tempo para o domínio do espaço; a necessidade de re-síntese a cada mudança no algoritmo; e o esforço extra ao projetar o código RTL para simulação. Para lidar com esses problemas, uma arquitetura de um co-processador SIMD é proposta, cujas operações das portas quânticas está baseada no modelo Network of Butterflies. Com isso, eliminamos a necessidade de re-síntese com mudanças pequenas no algoritmo quântico simulado, e eliminamos a influência de um dos fatores que levam ao crescimento exponencial do uso de recursos da FPGA. Adicionamente, desenvolvemos uma ferramenta para geração automática do código RTL sintetizável do co-processador, reduzindo assim o esforço extra de projeto.

•Jan 1, 2013•0 citations

Structuring general and complete quantum computations in Haskell : the arrows approach

Juliana Kaizer Vizzotto

Computaçãao quântica pode ser entendida como transformação da informação codificada no estado de um sistema físico quântico. A idéia básica da computação quântica é codificar dados utilizando bits quânticos (qubits). Diferentemente do bit clássico, o qubit pode existir em uma superposição dos seus estados básicos permitindo o “paralelismo quântico”, o qual é uma característica importante da computação quântica visto que pode aumentar consideravelmente a velocidade de processamento dos algoritmos. Entretanto, tipos de dados quânticos são bastante poderosos não somente por causa da superposição de estados. Existem outras propriedades ímpares como medida e emaranhamento. Nesta tese, nós discutimos que um modelo realístico para computações quânticas deve ser geral com respeito a medidas, e completo com respeito a comunicação entre o mundo quântico e o mundo clássico. Nós, então, explicamos e estruturamos computações quânticas gerais e completas em Haskell utilizando construções conhecidas da área de semântica e linguagens de programação clássicas, como mônadas e setas. Em mais detalhes, esta tese se concentra nas seguintes contribuições. Mônadas e Setas. Paralelismo quântico, emaranhamento e medida quântica certamente vão além do escopo de linguagens funcionais “puras”. Nós mostramos que o paralelismo quântico pode ser modelado utilizando-se uma pequena generalização de mônadas, chamada mônadas indexadas ou estruturas Kleisli. Além disso, nós mostramos que a medida quântica pode ser explicada utilizando-se uma generalização mais radical de mônadas, as assim chamadas setas, mais especificamente, setas indexadas, as quais definimos nesta tese. Este resultado conecta características quânticas “genéricas” e “completas” `a construções semânticas de linguagens de programação bem fundamentadas. Entendendo as Interpretações da Mecânica Quântica como Efeitos Computacionais. Em um experimento hipotético, Einstein, Podolsky e Rosen demonstraram algumas consequências contra-intuitivas da mecânica quântica. A idéia básica é que duas partículas parecem sempre comunicar alguma informação mesmo estando separadas por uma distância arbitrariamente grande. Existe muito debate e muitos artigos sobre esse tópico, mas é interessante notar que, como proposto por Amr Sabry, essas características estranhas podem ser essencialmente modeladas por atribuições a variáveis globais. Baseados nesta idéia nós modelamos este comportamento estranho utilizando noções gerais de efeitos computacionais incorporados nas noções de mônadas e setas. Provando Propriedades de Programas Quânticos Utilizando Leis Algébricas. Nós desenvolvemos um trabalho preliminar para fazer provas equacionais sobre algoritmos quânticos escritos em uma sublinguagem pura de uma linguagem de programação funcional quântica, chamada QML.

•Jan 1, 2006•3 citations

Abordagem Paralela para Simulação Quântica no Modelo de Máquina Geométrica Quântica

Murilo Schmalfuss, Anderson Ávila, Renata Reiser +1 more

A Computação Quântica (CQ) [7] segue atingindo novos marcos rumo à construção de computadores quânticos. Apesar de todos os esforços, vários desafios técnicos limitam os sistemas atuais a alguns bits quânticos [10]. Pela indisponibilidade de hardware quântico, o estudo e desenvolvimento de aplicações na CQ usualmente é feito estritamente pela especificação matemática das computações ou por meio de ferramentas de simulação. Este último caracteriza a abordagem mais prática, entretanto a complexidade computacional associada a simulação de sistemas quânticos a partir de computadores clássicos limita o tamanho dos sistemas a serem simulados. O projeto no qual este trabalho está inserido busca consolidar a integração de vários esforços de pesquisa, com destaque para: (i) Distribuição das computações em cluster [2]; (ii)Simulação quântica através de GPUs [5]; (iii) Simulação quântica através de CPUs multicore. Atualmente situado sob o contexto do ambiente de simulação quântica VPE-qGM (Visual Programming Environment for the Quantum Geometric Machine Model), este trabalho tem o objetivo de estabelecer o suporte à aceleração da biblioteca de execução do ambiente através de processadores multicore, beneficiando-se dos recursos providos pela biblioteca OpenMP [3]. Consolida-se assim a biblioteca qGMC-Analyzer, com a implementação, desenvolvimento e validação de algoritmo para simulação quântica em arquiteturas multicore, cuja modelagem foi introduzida em [9]. O ambiente VPE-qGM, fundamentado no modelo de processos qGM (Quantum Geometric Machine Model) [8], é constitúıdo de construtores para modelagem e simulação gráfica de aplicações quânticas. De acordo com o modelo qGM, a noção de portas quânticas pode ser substitúıda pelo conceito de sincronização de processos elementares (PEs). No ambiente VPE-qGM, o PE é um elemento estruturado por três atributos: (i) Ação: Corresponde às transformações quânticas aplicadas a diferentes qubits em um mesmo instante de tempo; (ii) Parâmetros: Contém dados auxiliares associados à definição das transformações quânticas; (iii) Posição: Posição de escrita em um espaço de memória global e compartilhada, na qual é armazenado o resultado calculado pelo PE. Neste contexto, uma transformação quântica, aplicada a N qubits, pode ser modelada pela sincronização de 2N PEs, cujas parametrizações satisfazem as condições equivalentes à definição dos vetores componentes da matriz (transformação unitária ou de medida) associada [6]. Bolsista de Iniciação Científica PIBIC/CNPq †Bolsista de PROBIC/FAPERGS Assim, durante a simulação, ocorre a execução (sequencial ou síncrona) dos PEs, os quais têm suas correspondentes computações efetuadas pela biblioteca qGM-Analyzer, manipulando os dados presentes nas posições de memória e simulando o comportamento de um sistema quântico. A biblioteca de execução dos PEs, denominada qGM-Analyzer, implementa otimizações que controlam o aumento exponencial dos vetores componentes das matrizes de definição do operador de múltiplos qubits, conforme introduzido em [4]. Os resultados relacionados comprovam a redução no consumo de memória durante a simulação, suportando algoritmos com 11 qubits. Entretanto, o tempo total de simulação obtido permanece elevado, devido a quantidade de operações necessárias para simular uma transformação quântica. A implementação da biblioteca qGM-Analyzer em C segue as otimizações introduzidas em [4], apenas alterando as estruturas de dados utilizados e fazendo uso de recursos nativos oferecidos pela linguagem visando a otimização da execução. Visando a compatibilidade da biblioteca com o ambiente VPE-qGM, é considerada a biblioteca Boost 1.49.0 [1] para integração das duas linguagens envolvidas. Para a implementação do paralelismo foi utilizada A biblioteca OpenMP [3] implementa o paralelismo. O módulo Boost-Python auxiliou no desenvolvimento da biblioteca qGMC-Analyzer permitindo que sejam reutilizados no código C tipos do Python, como as listas de valores utilizadas no ambiente VPE-qGM, e ainda realizando a conversão destes tipos para tipos da linguagem C. Outra funcionalidade utilizada do módulo Boost-Python foi a geração da biblioteca compartilhada importada pelo ambiente em Python. A implementação em C manteve o mesmo algoritmo desenvolvido em [4], porém a forma de armazenamento dos dados e os algoritmos para acesso a esses dados foram modificados para diminuir a complexidade da biblioteca. Dentre os fatores que contribúıram para um melhor desempenho, destacam-se a utilização de vetores como alternativa as listas do Python e o fato de a linguagem C ser compilada, permitindo ao compilador otimizações no código gerado. Na implementação paralela, cada thread possui uma cópia privada da pilha, e as memórias de escrita e leitura são compartilhadas entre todos os threads, pois cada valor calculado é escrito em uma posição diferente da memória. A divisão dos threads é feita de forma a manter juntos os valores das matrizes necessários para o cálculo de uma posição. Para tal, iterações são divididas levando em conta o número de colunas da primeira matriz envolvida na transformação. Nos casos em que a transformação possui apenas uma matriz, os threads são divididos de forma diferente, para que o trabalho seja distribúıdo de forma balanceada. A definição do número de threads utilizadas pela biblioteca é definida por uma variável de ambiente (OMP NUM THREADS ), gerando uma implementação mais flexível. Ou seja, dependendo da transformação quântica, tem-se um controle da granulosidade visando melhor desempenho da biblioteca. Para validação e análise de desempenho da implementação da qGM-Analyzer em C, foram desenvolvidos estudos de caso envolvendo sincronizações arbitrárias de transformações quânticas, contemplando sistemas entre 13 e 20 qubits. A metodologia dos testes utilizada contempla, para cada estudo de caso, a realização de 15 simulações. A máquina utilizada na simulação possui as seguintes características: processador Intel Core i7-3770 @ 3.4 GHz, 8GB RAM e sistema operacional Ubuntu 12.04 64 bits. A principal comparação de desempenho se dá com a execução da biblioteca em diferentes números de threads. Os testes foram realizados com transformações Hadamards, representada por uma matriz densa de ordem 2n, onde n é o número de qubits e transformações Pauli X, uma matriz esparsa de ordem 2n. Estas execuções compreenderam duas etapas: (i) Geração dos valores não nulos associados ao correspondente vetor componente da matriz de definição da transformação quântica modelada; (ii) Multiplicação desses valores pelas amplitudes obtidas da estrutura de memória que modela o espaço de estados do sistema quântico. Nas simulações das Hadamards, devido ao elevado número de operações, pode-se facilmente observar um desempenho elevado, ou seja, o aumento no número de qubits diretamente relacionado com a diminuição significativa do tempo de execução. Nas transformações controladas Pauli X houve um aumento no tempo de execução. Justifica-se este fato pelo baixo número de operações enFigura 1: Tempos das transformações Hadamard e Pauli X em relação ao número de threads. volvidas. Sendo a Pauli X uma matriz esparsa, seus valores zerados não são computados pelo algoritmo otimizado, tornando o overhead da criação e troca de contexto dos threads o principal custo da transformação, como observado no decremento de desempenho da Figura da Pauli X. Os tempos de simulação, em cada estudo de caso, abrangendo os casos para 1, 2, 4 e 8 threads são descritos na Figura 1. Como analisado, os tempos de execução para as transformações Hadamards obtiveram os melhores desempenhos. As transformações Pauli X tiveram o seu tempo de execução aumentando conforme aumentava o número de threads, pois envolvem poucos cálculos, e seu tempo é dominado pela criação e troca de contexto dos threads. As otimizações realizadas e a implementação paralela representaram um ganho significativo no tempo de execução das transformações quânticas, permitindo a simulação de transformações de 18 qubits com elevado número de operações, como no caso das Hadamards. A continuidade do trabalho consiste na integração da biblioteca qGMC-Analyzer com o ambiente VPE-qGM além da expansão para suporte a transformações multiqubits e na implementação de aplicações em outras bibliotecas disponíveis, para comparação de desempenho entre diferentes ferramentas para suporte a simulação quântica.

Proceeding Series of the Brazilian Society of Computational and Applied Mathematics•Dec 11, 2014•0 citations
Relevantes aplicações do VHDL (VHSIC Hardware Description Language) [4] estão no campo da programação de dispositivos lógicos como FPGA e das aplicações específicas de circuitos integrados ASICs (Application Specific Integrated Circuits). Ao contrário da programação essencialmente baseada em computações sequenciais, no VHDL a programação é concorrente. Ao evitar a limitação gerada pelo acesso à memória sequencial, torna-se uma linguagem atrativa para execução de algoritmos paralelos. Pela geração do código VHDL e aplicação de FPGAs, tem-se uma opção para gerar um aumento significativo na velocidade e no número de qubits quando da simulação quântica, fornecendo uma alternativa de análise e desenvolvimento de algoritmos quânticos. Assim, a motivação para uso de VHDL neste trabalho é buscar uma descrição dos circuitos quânticos a partir dos padrões estabelecidos para os circuitos clássicos. A principal contribuição na atual etapa de trabalho, é viabilizar a simulação do paralelismo quântico associada às portas unitárias que compõem um conjunto universal para manipulação de circuitos quânticos. Em particular, uma biblioteca de métodos para especificação de coeficientes, os quais são definidos por números complexos normalizados, está em desenvolvimento incluindo operações aritméticas e considerando a representação polar, baseada no módulo e ângulo. O principal objetivo é o desenvolvimento de uma extensão da biblioteca qEx-VHDL, pela construção de um módulo qEx-VHDL-FP, contendo funções específicas para manipulação de qubits e portas lógicas unidimensionais [1], [2]. Se um bit de informação pode armazenar um dos dois valores 0 ou 1, um registrador clássico de n bits pode armazenar um conjunto de 2n elementos ({0, 1, ..., 2n-1}) por vez. No computador quântico, a unidade básica de informação é o qubit, interpretado por um vetor bidimensional do espaço de Hilbert, o qual é definido como um espaço vetorial complexo munido do produto interno [Nielsen e Chuang 2000]. Além de armazenar 0 ou 1, o qubit também armazena a superposição de ambos 0 e 1. Assim, a representação de um qubit na representação de Dirac é dada pela expressão Ψ α 0 β 1 , onde α e β são as amplitudes dos estados básicos, números complexos normalizados ( 1). Mais especificamente, α(ρα,θα) e β(ρβ,θβ) são a representação polar definida pelo módulo e ângulo dos respectivos coeficientes do qubit Ψ . A transformação dos possíveis estados de registradores quânticos pode ser modelada por operadores unitários, referidos como portas quânticas. Tais dispositivos quânticos podem executar uma operação unitária fixada, sobre qubits selecionados, em período determinado no tempo. Um operador unitário U é interpretado como uma matriz unitária U. Operadores quânticos de um qubit são denominados portas elementares. Outras operações não unitárias são operadores de controle e medida (neste caso, interpretadas por projeções do vetor correspondente ao qubit sobre um par de subespaços ortogonais) [3]. Para a realização dos cálculos, consideramos o número complexo a na notação polar, (cos ) , sendo indicando o módulo e o ângulo correspondente. Essa notação reduz significativamente o número de cálculos em algumas operações se comparada com a notação algébrica. Nas operações de multiplicação e exponenciação, tem-se: (cos ( ) ( )); (cos () ()). Nesta representação são realizados cálculos apenas sobre os valores do módulo e do ângulo de cada um dos complexos. Estas vantagens que se aplicam na etapa de modelagem dos dados também são estendidas na especificação em VHDL, pois é possível fazer uma descrição simplificada, e consequentemente, a geração de hardware mais simples para executar as operações (aritméticas). Na Figura 1, análoga às demais operações, tem-se os cálculos da multiplicação, que foram otimizados em apenas um operador e a implementação dos valores utiliza um sistema de Ponto Flutuante, com precisão de 32 bits, 1 bit de sinal, expoentes de 8 bits e mantissa de 23 bits. Figura 1: Biblioteca qEx-VHDL-FP – Multiplicações de Complexos
Computação quântica é uma área de grande desenvolvimento hoje em dia e isso traz uma necessidade para desenvolver hardware e software. Uma vez que o hardware disponível é muito pouco e o software precisa de ser testado, existe uma necessidade de uma boa plataforma para testar as soluções de software. Simular um computador quântico num computador clássico não é ideal, contudo é uma resposta viável a esta necessidade, para um pequeno número de qubits. Além disso, os computadores quânticos necessitam dos computadores clássicos de forma a criar um sistema real prático, isto apresenta-se como uma excelente oportunidade para testar técnicas de programação clássica para melhorar a programação quântica. Esta tese propõe o uso de programação clássica para melhorar a implementação de um algoritmo de adição modular usando transformadas de Fourier quânticas. Os principais objectivos deste trabalho são: simular um circuito quântico; testar um algoritmo quântico e compará-lo com o seu equivalente clássico; implementar o algoritmo de adição modular, usando as capacidades de aceleração de computação das transformadas de Fourier quânticas e optimizá-lo; Testar e implementar códigos quânticos de correcção de erros; fazer um teste num computador quântico real.De forma a testar a linguagem e comparar um algoritmo quântico com um clássico, fez-se um teste ao algoritmo de Shor que está disponível de raiz na plataforma liquid. Apesar do algoritmo de Shor ter, teoricamente, uma dependência de tipo polinomial com a dimensão do problema, os testes realizados mostraram que o tempo de computação tem um comportamento exponencial. Simular um algoritmo quântico num computador clássico requer tempo de computação que cresce de forma exponencial, pois é necessário armazenar e processar todos os estados do sistema, que é um espaço de Hilbert de dimensão 2^n.O algoritmo de adição modular usando transformadas de Fourier quânticas foi implementado na plataforma liquid. Seguidamente fizeram-se melhorias e optimizações. O número de operações teórico é O(n^2). Contudo, depois de fazer melhorias ao circuito, removendo gates desnecessárias para casos específicos, o número de operações passa a ter um valor mínimo de Omega(n). Com este tipo de alterações o sistema pode apresentar melhorias no que respeito ao tempo de simulação até um factor de ordem 10. Isto mostra que programar um algoritmo quântico tendo em conta casos específicos pode melhorar imenso o desempenho da simulação.Os códigos de correção de erros quânticos foram implementados num circuito simples, com as ferramentas disponíveis na plataforma liquid, e obteve-se um sistema que consegue lidar com erros com probabilidade inferior ou igual a 2%, com uma taxa de sucesso na sua correção de 95%. Contudo são necessários circuitos muito grandes, pouco exequíveis.A plataforma disponibilizada pela IBM para fazer testes num computador quântico real, foi utilizada para testar o algoritmo de adição modular e adição normal (com carry bit). Uma vez que esta plataforma tem um número limitado de gates, reforça a ideia de que se deve otimizar os algoritmos tendo em conta casos particulares. Os resultados destes testes mostram também que é importante utilizar correcção de erros quânticos, mas para que isso seja viável é necessário que haja mais qubits disponíveis ou outro tipo de códigos.
Em computação quântica e especificamente na modelagem de circuitos quânticos de computação, uma porta lógica quântica (ou simplesmente porta quântica) é um circuito quântico básico que opera sobre um pequeno número de qubits, que são as unidades básicas de informação constituída por um sistema quântico de dois estados. Estes são os alicerces de construção de circuitos quânticos da mesma forma que as portas lógicas clássicas são para os circuitos digitais convencionais. No presente trabalho, pretendemos investigar aplicações da mecânica quântica não linear q-deformada em computação quântica, assim como a construção de suas portas lógicas quânticas que possam descrever fenômenos de interesse da comunidade científica nas áreas de computação quântica, teoria quântica, entre outras. Para a escrita dos trabalhos, utilizamos a linguagem de programação LaTeX, e para o desenvolvimento de gráficos ou resoluções de equações diferenciais, fizemos o uso da linguagem de programação Python. Para isso, promovemos estudos sobre alguns tópicos de computação quântica, álgebras generalizadas, linguagem de programação Python, entre outros. Nesta etapa do projeto, consideramos as seguintes referências bibliográficas: computação quântica, álgebra q-deformada, mecânica quântica não linear, circuitos quânticos, fenômenos de decoerência quântica, e etc. e promover as suas aplicações na construção do projeto, a fim de obter resultados que auxiliem a outros pesquisadores destes tópicos de pesquisa. Foram criados circuitos e analisamos a sua entropia em relação ao parâmetro de deformação algébrico q, analisamos também a taxa de variação da modificação dos estados e das probabilidades de estados dos qubits presentes nos circuitos simulados, sendo estudados também as plotagens acerca das funções generalizadas presentes nos artigos que foram usados como base neste trabalho e projeto. e para uma melhor consolidação dos resultados, criamos uma biblioteca no python que nos auxiliou no trabalho. Foi percebido que usando a matemática não usual presente nos artigos acerca da álgebra q-deformada, o parâmetro q consegue ter um enorme controle de entropia e velocidade de convergência do circuito quântico deformado em alguns respectivos algoritmos quânticos. Vendo que a sua velocidade de convergência pode ser modificada, para maior ou menor do que a usual, verifica-se aqui a extrema importância do parâmetro q em simulações e convergências de resultados acerca dos temas aqui trabalhados.
Computaçãao quântica pode ser entendida como transformação da informação codificada no estado de um sistema físico quântico. A idéia básica da computação quântica é codificar dados utilizando bits quânticos (qubits). Diferentemente do bit clássico, o qubit pode existir em uma superposição dos seus estados básicos permitindo o “paralelismo quântico”, o qual é uma característica importante da computação quântica visto que pode aumentar consideravelmente a velocidade de processamento dos algoritmos. Entretanto, tipos de dados quânticos são bastante poderosos não somente por causa da superposição de estados. Existem outras propriedades ímpares como medida e emaranhamento. Nesta tese, nós discutimos que um modelo realístico para computações quânticas deve ser geral com respeito a medidas, e completo com respeito a comunicação entre o mundo quântico e o mundo clássico. Nós, então, explicamos e estruturamos computações quânticas gerais e completas em Haskell utilizando construções conhecidas da área de semântica e linguagens de programação clássicas, como mônadas e setas. Em mais detalhes, esta tese se concentra nas seguintes contribuições. Mônadas e Setas. Paralelismo quântico, emaranhamento e medida quântica certamente vão além do escopo de linguagens funcionais “puras”. Nós mostramos que o paralelismo quântico pode ser modelado utilizando-se uma pequena generalização de mônadas, chamada mônadas indexadas ou estruturas Kleisli. Além disso, nós mostramos que a medida quântica pode ser explicada utilizando-se uma generalização mais radical de mônadas, as assim chamadas setas, mais especificamente, setas indexadas, as quais definimos nesta tese. Este resultado conecta características quânticas “genéricas” e “completas” `a construções semânticas de linguagens de programação bem fundamentadas. Entendendo as Interpretações da Mecânica Quântica como Efeitos Computacionais. Em um experimento hipotético, Einstein, Podolsky e Rosen demonstraram algumas consequências contra-intuitivas da mecânica quântica. A idéia básica é que duas partículas parecem sempre comunicar alguma informação mesmo estando separadas por uma distância arbitrariamente grande. Existe muito debate e muitos artigos sobre esse tópico, mas é interessante notar que, como proposto por Amr Sabry, essas características estranhas podem ser essencialmente modeladas por atribuições a variáveis globais. Baseados nesta idéia nós modelamos este comportamento estranho utilizando noções gerais de efeitos computacionais incorporados nas noções de mônadas e setas. Provando Propriedades de Programas Quânticos Utilizando Leis Algébricas. Nós desenvolvemos um trabalho preliminar para fazer provas equacionais sobre algoritmos quânticos escritos em uma sublinguagem pura de uma linguagem de programação funcional quântica, chamada QML.
Simuladores quânticos têm tido um importante papel no estudo e desenvolvimento da computação quântica ao longo dos anos. A simulação de algoritmos quânticos em computadores clássicos é computacionalmente difícil, principalmente devido à natureza paralela dos sistemas quânticos. Para acelerar essas simulações, alguns trabalhos propõem usar hardware paralelo programável como FPGAs, o que diminui consideravelmente o tempo de execução. Contudo, essa abordagem tem três problemas principais: pouca escalabilidade, já que apenas transfere a complexidade do domínio do tempo para o domínio do espaço; a necessidade de re-síntese a cada mudança no algoritmo; e o esforço extra ao projetar o código RTL para simulação. Para lidar com esses problemas, uma arquitetura de um co-processador SIMD é proposta, cujas operações das portas quânticas está baseada no modelo Network of Butterflies. Com isso, eliminamos a necessidade de re-síntese com mudanças pequenas no algoritmo quântico simulado, e eliminamos a influência de um dos fatores que levam ao crescimento exponencial do uso de recursos da FPGA. Adicionamente, desenvolvemos uma ferramenta para geração automática do código RTL sintetizável do co-processador, reduzindo assim o esforço extra de projeto.
Computaçãao quântica pode ser entendida como transformação da informação codificada no estado de um sistema físico quântico. A idéia básica da computação quântica é codificar dados utilizando bits quânticos (qubits). Diferentemente do bit clássico, o qubit pode existir em uma superposição dos seus estados básicos permitindo o “paralelismo quântico”, o qual é uma característica importante da computação quântica visto que pode aumentar consideravelmente a velocidade de processamento dos algoritmos. Entretanto, tipos de dados quânticos são bastante poderosos não somente por causa da superposição de estados. Existem outras propriedades ímpares como medida e emaranhamento. Nesta tese, nós discutimos que um modelo realístico para computações quânticas deve ser geral com respeito a medidas, e completo com respeito a comunicação entre o mundo quântico e o mundo clássico. Nós, então, explicamos e estruturamos computações quânticas gerais e completas em Haskell utilizando construções conhecidas da área de semântica e linguagens de programação clássicas, como mônadas e setas. Em mais detalhes, esta tese se concentra nas seguintes contribuições. Mônadas e Setas. Paralelismo quântico, emaranhamento e medida quântica certamente vão além do escopo de linguagens funcionais “puras”. Nós mostramos que o paralelismo quântico pode ser modelado utilizando-se uma pequena generalização de mônadas, chamada mônadas indexadas ou estruturas Kleisli. Além disso, nós mostramos que a medida quântica pode ser explicada utilizando-se uma generalização mais radical de mônadas, as assim chamadas setas, mais especificamente, setas indexadas, as quais definimos nesta tese. Este resultado conecta características quânticas “genéricas” e “completas” `a construções semânticas de linguagens de programação bem fundamentadas. Entendendo as Interpretações da Mecânica Quântica como Efeitos Computacionais. Em um experimento hipotético, Einstein, Podolsky e Rosen demonstraram algumas consequências contra-intuitivas da mecânica quântica. A idéia básica é que duas partículas parecem sempre comunicar alguma informação mesmo estando separadas por uma distância arbitrariamente grande. Existe muito debate e muitos artigos sobre esse tópico, mas é interessante notar que, como proposto por Amr Sabry, essas características estranhas podem ser essencialmente modeladas por atribuições a variáveis globais. Baseados nesta idéia nós modelamos este comportamento estranho utilizando noções gerais de efeitos computacionais incorporados nas noções de mônadas e setas. Provando Propriedades de Programas Quânticos Utilizando Leis Algébricas. Nós desenvolvemos um trabalho preliminar para fazer provas equacionais sobre algoritmos quânticos escritos em uma sublinguagem pura de uma linguagem de programação funcional quântica, chamada QML.
A Computação Quântica (CQ) [7] segue atingindo novos marcos rumo à construção de computadores quânticos. Apesar de todos os esforços, vários desafios técnicos limitam os sistemas atuais a alguns bits quânticos [10]. Pela indisponibilidade de hardware quântico, o estudo e desenvolvimento de aplicações na CQ usualmente é feito estritamente pela especificação matemática das computações ou por meio de ferramentas de simulação. Este último caracteriza a abordagem mais prática, entretanto a complexidade computacional associada a simulação de sistemas quânticos a partir de computadores clássicos limita o tamanho dos sistemas a serem simulados. O projeto no qual este trabalho está inserido busca consolidar a integração de vários esforços de pesquisa, com destaque para: (i) Distribuição das computações em cluster [2]; (ii)Simulação quântica através de GPUs [5]; (iii) Simulação quântica através de CPUs multicore. Atualmente situado sob o contexto do ambiente de simulação quântica VPE-qGM (Visual Programming Environment for the Quantum Geometric Machine Model), este trabalho tem o objetivo de estabelecer o suporte à aceleração da biblioteca de execução do ambiente através de processadores multicore, beneficiando-se dos recursos providos pela biblioteca OpenMP [3]. Consolida-se assim a biblioteca qGMC-Analyzer, com a implementação, desenvolvimento e validação de algoritmo para simulação quântica em arquiteturas multicore, cuja modelagem foi introduzida em [9]. O ambiente VPE-qGM, fundamentado no modelo de processos qGM (Quantum Geometric Machine Model) [8], é constitúıdo de construtores para modelagem e simulação gráfica de aplicações quânticas. De acordo com o modelo qGM, a noção de portas quânticas pode ser substitúıda pelo conceito de sincronização de processos elementares (PEs). No ambiente VPE-qGM, o PE é um elemento estruturado por três atributos: (i) Ação: Corresponde às transformações quânticas aplicadas a diferentes qubits em um mesmo instante de tempo; (ii) Parâmetros: Contém dados auxiliares associados à definição das transformações quânticas; (iii) Posição: Posição de escrita em um espaço de memória global e compartilhada, na qual é armazenado o resultado calculado pelo PE. Neste contexto, uma transformação quântica, aplicada a N qubits, pode ser modelada pela sincronização de 2N PEs, cujas parametrizações satisfazem as condições equivalentes à definição dos vetores componentes da matriz (transformação unitária ou de medida) associada [6]. Bolsista de Iniciação Científica PIBIC/CNPq †Bolsista de PROBIC/FAPERGS Assim, durante a simulação, ocorre a execução (sequencial ou síncrona) dos PEs, os quais têm suas correspondentes computações efetuadas pela biblioteca qGM-Analyzer, manipulando os dados presentes nas posições de memória e simulando o comportamento de um sistema quântico. A biblioteca de execução dos PEs, denominada qGM-Analyzer, implementa otimizações que controlam o aumento exponencial dos vetores componentes das matrizes de definição do operador de múltiplos qubits, conforme introduzido em [4]. Os resultados relacionados comprovam a redução no consumo de memória durante a simulação, suportando algoritmos com 11 qubits. Entretanto, o tempo total de simulação obtido permanece elevado, devido a quantidade de operações necessárias para simular uma transformação quântica. A implementação da biblioteca qGM-Analyzer em C segue as otimizações introduzidas em [4], apenas alterando as estruturas de dados utilizados e fazendo uso de recursos nativos oferecidos pela linguagem visando a otimização da execução. Visando a compatibilidade da biblioteca com o ambiente VPE-qGM, é considerada a biblioteca Boost 1.49.0 [1] para integração das duas linguagens envolvidas. Para a implementação do paralelismo foi utilizada A biblioteca OpenMP [3] implementa o paralelismo. O módulo Boost-Python auxiliou no desenvolvimento da biblioteca qGMC-Analyzer permitindo que sejam reutilizados no código C tipos do Python, como as listas de valores utilizadas no ambiente VPE-qGM, e ainda realizando a conversão destes tipos para tipos da linguagem C. Outra funcionalidade utilizada do módulo Boost-Python foi a geração da biblioteca compartilhada importada pelo ambiente em Python. A implementação em C manteve o mesmo algoritmo desenvolvido em [4], porém a forma de armazenamento dos dados e os algoritmos para acesso a esses dados foram modificados para diminuir a complexidade da biblioteca. Dentre os fatores que contribúıram para um melhor desempenho, destacam-se a utilização de vetores como alternativa as listas do Python e o fato de a linguagem C ser compilada, permitindo ao compilador otimizações no código gerado. Na implementação paralela, cada thread possui uma cópia privada da pilha, e as memórias de escrita e leitura são compartilhadas entre todos os threads, pois cada valor calculado é escrito em uma posição diferente da memória. A divisão dos threads é feita de forma a manter juntos os valores das matrizes necessários para o cálculo de uma posição. Para tal, iterações são divididas levando em conta o número de colunas da primeira matriz envolvida na transformação. Nos casos em que a transformação possui apenas uma matriz, os threads são divididos de forma diferente, para que o trabalho seja distribúıdo de forma balanceada. A definição do número de threads utilizadas pela biblioteca é definida por uma variável de ambiente (OMP NUM THREADS ), gerando uma implementação mais flexível. Ou seja, dependendo da transformação quântica, tem-se um controle da granulosidade visando melhor desempenho da biblioteca. Para validação e análise de desempenho da implementação da qGM-Analyzer em C, foram desenvolvidos estudos de caso envolvendo sincronizações arbitrárias de transformações quânticas, contemplando sistemas entre 13 e 20 qubits. A metodologia dos testes utilizada contempla, para cada estudo de caso, a realização de 15 simulações. A máquina utilizada na simulação possui as seguintes características: processador Intel Core i7-3770 @ 3.4 GHz, 8GB RAM e sistema operacional Ubuntu 12.04 64 bits. A principal comparação de desempenho se dá com a execução da biblioteca em diferentes números de threads. Os testes foram realizados com transformações Hadamards, representada por uma matriz densa de ordem 2n, onde n é o número de qubits e transformações Pauli X, uma matriz esparsa de ordem 2n. Estas execuções compreenderam duas etapas: (i) Geração dos valores não nulos associados ao correspondente vetor componente da matriz de definição da transformação quântica modelada; (ii) Multiplicação desses valores pelas amplitudes obtidas da estrutura de memória que modela o espaço de estados do sistema quântico. Nas simulações das Hadamards, devido ao elevado número de operações, pode-se facilmente observar um desempenho elevado, ou seja, o aumento no número de qubits diretamente relacionado com a diminuição significativa do tempo de execução. Nas transformações controladas Pauli X houve um aumento no tempo de execução. Justifica-se este fato pelo baixo número de operações enFigura 1: Tempos das transformações Hadamard e Pauli X em relação ao número de threads. volvidas. Sendo a Pauli X uma matriz esparsa, seus valores zerados não são computados pelo algoritmo otimizado, tornando o overhead da criação e troca de contexto dos threads o principal custo da transformação, como observado no decremento de desempenho da Figura da Pauli X. Os tempos de simulação, em cada estudo de caso, abrangendo os casos para 1, 2, 4 e 8 threads são descritos na Figura 1. Como analisado, os tempos de execução para as transformações Hadamards obtiveram os melhores desempenhos. As transformações Pauli X tiveram o seu tempo de execução aumentando conforme aumentava o número de threads, pois envolvem poucos cálculos, e seu tempo é dominado pela criação e troca de contexto dos threads. As otimizações realizadas e a implementação paralela representaram um ganho significativo no tempo de execução das transformações quânticas, permitindo a simulação de transformações de 18 qubits com elevado número de operações, como no caso das Hadamards. A continuidade do trabalho consiste na integração da biblioteca qGMC-Analyzer com o ambiente VPE-qGM além da expansão para suporte a transformações multiqubits e na implementação de aplicações em outras bibliotecas disponíveis, para comparação de desempenho entre diferentes ferramentas para suporte a simulação quântica.