From 68905098aa5531dd86117f0fe8fad82393a7173d Mon Sep 17 00:00:00 2001
From: Hashim Sharif <hsharif3@tyler.cs.illinois.edu>
Date: Wed, 16 Jan 2019 09:40:49 -0600
Subject: [PATCH] Freeing unused memory + file descriptors

---
 .../dnn_sources/include/utils.h               | 25 ++++++++++++-------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/llvm/projects/hpvm-tensor-rt/dnn_sources/include/utils.h b/llvm/projects/hpvm-tensor-rt/dnn_sources/include/utils.h
index 225b75a857..56d3ecf6bd 100644
--- a/llvm/projects/hpvm-tensor-rt/dnn_sources/include/utils.h
+++ b/llvm/projects/hpvm-tensor-rt/dnn_sources/include/utils.h
@@ -197,6 +197,8 @@ void* readInputTensor(char* file_name, int data_type, int dim1_size, int dim2_si
  
   fseek(file, file_header_size, SEEK_CUR); // Skipping the file header
   size_t bytes_read = fread(file_data, 1, sizeof(uint8_t) * num_elems, file);
+
+  fclose(file);
   
   for (size_t i = 0; i < num_elems; ++i){
     tensor_data[i] = (float) file_data[i] / 255.0f;
@@ -209,7 +211,7 @@ void* readInputTensor(char* file_name, int data_type, int dim1_size, int dim2_si
 					dim3_size, dim4_size);
   
   initTensorData(input, tensor_data, size_in_bytes);
-  compareValues(input, tensor_data, num_elems);
+  //  compareValues(input, tensor_data, num_elems);
   
   return input;  
 }
@@ -222,8 +224,8 @@ struct Tensor* readTrainedWeights(char* file_name, int data_type,
 
   // FIXIT: Don't assume floating point types
   int type_size = 4; // NOTE: Assuming floating point tensors
-  int num_elems = dim1_size * dim2_size * dim3_size * dim4_size;
-  int size_in_bytes = type_size * dim1_size * dim2_size * dim3_size * dim4_size;
+  long int num_elems = dim1_size * dim2_size * dim3_size * dim4_size;
+  long int size_in_bytes = type_size * dim1_size * dim2_size * dim3_size * dim4_size;
   float* tensor_data = (float*) malloc(sizeof(float) * num_elems);
   int file_header_size = 0;
   
@@ -236,15 +238,17 @@ struct Tensor* readTrainedWeights(char* file_name, int data_type,
   fseek(file, file_header_size, SEEK_CUR); // Skipping the file header
   size_t bytes_read = fread(tensor_data, 1, size_in_bytes, file);
 
-  //for(unsigned i = 0 ; i < 40; i++){
-  //  printf("tensor_data[%d] = %f \n", i, tensor_data[i]);
-  //}
+  printf("size in bytes = %lu, bytes read = %lu \n", size_in_bytes, bytes_read);
+
+  fclose(file);
+  
   
   struct Tensor* weights = (struct Tensor*) create4DTensor(data_type, nchw, dim1_size, dim2_size,
 					                   dim3_size, dim4_size);
   
   initTensorData(weights, tensor_data, size_in_bytes);
-  compareValues(weights, tensor_data, num_elems);
+  //compareValues(weights, tensor_data, num_elems);
+  free(tensor_data);
 
   return weights;
 }
@@ -265,6 +269,8 @@ uint8_t* readLabels(char* labels_file, int num_labels){
     printf("labels[%d] = %u \n", i, labels[i]);
   }
 
+  fclose(file);
+  
   printf("--labels bytes_read = %d \n", bytes_read);
   return labels;
 }
@@ -353,9 +359,10 @@ void computeAccuracy2(uint8_t* labels, int num_labels, void* result_ptr, unsigne
     std::string print_str = ss.str();
   
     fwrite(print_str.c_str(), 1, print_str.length(), fp);
-    fclose(fp);
   }
-  
+
+  fclose(fp);
+
 }
 
 
-- 
GitLab