34 #include <cudnn_backend.h> 58 ss <<
"CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR :" 59 <<
" has " <<
num_ptrs <<
" data pointers";
66 std::copy(std::begin(from.data_pointers), std::end(from.data_pointers),
data_pointers);
67 std::copy(std::begin(from.uid), std::end(from.uid),
uid);
79 int64_t
uid[10] = {-1};
95 std::copy(ptrs, ptrs + num_ptr, m_variant_pack.data_pointers);
96 m_variant_pack.num_ptrs = num_ptr;
102 std::copy(
uid,
uid + num_uids, m_variant_pack.uid);
110 m_variant_pack.uid[i] = data_pointer.first;
111 m_variant_pack.data_pointers[i] = data_pointer.second;
114 m_variant_pack.num_ptrs = data_pointers.size();
120 m_variant_pack.workspace = ws;
130 auto status = m_variant_pack.initialize_managed_backend_pointer(CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR);
131 if (
status != CUDNN_STATUS_SUCCESS) {
133 &m_variant_pack,
status,
"CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR: cudnnCreate Failed");
134 return std::move(m_variant_pack);
137 status = cudnnBackendSetAttribute(m_variant_pack.pointer->get_backend_descriptor(),
138 CUDNN_ATTR_VARIANT_PACK_DATA_POINTERS,
140 m_variant_pack.num_ptrs,
141 m_variant_pack.data_pointers);
142 if (
status != CUDNN_STATUS_SUCCESS) {
146 "CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR: SetAttribute CUDNN_ATTR_VARIANT_PACK_DATA_POINTERS Failed");
147 return std::move(m_variant_pack);
150 status = cudnnBackendSetAttribute(m_variant_pack.pointer->get_backend_descriptor(),
151 CUDNN_ATTR_VARIANT_PACK_UNIQUE_IDS,
153 m_variant_pack.num_ptrs,
155 if (
status != CUDNN_STATUS_SUCCESS) {
159 "CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR: SetAttribute CUDNN_ATTR_VARIANT_PACK_UNIQUE_IDS Failed");
160 return std::move(m_variant_pack);
163 status = cudnnBackendSetAttribute(m_variant_pack.pointer->get_backend_descriptor(),
164 CUDNN_ATTR_VARIANT_PACK_WORKSPACE,
167 &m_variant_pack.workspace);
168 if (
status != CUDNN_STATUS_SUCCESS) {
172 "CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR: SetAttribute CUDNN_ATTR_VARIANT_PACK_WORKSPACE Failed");
173 return std::move(m_variant_pack);
177 status = cudnnBackendFinalize(m_variant_pack.pointer->get_backend_descriptor());
178 if (
status != CUDNN_STATUS_SUCCESS) {
180 &m_variant_pack,
status,
"CUDNN_BACKEND_VARIANT_PACK_DESCRIPTOR: cudnnFinalize Failed");
181 return std::move(m_variant_pack);
183 return std::move(m_variant_pack);
VariantPack_v8 m_variant_pack
VariantPack_v8(VariantPack_v8 &&from)
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.
VariantPack_v8 & operator=(VariantPack_v8 const &)=delete
ManagedOpaqueDescriptor get_desc() const
Returns a copy of underlying managed descriptor.
auto setUids(int64_t num_uids, int64_t *uid) -> VariantPackBuilder_v8 &
Set Uids for the VariantPack_v8.
~VariantPack_v8()=default
cudnnStatus_t get_status() const
Current status of the descriptor.
friend class VariantPackBuilder_v8
VariantPack_v8 && build()
const char * get_error() const
Diagonistic error message if any.
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.
cudnnStatus_t status
Shared pointer of the OpaqueBackendPointer.