Qrack  9.0
General classical-emulating-quantum development framework
Namespaces | Macros | Functions
opencl.cpp File Reference
#include "qengine_opencl.hpp"
#include <algorithm>
#include <thread>
Include dependency graph for opencl.cpp:

Namespaces

 Qrack
 

Macros

#define APPLY2X2_DEFAULT   0x00
 
#define APPLY2X2_NORM   0x01
 
#define APPLY2X2_SINGLE   0x02
 
#define APPLY2X2_DOUBLE   0x04
 
#define APPLY2X2_WIDE   0x08
 
#define APPLY2X2_X   0x10
 
#define APPLY2X2_Z   0x20
 
#define APPLY2X2_PHASE   0x40
 
#define APPLY2X2_INVERT   0x80
 
#define DISPATCH_BLOCK_WRITE(waitVec, buff, offset, length, array)
 
#define DISPATCH_TEMP_WRITE(waitVec, buff, size, array, clEvent)
 
#define DISPATCH_LOC_WRITE(buff, size, array, clEvent)
 
#define DISPATCH_WRITE(waitVec, buff, size, array)
 
#define DISPATCH_BLOCK_READ(waitVec, buff, offset, length, array)
 
#define WAIT_REAL1_SUM(buff, size, array, sumPtr)
 
#define CHECK_ZERO_SKIP()
 

Functions

void CL_CALLBACK Qrack::_PopQueue (cl_event event, cl_int type, void *user_data)
 

Macro Definition Documentation

◆ APPLY2X2_DEFAULT

#define APPLY2X2_DEFAULT   0x00

◆ APPLY2X2_DOUBLE

#define APPLY2X2_DOUBLE   0x04

◆ APPLY2X2_INVERT

#define APPLY2X2_INVERT   0x80

◆ APPLY2X2_NORM

#define APPLY2X2_NORM   0x01

◆ APPLY2X2_PHASE

#define APPLY2X2_PHASE   0x40

◆ APPLY2X2_SINGLE

#define APPLY2X2_SINGLE   0x02

◆ APPLY2X2_WIDE

#define APPLY2X2_WIDE   0x08

◆ APPLY2X2_X

#define APPLY2X2_X   0x10

◆ APPLY2X2_Z

#define APPLY2X2_Z   0x20

◆ CHECK_ZERO_SKIP

#define CHECK_ZERO_SKIP ( )
Value:
if (!stateBuffer) { \
return; \
}

◆ DISPATCH_BLOCK_READ

#define DISPATCH_BLOCK_READ (   waitVec,
  buff,
  offset,
  length,
  array 
)
Value:
tryOcl("Failed to read buffer", \
[&] { return queue.enqueueReadBuffer(buff, CL_TRUE, offset, length, array, waitVec.get()); }); \
wait_refs.clear();

◆ DISPATCH_BLOCK_WRITE

#define DISPATCH_BLOCK_WRITE (   waitVec,
  buff,
  offset,
  length,
  array 
)
Value:
tryOcl("Failed to write buffer", \
[&] { return queue.enqueueWriteBuffer(buff, CL_TRUE, offset, length, array, waitVec.get()); }); \
wait_refs.clear();

◆ DISPATCH_LOC_WRITE

#define DISPATCH_LOC_WRITE (   buff,
  size,
  array,
  clEvent 
)
Value:
tryOcl("Failed to enqueue buffer write", \
[&] { return queue.enqueueWriteBuffer(buff, CL_FALSE, 0U, size, array, NULL, &clEvent); });
MICROSOFT_QUANTUM_DECL void U(_In_ uintq sid, _In_ uintq q, _In_ double theta, _In_ double phi, _In_ double lambda)
(External API) 3-parameter unitary gate
Definition: pinvoke_api.cpp:1362

◆ DISPATCH_TEMP_WRITE

#define DISPATCH_TEMP_WRITE (   waitVec,
  buff,
  size,
  array,
  clEvent 
)
Value:
tryOcl("Failed to write buffer", \
[&] { return queue.enqueueWriteBuffer(buff, CL_FALSE, 0U, size, array, waitVec.get(), &clEvent); });

◆ DISPATCH_WRITE

#define DISPATCH_WRITE (   waitVec,
  buff,
  size,
  array 
)
Value:
device_context->EmplaceEvent([&](cl::Event& event) { \
tryOcl("Failed to enqueue buffer write", \
[&] { return queue.enqueueWriteBuffer(buff, CL_FALSE, 0U, size, array, waitVec.get(), &event); }); \
});

◆ WAIT_REAL1_SUM

#define WAIT_REAL1_SUM (   buff,
  size,
  array,
  sumPtr 
)
Value:
clFinish(); \
tryOcl("Failed to enqueue buffer read", \
[&] { return queue.enqueueReadBuffer(buff, CL_TRUE, 0U, sizeof(real1) * size, array.get(), NULL, NULL); }); \
*(sumPtr) = ParSum(array.get(), size);
half_float::half real1
Definition: qrack_types.hpp:63