Skip to content

Commit ce5ddb6

Browse files
committed
issue/612 - differentiate mempcy sync/async
1 parent e6fbcc8 commit ce5ddb6

File tree

4 files changed

+20
-12
lines changed

4 files changed

+20
-12
lines changed

include/infinicore/context/context.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ std::shared_ptr<Memory> allocateMemory(size_t size);
2525
std::shared_ptr<Memory> allocateHostMemory(size_t size);
2626
std::shared_ptr<Memory> allocatePinnedHostMemory(size_t size);
2727

28-
void memcpyH2D(void *dst, const void *src, size_t size);
28+
void memcpyH2D(void *dst, const void *src, size_t size, bool async = true);
2929
void memcpyD2H(void *dst, const void *src, size_t size);
30-
void memcpyD2D(void *dst, const void *src, size_t size);
30+
void memcpyD2D(void *dst, const void *src, size_t size, bool async = true);
3131
void memcpyH2H(void *dst, const void *src, size_t size);
3232

3333
} // namespace context

src/infinicore/context/context_impl.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,16 +129,16 @@ std::shared_ptr<Memory> allocatePinnedHostMemory(size_t size) {
129129
return ContextImpl::singleton().getCurrentRuntime()->allocatePinnedHostMemory(size);
130130
}
131131

132-
void memcpyH2D(void *dst, const void *src, size_t size) {
133-
return ContextImpl::singleton().getCurrentRuntime()->memcpyH2D(dst, src, size);
132+
void memcpyH2D(void *dst, const void *src, size_t size, bool async) {
133+
return ContextImpl::singleton().getCurrentRuntime()->memcpyH2D(dst, src, size, async);
134134
}
135135

136136
void memcpyD2H(void *dst, const void *src, size_t size) {
137137
return ContextImpl::singleton().getCurrentRuntime()->memcpyD2H(dst, src, size);
138138
}
139139

140-
void memcpyD2D(void *dst, const void *src, size_t size) {
141-
return ContextImpl::singleton().getCurrentRuntime()->memcpyD2D(dst, src, size);
140+
void memcpyD2D(void *dst, const void *src, size_t size, bool async) {
141+
return ContextImpl::singleton().getCurrentRuntime()->memcpyD2D(dst, src, size, async);
142142
}
143143

144144
void memcpyH2H(void *dst, const void *src, size_t size) {

src/infinicore/context/runtime/runtime.cc

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,16 +76,24 @@ std::shared_ptr<Memory> Runtime::allocatePinnedHostMemory(size_t size) {
7676
true);
7777
}
7878

79-
void Runtime::memcpyH2D(void *dst, const void *src, size_t size) {
80-
INFINICORE_CHECK_ERROR(infinirtMemcpyAsync(dst, src, size, INFINIRT_MEMCPY_H2D, stream_));
79+
void Runtime::memcpyH2D(void *dst, const void *src, size_t size, bool async) {
80+
if (async) {
81+
INFINICORE_CHECK_ERROR(infinirtMemcpyAsync(dst, src, size, INFINIRT_MEMCPY_H2D, stream_));
82+
} else {
83+
INFINICORE_CHECK_ERROR(infinirtMemcpy(dst, src, size, INFINIRT_MEMCPY_H2D));
84+
}
8185
}
8286

8387
void Runtime::memcpyD2H(void *dst, const void *src, size_t size) {
8488
INFINICORE_CHECK_ERROR(infinirtMemcpy(dst, src, size, INFINIRT_MEMCPY_D2H));
8589
}
8690

87-
void Runtime::memcpyD2D(void *dst, const void *src, size_t size) {
88-
INFINICORE_CHECK_ERROR(infinirtMemcpyAsync(dst, src, size, INFINIRT_MEMCPY_D2D, stream_));
91+
void Runtime::memcpyD2D(void *dst, const void *src, size_t size, bool async) {
92+
if (async) {
93+
INFINICORE_CHECK_ERROR(infinirtMemcpyAsync(dst, src, size, INFINIRT_MEMCPY_D2D, stream_));
94+
} else {
95+
INFINICORE_CHECK_ERROR(infinirtMemcpy(dst, src, size, INFINIRT_MEMCPY_D2D));
96+
}
8997
}
9098

9199
std::string Runtime::toString() const {

src/infinicore/context/runtime/runtime.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ class Runtime {
3434
std::shared_ptr<Memory> allocateMemory(size_t size);
3535
std::shared_ptr<Memory> allocatePinnedHostMemory(size_t size);
3636

37-
void memcpyH2D(void *dst, const void *src, size_t size);
37+
void memcpyH2D(void *dst, const void *src, size_t size, bool async = true);
3838
void memcpyD2H(void *dst, const void *src, size_t size);
39-
void memcpyD2D(void *dst, const void *src, size_t size);
39+
void memcpyD2D(void *dst, const void *src, size_t size, bool async = true);
4040

4141
std::string toString() const;
4242

0 commit comments

Comments
 (0)