diff options
author | Lancelot Six <lancelot.six@amd.com> | 2023-10-17 15:45:45 +0000 |
---|---|---|
committer | Lancelot Six <lancelot.six@amd.com> | 2023-10-18 08:26:23 +0000 |
commit | fded0fb898618b5b659762ace776144afa876035 (patch) | |
tree | 204071443f2e22255a8f6f2cd193fd4269b63bcd | |
parent | 0f79aa900f3a69780dde1e934ffe21e30236934e (diff) | |
download | gdb-fded0fb898618b5b659762ace776144afa876035.zip gdb-fded0fb898618b5b659762ace776144afa876035.tar.gz gdb-fded0fb898618b5b659762ace776144afa876035.tar.bz2 |
gdb/testsuite/gdb.rocm: Check value returned by hipDeviceSynchronize
Functions of the hip runtime returning a hipError_t can be marked
nodiscard depending on the configuration[1] (when compiled with C++17).
This patch makes sure that we always check the value returned by
hipDeviceSynchronize and friends, and print an error message when
appropriate. This avoid a wall of warnings when running the testsuite
if the compiler defaults to using C++17.
It is always a good practice to check the return values anyway.
[1] https://github.com/ROCm-Developer-Tools/HIP/blob/docs/5.7.1/include/hip/hip_runtime_api.h#L203-L218
Change-Id: I2a819a8ac45f4bcf814efe9a2ff12c6a7ad22f97
Approved-By: Simon Marchi <simon.marchi@efficios.com>
-rw-r--r-- | gdb/testsuite/gdb.rocm/fork-exec-gpu-to-non-gpu-execer.cpp | 13 | ||||
-rw-r--r-- | gdb/testsuite/gdb.rocm/fork-exec-non-gpu-to-gpu-execee.cpp | 14 | ||||
-rw-r--r-- | gdb/testsuite/gdb.rocm/multi-inferior-gpu.cpp | 2 | ||||
-rw-r--r-- | gdb/testsuite/gdb.rocm/precise-memory-warning-sigsegv.cpp | 13 | ||||
-rw-r--r-- | gdb/testsuite/gdb.rocm/precise-memory.cpp | 13 | ||||
-rw-r--r-- | gdb/testsuite/lib/rocm.exp | 3 |
6 files changed, 52 insertions, 6 deletions
diff --git a/gdb/testsuite/gdb.rocm/fork-exec-gpu-to-non-gpu-execer.cpp b/gdb/testsuite/gdb.rocm/fork-exec-gpu-to-non-gpu-execer.cpp index 1a731ae..e42c8f1 100644 --- a/gdb/testsuite/gdb.rocm/fork-exec-gpu-to-non-gpu-execer.cpp +++ b/gdb/testsuite/gdb.rocm/fork-exec-gpu-to-non-gpu-execer.cpp @@ -18,6 +18,17 @@ #include <hip/hip_runtime.h> #include <unistd.h> +#define CHECK(cmd) \ + { \ + hipError_t error = cmd; \ + if (error != hipSuccess) \ + { \ + fprintf (stderr, "error: '%s'(%d) at %s:%d\n", \ + hipGetErrorString (error), error, __FILE__, __LINE__); \ + exit (EXIT_FAILURE); \ + } \ + } + __global__ static void kernel1 () {} @@ -50,6 +61,6 @@ main () kernel2<<<1, 1>>> (); - hipDeviceSynchronize (); + CHECK (hipDeviceSynchronize ()); return 0; } diff --git a/gdb/testsuite/gdb.rocm/fork-exec-non-gpu-to-gpu-execee.cpp b/gdb/testsuite/gdb.rocm/fork-exec-non-gpu-to-gpu-execee.cpp index 2de8fe2..cffeedb 100644 --- a/gdb/testsuite/gdb.rocm/fork-exec-non-gpu-to-gpu-execee.cpp +++ b/gdb/testsuite/gdb.rocm/fork-exec-non-gpu-to-gpu-execee.cpp @@ -17,6 +17,18 @@ #include <hip/hip_runtime.h> +#define CHECK(cmd) \ + { \ + hipError_t error = cmd; \ + if (error != hipSuccess) \ + { \ + fprintf (stderr, "error: '%s'(%d) at %s:%d\n", \ + hipGetErrorString (error), error, __FILE__, __LINE__); \ + exit (EXIT_FAILURE); \ + } \ + } + + __device__ static void break_here_execee () {} @@ -31,6 +43,6 @@ int main () { kernel<<<1, 1>>> (); - hipDeviceSynchronize (); + CHECK (hipDeviceSynchronize ()); return 0; } diff --git a/gdb/testsuite/gdb.rocm/multi-inferior-gpu.cpp b/gdb/testsuite/gdb.rocm/multi-inferior-gpu.cpp index d64afdd..4ba406f 100644 --- a/gdb/testsuite/gdb.rocm/multi-inferior-gpu.cpp +++ b/gdb/testsuite/gdb.rocm/multi-inferior-gpu.cpp @@ -95,7 +95,7 @@ child (int argc, char **argv) CHECK (hipSetDevice (dev_number)); kern<<<1, 1>>> (); - hipDeviceSynchronize (); + CHECK (hipDeviceSynchronize ()); return 0; } diff --git a/gdb/testsuite/gdb.rocm/precise-memory-warning-sigsegv.cpp b/gdb/testsuite/gdb.rocm/precise-memory-warning-sigsegv.cpp index bf1451a..d8ea869 100644 --- a/gdb/testsuite/gdb.rocm/precise-memory-warning-sigsegv.cpp +++ b/gdb/testsuite/gdb.rocm/precise-memory-warning-sigsegv.cpp @@ -17,6 +17,17 @@ #include <hip/hip_runtime.h> +#define CHECK(cmd) \ + { \ + hipError_t error = cmd; \ + if (error != hipSuccess) \ + { \ + fprintf (stderr, "error: '%s'(%d) at %s:%d\n", \ + hipGetErrorString (error), error, __FILE__, __LINE__); \ + exit (EXIT_FAILURE); \ + } \ + } + __global__ void kernel () { @@ -28,6 +39,6 @@ int main (int argc, char* argv[]) { kernel<<<1, 1>>> (); - hipDeviceSynchronize (); + CHECK (hipDeviceSynchronize ()); return 0; } diff --git a/gdb/testsuite/gdb.rocm/precise-memory.cpp b/gdb/testsuite/gdb.rocm/precise-memory.cpp index 034f023..610f187 100644 --- a/gdb/testsuite/gdb.rocm/precise-memory.cpp +++ b/gdb/testsuite/gdb.rocm/precise-memory.cpp @@ -17,6 +17,17 @@ #include <hip/hip_runtime.h> +#define CHECK(cmd) \ + { \ + hipError_t error = cmd; \ + if (error != hipSuccess) \ + { \ + fprintf (stderr, "error: '%s'(%d) at %s:%d\n", \ + hipGetErrorString (error), error, __FILE__, __LINE__); \ + exit (EXIT_FAILURE); \ + } \ + } + __global__ void kernel () { @@ -27,6 +38,6 @@ int main (int argc, char* argv[]) { kernel<<<1, 1>>> (); - hipDeviceSynchronize (); + CHECK (hipDeviceSynchronize ()); return 0; } diff --git a/gdb/testsuite/lib/rocm.exp b/gdb/testsuite/lib/rocm.exp index fcdf665..c2ffc57 100644 --- a/gdb/testsuite/lib/rocm.exp +++ b/gdb/testsuite/lib/rocm.exp @@ -93,7 +93,8 @@ gdb_caching_proc allow_hipcc_tests {} { main () { kern<<<1, 1>>> (); - hipDeviceSynchronize (); + if (hipDeviceSynchronize () != hipSuccess) + return -1; return 0; } } executable $flags]} { |