Sfoglia il codice sorgente

Interfaces: Check the return value of cudaMalloc and cudaFree.

[Coccinelle] cuda_check_return_values.cocci.
Cyril Roelandt 12 anni fa
parent
commit
e59b6b6388

+ 33 - 11
src/datawizard/interfaces/bcsr_interface.c

@@ -295,19 +295,22 @@ static ssize_t allocate_bcsr_buffer_on_node(void *data_interface_, uint32_t dst_
 			break;
 #ifdef STARPU_USE_CUDA
 		case STARPU_CUDA_RAM:
-			cudaMalloc((void **)&addr_nzval, nnz*r*c*elemsize);
-			if (!addr_nzval)
+		{
+			cudaError_t err;
+			err = cudaMalloc((void **)&addr_nzval, nnz*r*c*elemsize);
+			if (STARPU_UNLIKELY(err != cudaSuccess || !addr_nzval))
 				goto fail_nzval;
 
-			cudaMalloc((void **)&addr_colind, nnz*sizeof(uint32_t));
-			if (!addr_colind)
+			err = cudaMalloc((void **)&addr_colind, nnz*sizeof(uint32_t));
+			if (STARPU_UNLIKELY(err != cudaSuccess || !addr_colind))
 				goto fail_colind;
 
-			cudaMalloc((void **)&addr_rowptr, (nrow+1)*sizeof(uint32_t));
-			if (!addr_rowptr)
+			err = cudaMalloc((void **)&addr_rowptr, (nrow+1)*sizeof(uint32_t));
+			if (STARPU_UNLIKELY(err != cudaSuccess || !addr_rowptr))
 				goto fail_rowptr;
 
 			break;
+		}
 #endif
 #ifdef STARPU_USE_OPENCL
 		case STARPU_OPENCL_RAM:
@@ -353,8 +356,13 @@ fail_rowptr:
 			break;
 #ifdef STARPU_USE_CUDA
 		case STARPU_CUDA_RAM:
-			cudaFree((void*)addr_colind);
+		{
+			cudaError_t err;
+			err = cudaFree((void*)addr_colind);
+			if (STARPU_UNLIKELY(err != cudaSuccess))
+				STARPU_CUDA_REPORT_ERROR(err);
 			break;
+		}
 #endif
 #ifdef STARPU_USE_OPENCL
 		case STARPU_OPENCL_RAM:
@@ -378,8 +386,13 @@ fail_colind:
 			break;
 #ifdef STARPU_USE_CUDA
 		case STARPU_CUDA_RAM:
-			cudaFree((void*)addr_nzval);
+		{
+			cudaError_t err;
+			err = cudaFree((void*)addr_nzval);
 			break;
+			if (STARPU_UNLIKELY(err != cudaSuccess))
+				STARPU_CUDA_REPORT_ERROR(err);
+		}
 #endif
 #ifdef STARPU_USE_OPENCL
 		case STARPU_OPENCL_RAM:
@@ -415,10 +428,19 @@ static void free_bcsr_buffer_on_node(void *data_interface, uint32_t node)
 			break;
 #ifdef STARPU_USE_CUDA
 		case STARPU_CUDA_RAM:
-			cudaFree((void*)bcsr_interface->nzval);
-			cudaFree((void*)bcsr_interface->colind);
-			cudaFree((void*)bcsr_interface->rowptr);
+		{
+			cudaError_t err;
+			err = cudaFree((void*)bcsr_interface->nzval);
+			if (STARPU_UNLIKELY(err != cudaSuccess))
+				STARPU_CUDA_REPORT_ERROR(err);
+			err = cudaFree((void*)bcsr_interface->colind);
+			if (STARPU_UNLIKELY(err != cudaSuccess))
+				STARPU_CUDA_REPORT_ERROR(err);
+			err = cudaFree((void*)bcsr_interface->rowptr);
+			if (STARPU_UNLIKELY(err != cudaSuccess))
+				STARPU_CUDA_REPORT_ERROR(err);
 			break;
+		}
 #endif
 #ifdef STARPU_USE_OPENCL
 		case STARPU_OPENCL_RAM:

+ 9 - 6
src/datawizard/interfaces/csr_interface.c

@@ -269,19 +269,22 @@ static ssize_t allocate_csr_buffer_on_node(void *data_interface_, uint32_t dst_n
 			break;
 #ifdef STARPU_USE_CUDA
 		case STARPU_CUDA_RAM:
-			cudaMalloc((void **)&addr_nzval, nnz*elemsize);
-			if (!addr_nzval)
+		{
+			cudaError_t err;
+			err = cudaMalloc((void **)&addr_nzval, nnz*elemsize);
+			if (STARPU_UNLIKELY(err != cudaSuccess ||!addr_nzval))
 				goto fail_nzval;
 
-			cudaMalloc((void **)&addr_colind, nnz*sizeof(uint32_t));
-			if (!addr_colind)
+			err = cudaMalloc((void **)&addr_colind, nnz*sizeof(uint32_t));
+			if (STARPU_UNLIKELY(err != cudaSuccess || !addr_colind))
 				goto fail_colind;
 
-			cudaMalloc((void **)&addr_rowptr, (nrow+1)*sizeof(uint32_t));
-			if (!addr_rowptr)
+			err = cudaMalloc((void **)&addr_rowptr, (nrow+1)*sizeof(uint32_t));
+			if (STARPU_UNLIKELY(err != cudaSuccess || !addr_rowptr))
 				goto fail_rowptr;
 
 			break;
+		}
 #endif
 #ifdef STARPU_USE_OPENCL
 	        case STARPU_OPENCL_RAM:

+ 9 - 2
src/datawizard/interfaces/multiformat_interface.c

@@ -253,17 +253,24 @@ static void free_multiformat_buffer_on_node(void *data_interface, uint32_t node)
 			break;
 #ifdef STARPU_USE_CUDA
 		case STARPU_CUDA_RAM:
+		{
+			cudaError_t err;
 			if (multiformat_interface->cpu_ptr)
 			{
-				cudaFree(multiformat_interface->cpu_ptr);
+				err = cudaFree(multiformat_interface->cpu_ptr);
+				if (STARPU_UNLIKELY(err != cudaSuccess))
+					STARPU_CUDA_REPORT_ERROR(err);
 				multiformat_interface->cpu_ptr = NULL;
 			}
 			if (multiformat_interface->cuda_ptr)
 			{
-				cudaFree(multiformat_interface->cuda_ptr);
+				err = cudaFree(multiformat_interface->cuda_ptr);
+				if (STARPU_UNLIKELY(err != cudaSuccess))
+					STARPU_CUDA_REPORT_ERROR(err);
 				multiformat_interface->cuda_ptr = NULL;
 			}
 			break;
+		}
 #endif
 #ifdef STARPU_USE_OPENCL
 		case STARPU_OPENCL_RAM:

+ 6 - 1
src/datawizard/interfaces/variable_interface.c

@@ -272,8 +272,13 @@ static void free_variable_buffer_on_node(void *data_interface, uint32_t node)
 			break;
 #ifdef STARPU_USE_CUDA
 		case STARPU_CUDA_RAM:
-			cudaFree((void*)STARPU_VARIABLE_GET_PTR(data_interface));
+		{
+			cudaError_t err;
+			err = cudaFree((void*)STARPU_VARIABLE_GET_PTR(data_interface));
+			if (STARPU_UNLIKELY(err != cudaSuccess))
+				STARPU_CUDA_REPORT_ERROR(err);
 			break;
+		}
 #endif
 #ifdef STARPU_USE_OPENCL
                 case STARPU_OPENCL_RAM: