Realm
A distributed, event-based tasking library
Loading...
Searching...
No Matches
idx_impl.h
Go to the documentation of this file.
1/*
2 * Copyright 2025 Stanford University, NVIDIA Corporation
3 * SPDX-License-Identifier: Apache-2.0
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18// Realm index space implementation
19
20#ifndef REALM_IDX_IMPL_H
21#define REALM_IDX_IMPL_H
22
23#include "realm/indexspace.h"
24
25namespace Realm {
26
28 public:
30
32
33 virtual IndexSpaceGenericImpl *clone_at(void *dst) const = 0;
34
35 virtual void destroy(Event wait_on) = 0;
36
37 virtual Event copy(const std::vector<CopySrcDstField> &srcs,
38 const std::vector<CopySrcDstField> &dsts,
39 const void *indirects_data, size_t indirect_len,
40 const ProfilingRequestSet &requests, Event wait_on,
41 int priority) const = 0;
42
43 // given an instance layout, attempts to provide bounds (start relative to
44 // the base of the instance and relative limit - i.e. first nonaccessibly
45 // offset) on affine accesses via elements in this index space - returns
46 // true if successful, false if not
48 uintptr_t &rel_base, uintptr_t &limit) const = 0;
49
53 IndexSpaceGenericImpl &operator=(IndexSpaceGenericImpl &&) noexcept = default;
54 };
55
56 template <int N, typename T>
58 public:
60
61 virtual IndexSpaceGenericImpl *clone_at(void *dst) const;
62
63 virtual void destroy(Event wait_on);
64
65 virtual Event copy(const std::vector<CopySrcDstField> &srcs,
66 const std::vector<CopySrcDstField> &dsts,
67 const void *indirects_data, size_t indirect_len,
68 const ProfilingRequestSet &requests, Event wait_on,
69 int priority) const;
70
72 uintptr_t &rel_base, uintptr_t &limit) const;
73
75 };
76
77}; // namespace Realm
78
79#endif
Definition event.h:50
Definition idx_impl.h:57
virtual void destroy(Event wait_on)
virtual bool compute_affine_bounds(const InstanceLayoutGeneric *ilg, FieldID fid, uintptr_t &rel_base, uintptr_t &limit) const
IndexSpace< N, T > space
Definition idx_impl.h:74
IndexSpaceGenericImplTyped(const IndexSpace< N, T > &_space)
virtual Event copy(const std::vector< CopySrcDstField > &srcs, const std::vector< CopySrcDstField > &dsts, const void *indirects_data, size_t indirect_len, const ProfilingRequestSet &requests, Event wait_on, int priority) const
virtual IndexSpaceGenericImpl * clone_at(void *dst) const
Definition idx_impl.h:27
virtual Event copy(const std::vector< CopySrcDstField > &srcs, const std::vector< CopySrcDstField > &dsts, const void *indirects_data, size_t indirect_len, const ProfilingRequestSet &requests, Event wait_on, int priority) const =0
IndexSpaceGenericImpl(IndexSpaceGenericImpl &&) noexcept=default
IndexSpaceGenericImpl(const IndexSpaceGenericImpl &)=default
virtual void destroy(Event wait_on)=0
virtual bool compute_affine_bounds(const InstanceLayoutGeneric *ilg, FieldID fid, uintptr_t &rel_base, uintptr_t &limit) const =0
virtual IndexSpaceGenericImpl * clone_at(void *dst) const =0
IndexSpaceGenericImpl & operator=(const IndexSpaceGenericImpl &)=default
Definition inst_layout.h:164
Definition profiling.h:363
Definition activemsg.h:38
realm_field_id_t FieldID
Definition instance.h:45
Definition indexspace.h:323