Source code for the submission to journal ACM Transactions on Quantum Computing.
Source code for paper Improving the Efficiency of Quantum Circuits for Information Set Decoding submitted at ACM Transactions on Quantum Computing. The bibtex is available at the end of the Readme.
This repository is taken from the code available at https://github.com/tigerjack/qat-utils and can be run on either the open-source myQLM simulator or the QLM simulator, both provided by Atos.
If you would like to test the code and you don not have access to a QLM, you can install the open source myQLM.
The best way to install the code would be through pyenv and the pyenv-virtualenv. Refer to their guides on how to install them. After both of them are installed, you can run.
pyenv install 3.9.7
pyenv virtualenv 3.9.7 myqlm_env
where 3.9.7
is the python version used for this code and myqlm_env
is the
name of the virtual environment (you can change whatever name you like). You can
also try for different python version, but the code has not been tested with
them. You can check the python versions available for myQLM on their
documentation.
Then, you can install myQLM inside the environment by launching
pyenv activate myqlm_env
pip install myqlm
pip install nptyping sympy
pip install paramaterized
nptyping
is used to get dynamic hints for numpy. sympy
, up to now, is only
used to automatically compute the RREF of a matrix. parameterized
is required
by most of the unit tests in order to have a great refactoring of code.
Then, you can clone this repository and activate the environment.
cd <SOME_DIR>
git clone https://github.com/tigerjack/qat-utils.git
cd qat-utils
pyenv activate myqlm_env
where <SOME_DIR>
can be whatever directory you want this repository to be
contained in.
The tests can be run using python -m unittest
(all tests) or python -m unittest test.module_name
(only a specific test case, replacing module name
with the actual name of the module). For example, if you want to run all the
tests related to the RREF circuit, go to the root directory and run python -m unittest test.test_qroutine_rref
.
When launching tests, you can provide some optional environment variables
LOG_LEVEL
, with values equal to the names provided by Python logging utilities. E.g.LOG_LEVEL=DEBUG python -m unittest test.test_qroutine_rref
.SLOW_TEST_ON=1
to enable also time consuming testsQLM_ON=1
to use the QLM instead of myQLMSIMULATOR
, to pass the name of a simulator. For myQLM, only thepylinalg
simulator is actually available. For QLM, there are a variety of available simulators depending on the version.
If you would like to contribute to the code, please open a GitHub issue on the original qat-utils repository. This repository will be made read-only after the conference and it is here just for reference.
The code here was used in the results of the following articles
[PeBP23] Perriello, Simone ; Barenghi, Alessandro ; Pelosi, Gerardo: /Improving the efficiency of quantum circuits for information set decoding/. In: ACM Transactions on Quantum Computing. New York, NY, USA, Association for Computing Machinery (2023). — Citation Key: 10.1145/3607256 [Accepted on June 2023] bibtex