Descrição em VHDL de algoritmos quânticos
DOI:
https://doi.org/10.5540/03.2015.003.01.0090Abstract
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