From 7f0ba9f9384eda28aacb6d03f79c61285bc9f9c6 Mon Sep 17 00:00:00 2001
From: Hashim Sharif <hsharif3@tyler.cs.illinois.edu>
Date: Fri, 17 Jul 2020 15:56:17 -0500
Subject: [PATCH] Updating unit tessts

---
 .../dnn_sources/src/unit_tests.cc             | 58 +++++++++++++------
 1 file changed, 39 insertions(+), 19 deletions(-)

diff --git a/llvm/projects/hpvm-tensor-rt/dnn_sources/src/unit_tests.cc b/llvm/projects/hpvm-tensor-rt/dnn_sources/src/unit_tests.cc
index bde9a0cace..dd0abdb9c6 100644
--- a/llvm/projects/hpvm-tensor-rt/dnn_sources/src/unit_tests.cc
+++ b/llvm/projects/hpvm-tensor-rt/dnn_sources/src/unit_tests.cc
@@ -62,24 +62,23 @@ void testTensorHgemm(){
 
 
 
-void testTensorSgemm2(){
+void testTensorSgemm(){
 
   printf("***** TensorSgemm ***** \n\n");
-  void* lhs_ptr = create4DTensor(CUDNN_DATA_FLOAT, CUDNN_TENSOR_NCHW,
-				 10000, 800, 1, 1);
+  void* lhs_ptr = create4DTensor(CUDNN_DATA_FLOAT, CUDNN_TENSOR_NCHW, 5, 4, 1, 1);
   struct Tensor* lhs = (struct Tensor*) lhs_ptr;
-  
+  fillTensorWithOnes(lhs);
+ 
   float* data_arr = (float*) lhs->host_data;
   for(int i = 0; i < lhs->num_elems; i++){
     data_arr[i] = (i / 4) + 1;
   }
-  
-  void* rhs = create4DTensor(CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT,
-			     1, 1, 800, 800);
+
+  void* rhs = create4DTensor(CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, 1, 1, 4, 3);  
   fillTensorWithOnes(rhs);
   
   void* output = tensorGemmGPU(lhs, rhs);
-  //printTensorValues(output);
+  printTensorValues(output);
 }
 
 
@@ -291,24 +290,42 @@ void testTensorError(){
 
 void testTensorConv(){
 
-  // NOTE: The input channel count value (param2 to Tensor and Filter) must be the same
-  void* x3 = create4DTensor(CUDNN_DATA_FLOAT, CUDNN_TENSOR_NCHW, 1, 2, 4, 4);
-  // NOTE: Filter descriptors do NOT have batch size
-  // NOTE: First two dims are output channels (configurable), input channels (MUST match input channels)
-  void* filter = create4DTensor(CUDNN_DATA_FLOAT, CUDNN_TENSOR_NCHW, 2, 2, 2, 2);
-  fillTensorWithOnes(x3);
+  void* input = create4DTensor(CUDNN_DATA_FLOAT, CUDNN_TENSOR_NCHW, 1, 2, 4, 4);
+  void* filter = create4DTensor(CUDNN_DATA_FLOAT, CUDNN_TENSOR_NCHW, 2, 2, 3, 3);
+
+  fillTensorWithOnes(input);
   fillTensorWithOnes(filter);
 
   int conv_mode = 1; // NOTE: uses CROSS_CORRELATION
   int compute_precision = 0; // floating point precision for conv
   
-  void* conv1 = tensorConvolution(x3, filter, 0, 0,
+  void* conv_out = tensorConvolution(input, filter, 0, 0,
 				  1, 1, conv_mode, compute_precision);
-  printTensorValues(conv1);
+  printTensorValues(conv_out);
 
 }
 
 
+void testTensorHalfConv(){
+
+  void* input = create4DTensor(CUDNN_DATA_FLOAT, CUDNN_TENSOR_NCHW, 1, 2, 4, 4);
+  void* filter = create4DTensor(CUDNN_DATA_FLOAT, CUDNN_TENSOR_NCHW, 2, 2, 3, 3);
+
+  fillTensorWithOnes(input);
+  fillTensorWithOnes(filter);
+
+  int conv_mode = 1; // NOTE: uses CROSS_CORRELATION
+  int compute_precision = 0; // floating point precision for conv
+  
+  void* conv_out = tensorHalfConvolution(input, filter, 0, 0,
+					 1, 1, conv_mode, compute_precision);
+  printTensorValues(conv_out);
+
+}
+
+
+
+
 void testTensorGroupedConv(){
 
   // NOTE: The input channel count value (param2 to Tensor and Filter) must be the same
@@ -1176,11 +1193,14 @@ int main(){
   llvm_hpvm_initTensorRt(0);
 
   startProfiling();
+
+  // Function call per unit test
+  testTensorHgemm(); 
+  testTensorSgemm();
   
-  testTensorHgemm();
+  testTensorConv();
+  testTensorHalfConv();
   
-  //testTensorSgemm2();
-  //testTensorConv();
   //testTensorError();
 
   //testQuantization();
-- 
GitLab