Sequential Quantum Gate Decomposer  v1.9.3
Powerful decomposition of general unitarias into one- and two-qubit gates gates
Functions
apply_large_kernel_to_input_AVX.cpp File Reference
#include "apply_large_kernel_to_input_AVX.h"
#include "tbb/tbb.h"
Include dependency graph for apply_large_kernel_to_input_AVX.cpp:

Go to the source code of this file.

Functions

void apply_2qbit_kernel_to_matrix_input_AVX (Matrix &two_qbit_unitary, Matrix &input, const int &inner_qbit, const int &outer_qbit, const int &matrix_size)
 Call to apply kernel to apply two qubit gate kernel on an input matrix using AVX. More...
 
void apply_2qbit_kernel_to_state_vector_input_AVX (Matrix &two_qbit_unitary, Matrix &input, const int &inner_qbit, const int &outer_qbit, const int &matrix_size)
 Call to apply kernel to apply two qubit gate kernel on a state vector using AVX. More...
 
void apply_2qbit_kernel_to_state_vector_input_parallel_AVX (Matrix &two_qbit_unitary, Matrix &input, std::vector< int > involved_qbits, const int &matrix_size)
 Call to apply kernel to apply two qubit gate kernel on a state vector using AVX and TBB. More...
 
void apply_3qbit_kernel_to_state_vector_input_parallel_AVX (Matrix &unitary, Matrix &input, std::vector< int > involved_qbits, const int &matrix_size)
 Call to apply kernel to apply three qubit gate kernel on a state vector using AVX and TBB. More...
 
void apply_4qbit_kernel_to_state_vector_input_parallel_AVX (Matrix &unitary, Matrix &input, std::vector< int > involved_qbits, const int &matrix_size)
 Call to apply kernel to apply four qubit gate kernel on a state vector using AVX and TBB. More...
 
void apply_crot_kernel_to_matrix_input_AVX_parallel (Matrix &u3_1qbit1, Matrix &u3_1qbit2, Matrix &input, const int &target_qbit, const int &control_qbit, const int &matrix_size)
 Call to apply crot gate kernel on an input matrix using AVX and TBB. More...
 
void apply_large_kernel_to_input_AVX (Matrix &unitary, Matrix &input, std::vector< int > involved_qbits, const int &matrix_size)
 Call to apply kernel to apply multi qubit gate kernel on an input matrix. More...
 
__m256d complex_mult_AVX (__m256d input_vec, __m256d unitary_row_vec, __m256d neg)
 
__m256d get_AVX_vector (double *element_outer, double *element_inner)
 

Function Documentation

◆ apply_2qbit_kernel_to_matrix_input_AVX()

void apply_2qbit_kernel_to_matrix_input_AVX ( Matrix two_qbit_unitary,
Matrix input,
const int inner_qbit,
const int outer_qbit,
const int matrix_size 
)

Call to apply kernel to apply two qubit gate kernel on an input matrix using AVX.

Parameters
two_qbit_unitaryThe 4x4 kernel of the gate operation
inputThe input matrix on which the transformation is applied
inner_qbitThe lower significance qubit (little endian convention)
outer_qbitThe higher significance qubit (little endian convention)
matrix_sizeThe size of the input

Definition at line 248 of file apply_large_kernel_to_input_AVX.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ apply_2qbit_kernel_to_state_vector_input_AVX()

void apply_2qbit_kernel_to_state_vector_input_AVX ( Matrix two_qbit_unitary,
Matrix input,
const int inner_qbit,
const int outer_qbit,
const int matrix_size 
)

Call to apply kernel to apply two qubit gate kernel on a state vector using AVX.

Parameters
two_qbit_unitaryThe 4x4 kernel of the gate operation
inputThe input matrix on which the transformation is applied
inner_qbitThe lower significance qubit (little endian convention)
outer_qbitThe higher significance qubit (little endian convention)
matrix_sizeThe size of the input

