#include "swap_blocks.mluh" namespace tmo { KernelStatus invokeSwapBlocksKernel(const cnnlHandle_t handle, void *dst, const void *src, const int64_t &block_size_in_bytes, const cnrtMemTransDir_t &memcpy_type, const std::map &block_mapping) { cnrtQueue_t queue; cnnlGetQueue(handle, &queue); for (const auto &pair : block_mapping) { int64_t src_block_number = pair.first; int64_t dst_block_number = pair.second; int64_t src_offset = src_block_number * block_size_in_bytes; int64_t dst_offset = dst_block_number * block_size_in_bytes; cnrtMemcpyAsync((int8_t *)dst + dst_offset, (int8_t *)src + src_offset, block_size_in_bytes, queue, memcpy_type); } return KernelStatus::KERNEL_STATUS_SUCCESS; } } // namespace tmo