brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · a7eb0cf Raw
36 lines · cpp
1//===-- lib/cuda/memmove-function.cpp ---------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "flang/Runtime/CUDA/memmove-function.h"10#include "flang-rt/runtime/terminator.h"11#include "flang/Runtime/CUDA/common.h"12 13#include "cuda_runtime.h"14 15namespace Fortran::runtime::cuda {16 17void *MemmoveHostToDevice(void *dst, const void *src, std::size_t count) {18  // TODO: Use cudaMemcpyAsync when we have support for stream.19  CUDA_REPORT_IF_ERROR(cudaMemcpy(dst, src, count, cudaMemcpyHostToDevice));20  return dst;21}22 23void *MemmoveDeviceToHost(void *dst, const void *src, std::size_t count) {24  // TODO: Use cudaMemcpyAsync when we have support for stream.25  CUDA_REPORT_IF_ERROR(cudaMemcpy(dst, src, count, cudaMemcpyDeviceToHost));26  return dst;27}28 29void *MemmoveDeviceToDevice(void *dst, const void *src, std::size_t count) {30  // TODO: Use cudaMemcpyAsync when we have support for stream.31  CUDA_REPORT_IF_ERROR(cudaMemcpy(dst, src, count, cudaMemcpyDeviceToDevice));32  return dst;33}34 35} // namespace Fortran::runtime::cuda36