Definition at line 87 of file apply_large_kernel_to_input_AVX.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ apply_2qbit_kernel_to_state_vector_input_parallel_AVX()

void apply_2qbit_kernel_to_state_vector_input_parallel_AVX ( Matrix two_qbit_unitary,
Matrix input,
std::vector< int involved_qbits,
const int matrix_size 
)

Call to apply kernel to apply two qubit gate kernel on a state vector using AVX and TBB.

Parameters
two_qbit_unitaryThe 4x4 kernel of the gate operation
inputThe input matrix on which the transformation is applied
inner_qbitThe lower significance qubit (little endian convention)
outer_qbitThe higher significance qubit (little endian convention)
matrix_sizeThe size of the input

Definition at line 343 of file apply_large_kernel_to_input_AVX.cpp.

Here is the call graph for this function:

◆ apply_3qbit_kernel_to_state_vector_input_parallel_AVX()

void apply_3qbit_kernel_to_state_vector_input_parallel_AVX ( Matrix unitary,
Matrix input,
std::vector< int involved_qbits,
const int matrix_size 
)

Call to apply kernel to apply three qubit gate kernel on a state vector using AVX and TBB.

Parameters
two_qbit_unitaryThe 8x8 kernel of the gate operation
inputThe input matrix on which the transformation is applied
involved_qbitsThe qubits affected by the gate in order
matrix_sizeThe size of the input

Definition at line 549 of file apply_large_kernel_to_input_AVX.cpp.

Here is the call graph for this function:

◆ apply_4qbit_kernel_to_state_vector_input_parallel_AVX()

void apply_4qbit_kernel_to_state_vector_input_parallel_AVX ( Matrix unitary,
Matrix input,
std::vector< int involved_qbits,
const int matrix_size 
)

Call to apply kernel to apply four qubit gate kernel on a state vector using AVX and TBB.

Parameters
two_qbit_unitaryThe 16x16 kernel of the gate operation
inputThe input matrix on which the transformation is applied
involved_qbitsThe qubits affected by the gate in order
matrix_sizeThe size of the input

Definition at line 695 of file apply_large_kernel_to_input_AVX.cpp.

Here is the call graph for this function:

◆ apply_crot_kernel_to_matrix_input_AVX_parallel()

void apply_crot_kernel_to_matrix_input_AVX_parallel ( Matrix u3_1qbit1,
Matrix u3_1qbit2,
Matrix input,
const int target_qbit,
const int control_qbit,
const int matrix_size 
)

Call to apply crot gate kernel on an input matrix using AVX and TBB.

Parameters
u3_1qbit1The 2x2 kernel to be applied on target |1>
u3_1qbit2The 2x2 kernel to be applied on target |0>
inputThe input matrix on which the transformation is applied
target_qbitThe target qubit
control_qbitThe control qubit
matrix_sizeThe size of the input

Definition at line 917 of file apply_large_kernel_to_input_AVX.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ apply_large_kernel_to_input_AVX()

void apply_large_kernel_to_input_AVX ( Matrix unitary,
Matrix input,
std::vector< int involved_qbits,
const int matrix_size 
)

Call to apply kernel to apply multi qubit gate kernel on an input matrix.

Parameters
unitaryThe 2^Nx2^N kernel of the gate operation
inputThe input matrix on which the transformation is applied
involved_qbitsThe involved qubits in the operation
matrix_sizeThe size of the input

Definition at line 58 of file apply_large_kernel_to_input_AVX.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ complex_mult_AVX()

__m256d complex_mult_AVX ( __m256d  input_vec,
__m256d  unitary_row_vec,
__m256d  neg 
)
inline

Definition at line 39 of file apply_large_kernel_to_input_AVX.cpp.

Here is the caller graph for this function:

◆ get_AVX_vector()

__m256d get_AVX_vector ( double *  element_outer,
double *  element_inner 
)
inline

Definition at line 27 of file apply_large_kernel_to_input_AVX.cpp.

Here is the caller graph for this function: