blob: 12beaa23560dc437bbb0866c18aeca62e20128ec [file] [log] [blame] [edit]
//===-- lib/cuda/stream.cpp -------------------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include "flang/Runtime/CUDA/stream.h"
#include "flang-rt/runtime/allocator-registry.h"
#include "flang-rt/runtime/derived.h"
#include "flang-rt/runtime/descriptor.h"
#include "flang-rt/runtime/environment.h"
#include "flang-rt/runtime/lock.h"
#include "flang-rt/runtime/stat.h"
#include "flang-rt/runtime/terminator.h"
#include "flang/Runtime/CUDA/allocator.h"
#include "flang/Runtime/CUDA/common.h"
#include "flang/Support/Fortran.h"
namespace Fortran::runtime::cuda {
static thread_local cudaStream_t defaultStream{nullptr};
extern "C" {
int RTDEF(CUFSetDefaultStream)(cudaStream_t stream) {
defaultStream = stream;
return StatOk;
}
cudaStream_t RTDEF(CUFGetDefaultStream)() { return defaultStream; }
int RTDEF(CUFStreamSynchronize)(cudaStream_t stream) {
return cudaStreamSynchronize(stream);
}
int RTDEF(CUFStreamSynchronizeNull)() {
return cudaStreamSynchronize(RTNAME(CUFGetDefaultStream)());
}
int RTDEF(CUFStreamDestroy)(cudaStream_t stream) {
CUFResetStream(stream);
return cudaStreamDestroy(stream);
}
}
} // namespace Fortran::runtime::cuda