Sequential Quantum Gate Decomposer
v1.9.3
Powerful decomposition of general unitarias into one- and two-qubit gates gates
|
Provides functions to link and manage data-flow accelerator libarries. More...
#include "common_DFE.h"
#include "matrix_base.hpp"
#include <atomic>
#include <dlfcn.h>
#include <unistd.h>
#include <mutex>
Go to the source code of this file.
Functions | |
int | calcqgdKernelDFE (size_t rows, size_t cols, DFEgate_kernel_type *gates, int gatesNum, int gateSetNum, int traceOffset, double *trace) |
Call to execute the calculation on the reserved DFE engines. More... | |
size_t | get_accelerator_avail_num () |
Call to get the available number of accelerators. More... | |
size_t | get_accelerator_free_num () |
Call to get the number of free accelerators. More... | |
int | get_chained_gates_num () |
Call to retrieve the number of gates that should be chained up during the execution of the DFE library. More... | |
int | get_initialize_id () |
Call to get the identification number of the inititalization of the library. More... | |
int | init_dfe_lib (const int accelerator_num, int qbit_num, int initialize_id_in) |
Call to initialize the DFE library support and allocate the requested devices. More... | |
void | lock_lib () |
Call to lock the access to the execution of the DFE library. More... | |
std::atomic_size_t | read_count (0) |
reference counting of locking-unlocking the DFE accelerators More... | |
void | unload_dfe_lib () |
Call to unload the DFE libarary and release the allocated devices. More... | |
void | unlock_lib () |
Call to unlock the access to the execution of the DFE library. More... | |
void | uploadMatrix2DFE (Matrix &input) |
Call to upload the input matrix to the DFE engine. More... | |
Variables | |
int(* | calcqgdKernelDFE_dll )(size_t rows, size_t cols, DFEgate_kernel_type *gates, int gatesNum, int gateSetNum, int traceOffset, double *trace) = NULL |
size_t(* | get_accelerator_avail_num_dll )() = NULL |
size_t(* | get_accelerator_free_num_dll )() = NULL |
int(* | get_chained_gates_num_dll )() = NULL |
void * | handle = NULL |
int(* | initialize_DFE_dll )(int accelerator_num) = NULL |
int | initialize_id = -1 |
std::recursive_mutex | libmutex |
mutex to guard DFE lib locking and unlocking More... | |
std::mutex | libreadmutex |
int(* | load2LMEM_dll )(QGD_Complex16 *data, size_t rows, size_t cols) = NULL |
void(* | releive_DFE_dll )() = NULL |
Provides functions to link and manage data-flow accelerator libarries.
Definition in file common_DFE.cpp.
int calcqgdKernelDFE | ( | size_t | rows, |
size_t | cols, | ||
DFEgate_kernel_type * | gates, | ||
int | gatesNum, | ||
int | gateSetNum, | ||
int | traceOffset, | ||
double * | trace | ||
) |
Call to execute the calculation on the reserved DFE engines.
rows | The number of rows in the input matrix |
cols | the number of columns in the input matrix |
gates | The metadata describing the gates to be applied on the input |
gatesNum | The number of the chained up gates. |
gateSetNum | Integer descibing how many individual gate chains are encoded in the gates input. |
traceOffset | In integer describing an offset in the trace calculation |
trace | The trace of the transformed unitaries are returned through this pointer |
Definition at line 207 of file common_DFE.cpp.
size_t get_accelerator_avail_num | ( | ) |
Call to get the available number of accelerators.
Definition at line 169 of file common_DFE.cpp.
size_t get_accelerator_free_num | ( | ) |
Call to get the number of free accelerators.
Definition at line 180 of file common_DFE.cpp.
int get_chained_gates_num | ( | ) |
Call to retrieve the number of gates that should be chained up during the execution of the DFE library.
Definition at line 220 of file common_DFE.cpp.
int get_initialize_id | ( | ) |
Call to get the identification number of the inititalization of the library.
Definition at line 190 of file common_DFE.cpp.
Call to initialize the DFE library support and allocate the requested devices.
accelerator_num | The number of requested devices |
qbit_num | The number of the supported qubits |
initialize_id_in | Identification number of the inititalization of the library |
Definition at line 101 of file common_DFE.cpp.
void lock_lib | ( | ) |
Call to lock the access to the execution of the DFE library.
Definition at line 145 of file common_DFE.cpp.
std::atomic_size_t read_count | ( | 0 | ) |
reference counting of locking-unlocking the DFE accelerators
void unload_dfe_lib | ( | ) |
Call to unload the DFE libarary and release the allocated devices.
Definition at line 78 of file common_DFE.cpp.
void unlock_lib | ( | ) |
Call to unlock the access to the execution of the DFE library.
Definition at line 155 of file common_DFE.cpp.
void uploadMatrix2DFE | ( | Matrix & | input | ) |
Call to upload the input matrix to the DFE engine.
input | The input matrix |
Definition at line 65 of file common_DFE.cpp.
int(* calcqgdKernelDFE_dll) (size_t rows, size_t cols, DFEgate_kernel_type *gates, int gatesNum, int gateSetNum, int traceOffset, double *trace) = NULL |
Definition at line 48 of file common_DFE.cpp.
size_t(* get_accelerator_avail_num_dll) () = NULL |
Definition at line 46 of file common_DFE.cpp.
size_t(* get_accelerator_free_num_dll) () = NULL |
Definition at line 47 of file common_DFE.cpp.
int(* get_chained_gates_num_dll) () = NULL |
Definition at line 52 of file common_DFE.cpp.
void* handle = NULL |
Definition at line 34 of file common_DFE.cpp.
Definition at line 51 of file common_DFE.cpp.
int initialize_id = -1 |
Definition at line 57 of file common_DFE.cpp.
std::recursive_mutex libmutex |
mutex to guard DFE lib locking and unlocking
Definition at line 40 of file common_DFE.cpp.
std::mutex libreadmutex |
Definition at line 41 of file common_DFE.cpp.
int(* load2LMEM_dll) (QGD_Complex16 *data, size_t rows, size_t cols) = NULL |
Definition at line 49 of file common_DFE.cpp.
void(* releive_DFE_dll) () = NULL |
Definition at line 50 of file common_DFE.cpp.