From e67a8792197da26cd87fccf3c8e682cacf2855cd Mon Sep 17 00:00:00 2001
From: Mathieu Faverge <mathieu.faverge@inria.fr>
Date: Thu, 6 Jul 2023 12:02:03 +0200
Subject: [PATCH] cuda: check error after launching kernels

---
 gpucublas/compute/cuda_dlag2h.cu | 16 ++++++++++++++++
 gpucublas/compute/cuda_zlag2c.cu | 16 ++++++++++++++++
 2 files changed, 32 insertions(+)

diff --git a/gpucublas/compute/cuda_dlag2h.cu b/gpucublas/compute/cuda_dlag2h.cu
index 8136c248f..000fc7454 100644
--- a/gpucublas/compute/cuda_dlag2h.cu
+++ b/gpucublas/compute/cuda_dlag2h.cu
@@ -133,6 +133,7 @@ CUDA_dlag2h( int m, int n,
              cublasHandle_t handle )
 {
     cudaStream_t stream;
+    cudaError_t  err;
     double       rmax;
 
     if ( m < 0 ) {
@@ -166,6 +167,13 @@ CUDA_dlag2h( int m, int n,
 
     cuda_dlag2h_kernel<<< grid, threads, 0, stream >>>( m, n, A, lda, HA, ldha, rmax );
 
+    err = cudaGetLastError();
+    if ( err != cudaSuccess )
+    {
+        fprintf( stderr, "CUDA_dlag2h failed to launch CUDA kernel %s\n", cudaGetErrorString(err) );
+        return CHAMELEON_ERR_UNEXPECTED;
+    }
+
     return 0;
 }
 
@@ -261,6 +269,7 @@ CUDA_hlag2d( int m, int n,
              cublasHandle_t handle )
 {
     cudaStream_t stream;
+    cudaError_t  err;
 
     if ( m < 0 ) {
         return -1;
@@ -286,5 +295,12 @@ CUDA_hlag2d( int m, int n,
     cublasGetStream( handle, &stream );
     cuda_hlag2d_kernel<<< grid, threads, 0, stream >>> ( m, n, HA, ldha, A, lda );
 
+    err = cudaGetLastError();
+    if ( err != cudaSuccess )
+    {
+        fprintf( stderr, "CUDA_hlag2d failed to launch CUDA kernel %s\n", cudaGetErrorString(err) );
+        return CHAMELEON_ERR_UNEXPECTED;
+    }
+
     return 0;
 }
diff --git a/gpucublas/compute/cuda_zlag2c.cu b/gpucublas/compute/cuda_zlag2c.cu
index cf3f35062..8b1fdfe71 100644
--- a/gpucublas/compute/cuda_zlag2c.cu
+++ b/gpucublas/compute/cuda_zlag2c.cu
@@ -152,6 +152,7 @@ CUDA_zlag2c( int m, int n,
              cublasHandle_t handle )
 {
     cudaStream_t stream;
+    cudaError_t  err;
     double       rmax;
 
     if ( m < 0 ) {
@@ -180,6 +181,13 @@ CUDA_zlag2c( int m, int n,
 
     cuda_zlag2c_kernel<<< grid, threads, 0, stream >>>( m, n, A, lda, SA, ldsa, rmax );
 
+    err = cudaGetLastError();
+    if ( err != cudaSuccess )
+    {
+        fprintf( stderr, "CUDA_zlag2c failed to launch CUDA kernel %s\n", cudaGetErrorString(err) );
+        return CHAMELEON_ERR_UNEXPECTED;
+    }
+
     return 0;
 }
 
@@ -275,6 +283,7 @@ CUDA_clag2z( int m, int n,
              cublasHandle_t handle )
 {
     cudaStream_t stream;
+    cudaError_t  err;
 
     if ( m < 0 ) {
         return -1;
@@ -300,5 +309,12 @@ CUDA_clag2z( int m, int n,
     cublasGetStream( handle, &stream );
     cuda_clag2z_kernel<<< grid, threads, 0, stream >>> ( m, n, SA, ldsa, A, lda );
 
+    err = cudaGetLastError();
+    if ( err != cudaSuccess )
+    {
+        fprintf( stderr, "CUDA_clag2z failed to launch CUDA kernel %s\n", cudaGetErrorString(err) );
+        return CHAMELEON_ERR_UNEXPECTED;
+    }
+
     return 0;
 }
-- 
GitLab