[flang-commits] [flang] [flang][cuda] Adding runtime call to CUFRegisterVariable (PR #113952)
via flang-commits
flang-commits at lists.llvm.org
Mon Oct 28 12:26:05 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-runtime
Author: Renaud Kauffmann (Renaud-K)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/113952.diff
2 Files Affected:
- (modified) flang/include/flang/Runtime/CUDA/registration.h (+5)
- (modified) flang/runtime/CUDA/registration.cpp (+8)
``````````diff
diff --git a/flang/include/flang/Runtime/CUDA/registration.h b/flang/include/flang/Runtime/CUDA/registration.h
index 009715613e29f7..5237069a4c739c 100644
--- a/flang/include/flang/Runtime/CUDA/registration.h
+++ b/flang/include/flang/Runtime/CUDA/registration.h
@@ -11,6 +11,7 @@
#include "flang/Runtime/entry-names.h"
#include <cstddef>
+#include <cstdint>
namespace Fortran::runtime::cuda {
@@ -23,6 +24,10 @@ void *RTDECL(CUFRegisterModule)(void *data);
void RTDECL(CUFRegisterFunction)(
void **module, const char *fctSym, char *fctName);
+/// Register a device variable.
+void RTDECL(CUFRegisterVariable)(
+ void **module, char *varSym, const char *varName, int64_t size);
+
} // extern "C"
} // namespace Fortran::runtime::cuda
diff --git a/flang/runtime/CUDA/registration.cpp b/flang/runtime/CUDA/registration.cpp
index 20d274c4d8d1c2..b7b6ef389bffba 100644
--- a/flang/runtime/CUDA/registration.cpp
+++ b/flang/runtime/CUDA/registration.cpp
@@ -21,6 +21,9 @@ extern void __cudaRegisterFatBinaryEnd(void *);
extern void __cudaRegisterFunction(void **fatCubinHandle, const char *hostFun,
char *deviceFun, const char *deviceName, int thread_limit, uint3 *tid,
uint3 *bid, dim3 *bDim, dim3 *gDim, int *wSize);
+extern void __cudaRegisterVar(void **fatCubinHandle, char *hostVar,
+ const char *deviceAddress, const char *deviceName, int ext, size_t size,
+ int constant, int global);
void *RTDECL(CUFRegisterModule)(void *data) {
void **fatHandle{__cudaRegisterFatBinary(data)};
@@ -34,6 +37,11 @@ void RTDEF(CUFRegisterFunction)(
(uint3 *)0, (dim3 *)0, (dim3 *)0, (int *)0);
}
+void RTDEF(CUFRegisterVariable)(
+ void **module, char *varSym, const char *varName, int64_t size) {
+ __cudaRegisterVar(module, varSym, varName, varName, 0, size, 0, 0);
+}
+
} // extern "C"
} // namespace Fortran::runtime::cuda
``````````
</details>
https://github.com/llvm/llvm-project/pull/113952
More information about the flang-commits
mailing list