34 #include <cudnn_backend.h> 58 ss <<
"CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR :" 59 <<
" has " <<
num_ptrs <<
" data pointers";
77 int64_t
uid[10] = {-1};
93 std::copy(ptrs, ptrs + num_ptr, m_variant_pack.data_pointers);
94 m_variant_pack.num_ptrs = num_ptr;
100 std::copy(
uid,
uid + num_uids, m_variant_pack.uid);
108 m_variant_pack.uid[i] = data_pointer.first;
109 m_variant_pack.data_pointers[i] = data_pointer.second;
112 m_variant_pack.num_ptrs = data_pointers.size();
118 m_variant_pack.workspace = ws;
128 auto status = m_variant_pack.initialize_managed_backend_pointer(CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR);
129 if (
status != CUDNN_STATUS_SUCCESS) {
131 &m_variant_pack,
status,
"CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR: cudnnCreate Failed");
132 return std::move(m_variant_pack);
135 status = cudnnBackendSetAttribute(m_variant_pack.pointer->get_backend_descriptor(),
136 CUDNN_ATTR_VARIANT_PACK_DATA_POINTERS,
138 m_variant_pack.num_ptrs,
139 m_variant_pack.data_pointers);
140 if (
status != CUDNN_STATUS_SUCCESS) {
144 "CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR: SetAttribute CUDNN_ATTR_VARIANT_PACK_DATA_POINTERS Failed");
145 return std::move(m_variant_pack);
148 status = cudnnBackendSetAttribute(m_variant_pack.pointer->get_backend_descriptor(),
149 CUDNN_ATTR_VARIANT_PACK_UNIQUE_IDS,
151 m_variant_pack.num_ptrs,
153 if (
status != CUDNN_STATUS_SUCCESS) {
157 "CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR: SetAttribute CUDNN_ATTR_VARIANT_PACK_UNIQUE_IDS Failed");
158 return std::move(m_variant_pack);
161 status = cudnnBackendSetAttribute(m_variant_pack.pointer->get_backend_descriptor(),
162 CUDNN_ATTR_VARIANT_PACK_WORKSPACE,
165 &m_variant_pack.workspace);
166 if (
status != CUDNN_STATUS_SUCCESS) {
170 "CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR: SetAttribute CUDNN_ATTR_VARIANT_PACK_WORKSPACE Failed");
171 return std::move(m_variant_pack);
175 status = cudnnBackendFinalize(m_variant_pack.pointer->get_backend_descriptor());
176 if (
status != CUDNN_STATUS_SUCCESS) {
178 &m_variant_pack,
status,
"CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR: cudnnFinalize Failed");
179 return std::move(m_variant_pack);
181 getLogger() <<
"[cudnn_frontend] "<< m_variant_pack << std::endl;
182 return std::move(m_variant_pack);
VariantPack_v8 m_variant_pack
ConditionalStreamer & getLogger()
static void set_error_and_throw_exception(BackendDescriptor const *desc, cudnnStatus_t status, const char *message)
auto setWorkspacePointer(void *ws) -> VariantPackBuilder_v8 &
Set Workspace.
auto setDataPointers(int64_t num_ptr, void **ptrs) -> VariantPackBuilder_v8 &
Set dataPointers for the VariantPack_v8.
auto setUids(int64_t num_uids, int64_t *uid) -> VariantPackBuilder_v8 &
Set Uids for the VariantPack_v8.
~VariantPack_v8()=default
friend class VariantPackBuilder_v8
VariantPack_v8 && build()
auto setDataPointers(std::set< std::pair< uint64_t, void *>> const &data_pointers) -> VariantPackBuilder_v8 &
Initialize a set of pairs containing uid and data pointer.
std::string describe() const override
Return a string describing the backend Descriptor.
VariantPack_v8 & operator=(VariantPack_v8 &&from)=default
cudnnStatus_t status
Shared pointer of the OpaqueBackendPointer.