26#ifndef dftefeLinAlgOpContext_h
27#define dftefeLinAlgOpContext_h
40 namespace linearAlgebra
50 template <utils::MemorySpace memorySpace>
76#if defined(DFTEFE_WITH_DEVICE_LANG_SYCL)
77 enforceDefaultStreamExclusivity();
85#if defined(DFTEFE_WITH_DEVICE_LANG_SYCL)
86 enforceDefaultStreamExclusivity();
100#if defined(DFTEFE_WITH_DEVICE_LANG_SYCL)
101 enforceNonDefaultStreamExclusivity();
109#if defined(DFTEFE_WITH_DEVICE_LANG_SYCL)
110 enforceNonDefaultStreamExclusivity();
118 inline static std::vector<utils::deviceStream_t>
d_streams;
126#if defined(DFTEFE_WITH_DEVICE_LANG_SYCL)
134 enum class ActiveStreamSide
140 inline static ActiveStreamSide d_activeStreamSide =
141 ActiveStreamSide::Default;
144 enforceDefaultStreamExclusivity()
146 if (d_activeStreamSide == ActiveStreamSide::NonDefault)
149 utils::deviceStreamSynchronize(stream);
150 d_activeStreamSide = ActiveStreamSide::Default;
155 enforceNonDefaultStreamExclusivity()
157 if (d_activeStreamSide == ActiveStreamSide::Default)
160 d_activeStreamSide = ActiveStreamSide::NonDefault;
Definition: LinAlgOpContext.h:52
static utils::deviceStream_t * getBlasStreamsVec()
Definition: LinAlgOpContext.h:98
static std::vector< utils::deviceStream_t > d_streams
Definition: LinAlgOpContext.h:118
~LinAlgOpContext()=default
static utils::deviceStream_t & getBlasStream()
Definition: LinAlgOpContext.h:74
TensorOpDataType getTensorOpDataType()
Definition: LinAlgOpContext.h:65
TensorOpDataType d_opType
storage for deviceblas handle
Definition: LinAlgOpContext.h:124
static utils::deviceStream_t d_defaultStream
Definition: LinAlgOpContext.h:121
void setTensorOpDataType(TensorOpDataType opType)
Definition: LinAlgOpContext.h:59
static std::vector< utils::deviceBlasHandle_t > d_deviceBlasHandles
Definition: LinAlgOpContext.h:117
static utils::deviceBlasStatus_t setBlasStream(utils::deviceStream_t &streamId)
Definition: LinAlgOpContext.t.cpp:104
static utils::deviceBlasHandle_t & getDeviceBlasHandle()
Definition: LinAlgOpContext.h:83
size_type numBlasStreams() const
Definition: LinAlgOpContext.h:92
size_type d_numBlasStreams
Definition: LinAlgOpContext.h:116
utils::deviceBlasStatus_t create(utils::deviceBlasHandle_t &handleId)
Definition: LinAlgOpContext.t.cpp:129
static utils::deviceBlasHandle_t * getDeviceBlasHandlesVec()
Definition: LinAlgOpContext.h:107
utils::deviceBlasStatus_t destroy(utils::deviceBlasHandle_t &handleId)
Definition: LinAlgOpContext.t.cpp:145
static utils::deviceBlasHandle_t d_deviceBlasHandle
Definition: LinAlgOpContext.h:120
TensorOpDataType
Definition: LinAlgOpContext.h:43
cublasHandle_t deviceBlasHandle_t
Definition: DeviceTypeConfig.cu.h:36
cudaStream_t deviceStream_t
Definition: DeviceTypeConfig.cu.h:27
cublasStatus_t deviceBlasStatus_t
Definition: DeviceTypeConfig.cu.h:38
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
std::uint64_t size_type
Definition: TypeConfig.h:9