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