|
13 | 13 |
|
14 | 14 | #include <executorch/backends/vulkan/runtime/graph/ops/impl/utils/DimUtils.h>
|
15 | 15 |
|
16 |
| -#include <cstring> |
17 |
| - |
18 | 16 | namespace vkcompute {
|
19 | 17 |
|
20 |
| -template <typename T> |
21 |
| -void memcpy_to_mapping_impl( |
22 |
| - const void* src, |
23 |
| - vkapi::MemoryMap& dst_mapping, |
24 |
| - const size_t nbytes) { |
25 |
| - T* data_ptr = dst_mapping.template data<T>(); |
26 |
| - memcpy(data_ptr, reinterpret_cast<const T*>(src), nbytes); |
27 |
| -} |
28 |
| - |
29 |
| -template <typename T> |
30 |
| -void memcpy_from_mapping_impl( |
31 |
| - vkapi::MemoryMap& src_mapping, |
32 |
| - void* dst, |
33 |
| - const size_t nbytes) { |
34 |
| - T* data_ptr = src_mapping.template data<T>(); |
35 |
| - memcpy(reinterpret_cast<T*>(dst), data_ptr, nbytes); |
36 |
| -} |
37 |
| - |
38 |
| -void memcpy_to_mapping( |
39 |
| - const void* src, |
40 |
| - vkapi::MemoryMap& dst_mapping, |
41 |
| - const size_t nbytes, |
42 |
| - const vkapi::ScalarType dtype) { |
43 |
| -#define DTYPE_CASE(ctype, vkformat, name) \ |
44 |
| - case vkapi::ScalarType::name: \ |
45 |
| - memcpy_to_mapping_impl<ctype>(src, dst_mapping, nbytes); \ |
46 |
| - break; |
47 |
| - |
48 |
| - switch (dtype) { |
49 |
| - VK_FORALL_SCALAR_TYPES(DTYPE_CASE) |
50 |
| - default: |
51 |
| - VK_THROW("Unrecognized dtype!"); |
52 |
| - } |
53 |
| -#undef DTYPE_CASE |
54 |
| -} |
55 |
| - |
56 |
| -void memcpy_from_mapping( |
57 |
| - vkapi::MemoryMap& src_mapping, |
58 |
| - void* dst, |
59 |
| - const size_t nbytes, |
60 |
| - const vkapi::ScalarType dtype) { |
61 |
| -#define DTYPE_CASE(ctype, vkformat, name) \ |
62 |
| - case vkapi::ScalarType::name: \ |
63 |
| - memcpy_from_mapping_impl<ctype>(src_mapping, dst, nbytes); \ |
64 |
| - break; |
65 |
| - |
66 |
| - switch (dtype) { |
67 |
| - VK_FORALL_SCALAR_TYPES(DTYPE_CASE) |
68 |
| - default: |
69 |
| - VK_THROW("Unrecognized dtype!"); |
70 |
| - } |
71 |
| -#undef DTYPE_CASE |
72 |
| -} |
73 |
| - |
74 |
| -void copy_ptr_to_staging( |
75 |
| - const void* src, |
76 |
| - api::StagingBuffer& staging, |
77 |
| - const size_t nbytes) { |
78 |
| - vkapi::MemoryMap mapping(staging.buffer(), vkapi::MemoryAccessType::WRITE); |
79 |
| - mapping.invalidate(); |
80 |
| - memcpy_to_mapping(src, mapping, nbytes, staging.dtype()); |
81 |
| -} |
82 |
| - |
83 |
| -void copy_staging_to_ptr( |
84 |
| - api::StagingBuffer& staging, |
85 |
| - void* dst, |
86 |
| - const size_t nbytes) { |
87 |
| - vkapi::MemoryMap mapping(staging.buffer(), vkapi::MemoryAccessType::READ); |
88 |
| - mapping.invalidate(); |
89 |
| - memcpy_from_mapping(mapping, dst, nbytes, staging.dtype()); |
90 |
| -} |
91 |
| - |
92 |
| -void set_staging_zeros(api::StagingBuffer& staging, const size_t nbytes) { |
93 |
| - vkapi::MemoryMap mapping(staging.buffer(), vkapi::MemoryAccessType::WRITE); |
94 |
| - uint8_t* data_ptr = mapping.template data<uint8_t>(); |
95 |
| - memset(data_ptr, 0, staging.nbytes()); |
96 |
| -} |
97 |
| - |
98 | 18 | vkapi::ShaderInfo get_nchw_to_tensor_shader(
|
99 | 19 | const api::vTensor& v_dst,
|
100 | 20 | const bool int8_buffer_enabled) {
|
|
0 commit comments