Skip to content
Snippets Groups Projects
Commit 4ae06e50 authored by Hashim Sharif's avatar Hashim Sharif
Browse files

Adding Tuner versions for 5 benchmarks

parent 76aad3d1
No related branches found
No related tags found
No related merge requests found
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include "../../tensor_runtime/include/tensor_runtime.h"
#include "../include/utils.h"
/* NOTE: Reference Architecture to use for profiling */
void testCifarNet(){
printf("********* Alexnet2 CIFAR-10 DNN ********** \n");
std::string dir_prefix = std::string("../model_params/alexnet2_cifar10/");
std::string input_path = dir_prefix + std::string("norm_cifar_input.bin");
std::string labels_path = dir_prefix + std::string("test_labels.bin");
void* conv1_filter = readTrainedWeights("../model_params/alexnet2_cifar10/conv1.bin",
float_type, 32, 3, 3, 3);
void* conv1_bias = readTrainedWeights("../model_params/alexnet2_cifar10/conv1_bias.bin",
float_type, 1, 32, 1, 1);
void* conv2_filter = readTrainedWeights("../model_params/alexnet2_cifar10/conv2.bin",
float_type, 32, 32, 3, 3);
void* conv2_bias = readTrainedWeights("../model_params/alexnet2_cifar10/conv2_bias.bin",
float_type, 1, 32, 1, 1);
void* conv3_filter = readTrainedWeights("../model_params/alexnet2_cifar10/conv3.bin",
float_type, 64, 32, 3, 3);
void* conv3_bias = readTrainedWeights("../model_params/alexnet2_cifar10/conv3_bias.bin",
float_type, 1, 64, 1, 1);
void* conv4_filter = readTrainedWeights("../model_params/alexnet2_cifar10/conv4.bin",
float_type, 64, 64, 3, 3);
void* conv4_bias = readTrainedWeights("../model_params/alexnet2_cifar10/conv4_bias.bin",
float_type, 1, 64, 1, 1);
void* conv5_filter = readTrainedWeights("../model_params/alexnet2_cifar10/conv5.bin",
float_type, 128, 64, 3, 3);
void* conv5_bias = readTrainedWeights("../model_params/alexnet2_cifar10/conv5_bias.bin",
float_type, 1, 128, 1, 1);
void* conv6_filter = readTrainedWeights("../model_params/alexnet2_cifar10/conv6.bin",
float_type, 128, 128, 3, 3);
void* conv6_bias = readTrainedWeights("../model_params/alexnet2_cifar10/conv6_bias.bin",
float_type, 1, 128, 1, 1);
void* fc1_weights = readTrainedWeights("../model_params/alexnet2_cifar10/fc1.bin",
float_type, 1, 1, 2048, 10);
void* fc1_bias = readTrainedWeights("../model_params/alexnet2_cifar10/fc1_bias.bin",
float_type, 1, 10, 1, 1);
int conv_mode = 1; // NOTE: using CROSS_CORRELATION
int conv_precision = 0; // NOTE: using Float as compute precision. FIXIT: use enum
startMemTracking();
int test_input_size = 5000;
int batch_size = 5000;
int offset = 5000;
int batch_count = test_input_size / batch_size;
float final_accuracy = 0.0;
// NOTE: Starting time profiling
startProfiling();
for(int i = 0; i < batch_count; i++){
int start = i * batch_size + offset;
int end = (i + 1) * batch_size + offset;
void* input = readInputBatch(input_path.c_str(), 0,start,end,3,32,32);
void* conv1out = tensorConvolution(input, conv1_filter, 1, 1, 1, 1,
conv_mode, conv_precision);
tensorAdd(conv1out, conv1_bias);
void* conv1_tanh = tensorTanh(conv1out);
// 2nd Layer
void* conv2out = tensorConvolution(conv1_tanh, conv2_filter, 1, 1, 1, 1,
conv_mode, conv_precision);
tensorAdd(conv2out, conv2_bias);
void* conv2_tanh = tensorTanh(conv2out);
void* pool2out = tensorPooling(conv2_tanh, 0, 2, 2, 0, 0, 2, 2);
// 3rd Layer
void* conv3out = tensorConvolution(pool2out, conv3_filter, 1, 1, 1, 1,
conv_mode, conv_precision);
tensorAdd(conv3out, conv3_bias);
void* conv3_tanh = tensorTanh(conv3out);
// 4th Layer
void* conv4out = tensorConvolution(conv3_tanh, conv4_filter, 1, 1, 1, 1,
conv_mode, conv_precision);
tensorAdd(conv4out, conv4_bias);
void* conv4_tanh = tensorTanh(conv4out);
void* pool4out = tensorPooling(conv4_tanh, 0, 2, 2, 0, 0, 2, 2);
// 5th Layer
void* conv5out = tensorConvolution(pool4out, conv5_filter, 1, 1, 1, 1,
conv_mode, conv_precision);
tensorAdd(conv5out, conv5_bias);
void* conv5_tanh = tensorTanh(conv5out);
// 6th Layer
void* conv6out = tensorConvolution(conv5_tanh, conv6_filter, 1, 1, 1, 1,
conv_mode, conv_precision);
tensorAdd(conv6out, conv6_bias);
void* conv6_tanh = tensorTanh(conv6out);
void* pool6out = tensorPooling(conv6_tanh, 0, 2, 2, 0, 0, 2, 2);
// final FC Layer
void* gemm1out = tensorGemmGPU(pool6out, fc1_weights);
void* gemm1biasout = tensorAdd(gemm1out, fc1_bias);
void* result = tensorSoftmax(gemm1biasout);
uint8_t* labels = readLabelsBatch(labels_path.c_str(), start, end);
float accuracy = computeAccuracy2(labels, batch_size, result);
final_accuracy += accuracy;
freeBatchMemory();
}
stopProfiling();
final_accuracy = final_accuracy / batch_count;
dumpFinalAccuracy(final_accuracy);
}
int main(int argc, char* argv[]){
llvm_hpvm_initTensorRt(0);
testCifarNet();
llvm_hpvm_cleanupTensorRt();
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include "../../tensor_runtime/include/tensor_runtime.h"
#include "../include/utils.h"
int main(){
llvm_hpvm_initTensorRt(0);
std::string dir_prefix = std::string("../model_params/alexnet_cifar10_front/");
//std::string input_path = dir_prefix + std::string("alexnet_calib.bin");
//std::string labels_path = dir_prefix + std::string("alexnet_train_labels.bin");
std::string input_path = dir_prefix + std::string("input.bin");
std::string labels_path = dir_prefix + std::string("labels.bin");
std::string conv2d_1_w_path = dir_prefix + std::string("conv0.bin");
void* conv2d_1_w = readTrainedWeights(conv2d_1_w_path.c_str(), 0,64,3,11,11);
std::string conv2d_1_b_path = dir_prefix + std::string("conv_bias0.bin");
void* conv2d_1_b = readTrainedWeights(conv2d_1_b_path.c_str(), 0,1,64,1,1);
std::string conv2d_2_w_path = dir_prefix + std::string("conv3.bin");
void* conv2d_2_w = readTrainedWeights(conv2d_2_w_path.c_str(), 0,192,64,5,5);
std::string conv2d_2_b_path = dir_prefix + std::string("conv_bias3.bin");
void* conv2d_2_b = readTrainedWeights(conv2d_2_b_path.c_str(), 0,1,192,1,1);
std::string conv2d_3_w_path = dir_prefix + std::string("conv6.bin");
void* conv2d_3_w = readTrainedWeights(conv2d_3_w_path.c_str(), 0,384,192,3,3);
std::string conv2d_3_b_path = dir_prefix + std::string("conv_bias6.bin");
void* conv2d_3_b = readTrainedWeights(conv2d_3_b_path.c_str(), 0,1,384,1,1);
std::string conv2d_4_w_path = dir_prefix + std::string("conv7.bin");
void* conv2d_4_w = readTrainedWeights(conv2d_4_w_path.c_str(), 0,256,384,3,3);
std::string conv2d_4_b_path = dir_prefix + std::string("conv_bias7.bin");
void* conv2d_4_b = readTrainedWeights(conv2d_4_b_path.c_str(), 0,1,256,1,1);
std::string conv2d_5_w_path = dir_prefix + std::string("conv8.bin");
void* conv2d_5_w = readTrainedWeights(conv2d_5_w_path.c_str(), 0,256,256,3,3);
std::string conv2d_5_b_path = dir_prefix + std::string("conv_bias8.bin");
void* conv2d_5_b = readTrainedWeights(conv2d_5_b_path.c_str(), 0,1,256,1,1);
std::string dense_1_w_path = dir_prefix + std::string("fc12.bin");
void* dense_1_w = readTrainedWeights(dense_1_w_path.c_str(), 0,1,1,4096,10);
std::string dense_1_b_path = dir_prefix + std::string("fc_bias12.bin");
void* dense_1_b = readTrainedWeights(dense_1_b_path.c_str(), 0,1,10,1,1);
startMemTracking();
int test_input_size = 5000;
int batch_size = 5000;
int offset = 5000;
int batch_count = test_input_size / batch_size;
float final_accuracy = 0.0;
// NOTE: Starting time profiling
startProfiling();
for(int i = 0; i < batch_count; i++){
int start = (i * batch_size) + offset;
int end = (i + 1) * batch_size + offset;
void* input = readInputBatch(input_path.c_str(), 0,start,end,3,32,32);
void* var_0 = tensorConvolution(input, conv2d_1_w, 5, 5, 1, 1, 1, 0);
void* var_1 = tensorAdd(var_0, conv2d_1_b);
void* var_2 = tensorTanh(var_1);
void* var_3 = tensorPooling(var_2,0,2,2,0,0,2,2);
void* var_5 = tensorConvolution(var_3, conv2d_2_w, 2, 2, 1, 1, 1, 0);
void* var_6 = tensorAdd(var_5, conv2d_2_b);
void* var_7 = tensorTanh(var_6);
void* var_8 = tensorPooling(var_7,0,2,2,0,0,2,2);
void* var_10 = tensorConvolution(var_8, conv2d_3_w, 1, 1, 1, 1, 1, 0);
void* var_11 = tensorAdd(var_10, conv2d_3_b);
void* var_12 = tensorTanh(var_11);
void* var_13 = tensorConvolution(var_12, conv2d_4_w, 1, 1, 1, 1, 1, 0);
void* var_14 = tensorAdd(var_13, conv2d_4_b);
void* var_15 = tensorTanh(var_14);
void* var_16 = tensorConvolution(var_15, conv2d_5_w, 1, 1, 1, 1, 1, 0);
void* var_17 = tensorAdd(var_16, conv2d_5_b);
void* var_18 = tensorTanh(var_17);
void* var_19 = tensorPooling(var_18,0,2,2,0,0,2,2);
void* var_22 = tensorGemmGPU(var_19, dense_1_w);
void* var_23 = tensorAdd(var_22, dense_1_b);
void* var_24 = tensorSoftmax(var_23);
uint8_t* labels = readLabelsBatch(labels_path.c_str(), start, end);
float accuracy = computeAccuracy2(labels,batch_size,var_24);
final_accuracy += accuracy;
freeBatchMemory();
}
stopProfiling();
final_accuracy = final_accuracy / batch_count;
dumpFinalAccuracy(final_accuracy);
llvm_hpvm_cleanupTensorRt();
return 0;
}
......@@ -14,8 +14,10 @@ int main(){
llvm_hpvm_initTensorRt(0);
std::string dir_prefix = std::string("../model_params/resnet18_cifar10_3/");
std::string input_path = dir_prefix + std::string("resnet18_calib.bin");
std::string labels_path = dir_prefix + std::string("resnet18_train_labels.bin");
// std::string input_path = dir_prefix + std::string("resnet18_calib.bin");
// std::string labels_path = dir_prefix + std::string("resnet18_train_labels.bin");
std::string input_path = dir_prefix + std::string("input.bin");
std::string labels_path = dir_prefix + std::string("labels.bin");
std::string conv2d_1_w_path = dir_prefix + std::string("conv2d_1_w.bin");
void* conv2d_1_w = readTrainedWeights(conv2d_1_w_path.c_str(), 0,16,3,3,3);
std::string conv2d_1_b_path = dir_prefix + std::string("conv2d_1_b.bin");
......@@ -110,6 +112,8 @@ int main(){
int test_input_size = 5000;
int batch_size = 5000;
int offset = 5000;
int batch_count = test_input_size / batch_size;
float final_accuracy = 0.0;
......@@ -118,8 +122,8 @@ int main(){
for(int i = 0; i < batch_count; i++){
int start = i * batch_size;
int end = (i + 1) * batch_size;
int start = i * batch_size + offset;
int end = (i + 1) * batch_size + offset;
void* input = readInputBatch(input_path.c_str(), 0,start,end,3,32,32);
......
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include "../../tensor_runtime/include/tensor_runtime.h"
#include "../include/utils.h"
int main(){
llvm_hpvm_initTensorRt(0);
std::string dir_prefix = std::string("../model_params/vgg16_cifar100_front/");
//std::string input_path = dir_prefix + std::string("vgg16_cifar100_calib.bin");
//std::string labels_path = dir_prefix + std::string("vgg16_cifar100_train_labels.bin");
std::string input_path = dir_prefix + std::string("input.bin");
std::string labels_path = dir_prefix + std::string("labels.bin");
std::string conv2d_1_w_path = dir_prefix + std::string("conv2d_1_w.bin");
void* conv2d_1_w = readTrainedWeights(conv2d_1_w_path.c_str(), 0,64,3,3,3);
std::string conv2d_1_b_path = dir_prefix + std::string("conv2d_1_b.bin");
void* conv2d_1_b = readTrainedWeights(conv2d_1_b_path.c_str(), 0,1,64,1,1);
std::string conv2d_2_w_path = dir_prefix + std::string("conv2d_2_w.bin");
void* conv2d_2_w = readTrainedWeights(conv2d_2_w_path.c_str(), 0,64,64,3,3);
std::string conv2d_2_b_path = dir_prefix + std::string("conv2d_2_b.bin");
void* conv2d_2_b = readTrainedWeights(conv2d_2_b_path.c_str(), 0,1,64,1,1);
std::string conv2d_3_w_path = dir_prefix + std::string("conv2d_3_w.bin");
void* conv2d_3_w = readTrainedWeights(conv2d_3_w_path.c_str(), 0,128,64,3,3);
std::string conv2d_3_b_path = dir_prefix + std::string("conv2d_3_b.bin");
void* conv2d_3_b = readTrainedWeights(conv2d_3_b_path.c_str(), 0,1,128,1,1);
std::string conv2d_4_w_path = dir_prefix + std::string("conv2d_4_w.bin");
void* conv2d_4_w = readTrainedWeights(conv2d_4_w_path.c_str(), 0,128,128,3,3);
std::string conv2d_4_b_path = dir_prefix + std::string("conv2d_4_b.bin");
void* conv2d_4_b = readTrainedWeights(conv2d_4_b_path.c_str(), 0,1,128,1,1);
std::string conv2d_5_w_path = dir_prefix + std::string("conv2d_5_w.bin");
void* conv2d_5_w = readTrainedWeights(conv2d_5_w_path.c_str(), 0,256,128,3,3);
std::string conv2d_5_b_path = dir_prefix + std::string("conv2d_5_b.bin");
void* conv2d_5_b = readTrainedWeights(conv2d_5_b_path.c_str(), 0,1,256,1,1);
std::string conv2d_6_w_path = dir_prefix + std::string("conv2d_6_w.bin");
void* conv2d_6_w = readTrainedWeights(conv2d_6_w_path.c_str(), 0,256,256,3,3);
std::string conv2d_6_b_path = dir_prefix + std::string("conv2d_6_b.bin");
void* conv2d_6_b = readTrainedWeights(conv2d_6_b_path.c_str(), 0,1,256,1,1);
std::string conv2d_7_w_path = dir_prefix + std::string("conv2d_7_w.bin");
void* conv2d_7_w = readTrainedWeights(conv2d_7_w_path.c_str(), 0,256,256,3,3);
std::string conv2d_7_b_path = dir_prefix + std::string("conv2d_7_b.bin");
void* conv2d_7_b = readTrainedWeights(conv2d_7_b_path.c_str(), 0,1,256,1,1);
std::string conv2d_8_w_path = dir_prefix + std::string("conv2d_8_w.bin");
void* conv2d_8_w = readTrainedWeights(conv2d_8_w_path.c_str(), 0,512,256,3,3);
std::string conv2d_8_b_path = dir_prefix + std::string("conv2d_8_b.bin");
void* conv2d_8_b = readTrainedWeights(conv2d_8_b_path.c_str(), 0,1,512,1,1);
std::string conv2d_9_w_path = dir_prefix + std::string("conv2d_9_w.bin");
void* conv2d_9_w = readTrainedWeights(conv2d_9_w_path.c_str(), 0,512,512,3,3);
std::string conv2d_9_b_path = dir_prefix + std::string("conv2d_9_b.bin");
void* conv2d_9_b = readTrainedWeights(conv2d_9_b_path.c_str(), 0,1,512,1,1);
std::string conv2d_10_w_path = dir_prefix + std::string("conv2d_10_w.bin");
void* conv2d_10_w = readTrainedWeights(conv2d_10_w_path.c_str(), 0,512,512,3,3);
std::string conv2d_10_b_path = dir_prefix + std::string("conv2d_10_b.bin");
void* conv2d_10_b = readTrainedWeights(conv2d_10_b_path.c_str(), 0,1,512,1,1);
std::string conv2d_11_w_path = dir_prefix + std::string("conv2d_11_w.bin");
void* conv2d_11_w = readTrainedWeights(conv2d_11_w_path.c_str(), 0,512,512,3,3);
std::string conv2d_11_b_path = dir_prefix + std::string("conv2d_11_b.bin");
void* conv2d_11_b = readTrainedWeights(conv2d_11_b_path.c_str(), 0,1,512,1,1);
std::string conv2d_12_w_path = dir_prefix + std::string("conv2d_12_w.bin");
void* conv2d_12_w = readTrainedWeights(conv2d_12_w_path.c_str(), 0,512,512,3,3);
std::string conv2d_12_b_path = dir_prefix + std::string("conv2d_12_b.bin");
void* conv2d_12_b = readTrainedWeights(conv2d_12_b_path.c_str(), 0,1,512,1,1);
std::string conv2d_13_w_path = dir_prefix + std::string("conv2d_13_w.bin");
void* conv2d_13_w = readTrainedWeights(conv2d_13_w_path.c_str(), 0,512,512,3,3);
std::string conv2d_13_b_path = dir_prefix + std::string("conv2d_13_b.bin");
void* conv2d_13_b = readTrainedWeights(conv2d_13_b_path.c_str(), 0,1,512,1,1);
std::string dense_1_w_path = dir_prefix + std::string("dense_1_w.bin");
void* dense_1_w = readTrainedWeights(dense_1_w_path.c_str(), 0,1,1,512,512);
std::string dense_1_b_path = dir_prefix + std::string("dense_1_b.bin");
void* dense_1_b = readTrainedWeights(dense_1_b_path.c_str(), 0,1,512,1,1);
std::string dense_2_w_path = dir_prefix + std::string("dense_2_w.bin");
void* dense_2_w = readTrainedWeights(dense_2_w_path.c_str(), 0,1,1,512,100);
std::string dense_2_b_path = dir_prefix + std::string("dense_2_b.bin");
void* dense_2_b = readTrainedWeights(dense_2_b_path.c_str(), 0,1,100,1,1);
startMemTracking();
int test_input_size = 5000;
int batch_size = 5000;
int offset = 5000;
int batch_count = test_input_size / batch_size;
float final_accuracy = 0.0;
for(int i = 0; i < batch_count; i++){
int start = i * batch_size + offset;
int end = (i + 1) * batch_size + offset;
void* input = readInputBatch(input_path.c_str(),0,start,end,3,32,32);
void* var_0 = tensorConvolution(input, conv2d_1_w, 1, 1, 1, 1, 1, 0);
void* var_1 = tensorAdd(var_0, conv2d_1_b);
void* var_2 = tensorRelu(var_1);
void* var_4 = tensorConvolution(var_2, conv2d_2_w, 1, 1, 1, 1, 1, 0);
void* var_5 = tensorAdd(var_4, conv2d_2_b);
void* var_6 = tensorRelu(var_5);
void* var_7 = tensorPooling(var_6,0,2,2,0,0,2,2);
void* var_8 = tensorConvolution(var_7, conv2d_3_w, 1, 1, 1, 1, 1, 0);
void* var_9 = tensorAdd(var_8, conv2d_3_b);
void* var_10 = tensorRelu(var_9);
void* var_12 = tensorConvolution(var_10, conv2d_4_w, 1, 1, 1, 1, 1, 0);
void* var_13 = tensorAdd(var_12, conv2d_4_b);
void* var_14 = tensorRelu(var_13);
void* var_15 = tensorPooling(var_14,0,2,2,0,0,2,2);
void* var_16 = tensorConvolution(var_15, conv2d_5_w, 1, 1, 1, 1, 1, 0);
void* var_17 = tensorAdd(var_16, conv2d_5_b);
void* var_18 = tensorRelu(var_17);
void* var_20 = tensorConvolution(var_18, conv2d_6_w, 1, 1, 1, 1, 1, 0);
void* var_21 = tensorAdd(var_20, conv2d_6_b);
void* var_22 = tensorRelu(var_21);
void* var_24 = tensorConvolution(var_22, conv2d_7_w, 1, 1, 1, 1, 1, 0);
void* var_25 = tensorAdd(var_24, conv2d_7_b);
void* var_26 = tensorRelu(var_25);
void* var_27 = tensorPooling(var_26,0,2,2,0,0,2,2);
void* var_28 = tensorConvolution(var_27, conv2d_8_w, 1, 1, 1, 1, 1, 0);
void* var_29 = tensorAdd(var_28, conv2d_8_b);
void* var_30 = tensorRelu(var_29);
void* var_32 = tensorConvolution(var_30, conv2d_9_w, 1, 1, 1, 1, 1, 0);
void* var_33 = tensorAdd(var_32, conv2d_9_b);
void* var_34 = tensorRelu(var_33);
void* var_36 = tensorConvolution(var_34, conv2d_10_w, 1, 1, 1, 1, 1, 0);
void* var_37 = tensorAdd(var_36, conv2d_10_b);
void* var_38 = tensorRelu(var_37);
void* var_39 = tensorPooling(var_38,0,2,2,0,0,2,2);
void* var_40 = tensorConvolution(var_39, conv2d_11_w, 1, 1, 1, 1, 1, 0);
void* var_41 = tensorAdd(var_40, conv2d_11_b);
void* var_42 = tensorRelu(var_41);
void* var_44 = tensorConvolution(var_42, conv2d_12_w, 1, 1, 1, 1, 1, 0);
void* var_45 = tensorAdd(var_44, conv2d_12_b);
void* var_46 = tensorRelu(var_45);
void* var_48 = tensorConvolution(var_46, conv2d_13_w, 1, 1, 1, 1, 1, 0);
void* var_49 = tensorAdd(var_48, conv2d_13_b);
void* var_50 = tensorRelu(var_49);
void* var_51 = tensorPooling(var_50,0,2,2,0,0,2,2);
void* var_54 = tensorGemmGPU(var_51, dense_1_w);
void* var_55 = tensorAdd(var_54, dense_1_b);
void* var_56 = tensorRelu(var_55);
void* var_58 = tensorGemmGPU(var_56, dense_2_w);
void* var_59 = tensorAdd(var_58, dense_2_b);
void* var_60 = tensorSoftmax(var_59);
uint8_t* labels = readLabelsBatch(labels_path.c_str(),start,end);
float accuracy = computeAccuracy2(labels, batch_size, var_60, 100);
final_accuracy += accuracy;
freeBatchMemory();
}
final_accuracy = final_accuracy / batch_count;
dumpFinalAccuracy(final_accuracy);
llvm_hpvm_cleanupTensorRt();
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include "../../tensor_runtime/include/tensor_runtime.h"
#include "../include/utils.h"
int main(){
llvm_hpvm_initTensorRt(0);
std::string dir_prefix = std::string("../model_params/vgg16_cifar10_2/");
//std::string input_path = dir_prefix + std::string("vgg16_cifar_calib.bin");
//std::string labels_path = dir_prefix + std::string("vgg16_train_labels.bin");
std::string input_path = dir_prefix + std::string("input.bin");
std::string labels_path = dir_prefix + std::string("labels.bin");
std::string conv2d_1_w_path = dir_prefix + std::string("conv2d_1_w.bin");
void* conv2d_1_w = readTrainedWeights(conv2d_1_w_path.c_str(), 0,64,3,3,3);
std::string conv2d_1_b_path = dir_prefix + std::string("conv2d_1_b.bin");
void* conv2d_1_b = readTrainedWeights(conv2d_1_b_path.c_str(), 0,1,64,1,1);
std::string conv2d_2_w_path = dir_prefix + std::string("conv2d_2_w.bin");
void* conv2d_2_w = readTrainedWeights(conv2d_2_w_path.c_str(), 0,64,64,3,3);
std::string conv2d_2_b_path = dir_prefix + std::string("conv2d_2_b.bin");
void* conv2d_2_b = readTrainedWeights(conv2d_2_b_path.c_str(), 0,1,64,1,1);
std::string conv2d_3_w_path = dir_prefix + std::string("conv2d_3_w.bin");
void* conv2d_3_w = readTrainedWeights(conv2d_3_w_path.c_str(), 0,128,64,3,3);
std::string conv2d_3_b_path = dir_prefix + std::string("conv2d_3_b.bin");
void* conv2d_3_b = readTrainedWeights(conv2d_3_b_path.c_str(), 0,1,128,1,1);
std::string conv2d_4_w_path = dir_prefix + std::string("conv2d_4_w.bin");
void* conv2d_4_w = readTrainedWeights(conv2d_4_w_path.c_str(), 0,128,128,3,3);
std::string conv2d_4_b_path = dir_prefix + std::string("conv2d_4_b.bin");
void* conv2d_4_b = readTrainedWeights(conv2d_4_b_path.c_str(), 0,1,128,1,1);
std::string conv2d_5_w_path = dir_prefix + std::string("conv2d_5_w.bin");
void* conv2d_5_w = readTrainedWeights(conv2d_5_w_path.c_str(), 0,256,128,3,3);
std::string conv2d_5_b_path = dir_prefix + std::string("conv2d_5_b.bin");
void* conv2d_5_b = readTrainedWeights(conv2d_5_b_path.c_str(), 0,1,256,1,1);
std::string conv2d_6_w_path = dir_prefix + std::string("conv2d_6_w.bin");
void* conv2d_6_w = readTrainedWeights(conv2d_6_w_path.c_str(), 0,256,256,3,3);
std::string conv2d_6_b_path = dir_prefix + std::string("conv2d_6_b.bin");
void* conv2d_6_b = readTrainedWeights(conv2d_6_b_path.c_str(), 0,1,256,1,1);
std::string conv2d_7_w_path = dir_prefix + std::string("conv2d_7_w.bin");
void* conv2d_7_w = readTrainedWeights(conv2d_7_w_path.c_str(), 0,256,256,3,3);
std::string conv2d_7_b_path = dir_prefix + std::string("conv2d_7_b.bin");
void* conv2d_7_b = readTrainedWeights(conv2d_7_b_path.c_str(), 0,1,256,1,1);
std::string conv2d_8_w_path = dir_prefix + std::string("conv2d_8_w.bin");
void* conv2d_8_w = readTrainedWeights(conv2d_8_w_path.c_str(), 0,512,256,3,3);
std::string conv2d_8_b_path = dir_prefix + std::string("conv2d_8_b.bin");
void* conv2d_8_b = readTrainedWeights(conv2d_8_b_path.c_str(), 0,1,512,1,1);
std::string conv2d_9_w_path = dir_prefix + std::string("conv2d_9_w.bin");
void* conv2d_9_w = readTrainedWeights(conv2d_9_w_path.c_str(), 0,512,512,3,3);
std::string conv2d_9_b_path = dir_prefix + std::string("conv2d_9_b.bin");
void* conv2d_9_b = readTrainedWeights(conv2d_9_b_path.c_str(), 0,1,512,1,1);
std::string conv2d_10_w_path = dir_prefix + std::string("conv2d_10_w.bin");
void* conv2d_10_w = readTrainedWeights(conv2d_10_w_path.c_str(), 0,512,512,3,3);
std::string conv2d_10_b_path = dir_prefix + std::string("conv2d_10_b.bin");
void* conv2d_10_b = readTrainedWeights(conv2d_10_b_path.c_str(), 0,1,512,1,1);
std::string conv2d_11_w_path = dir_prefix + std::string("conv2d_11_w.bin");
void* conv2d_11_w = readTrainedWeights(conv2d_11_w_path.c_str(), 0,512,512,3,3);
std::string conv2d_11_b_path = dir_prefix + std::string("conv2d_11_b.bin");
void* conv2d_11_b = readTrainedWeights(conv2d_11_b_path.c_str(), 0,1,512,1,1);
std::string conv2d_12_w_path = dir_prefix + std::string("conv2d_12_w.bin");
void* conv2d_12_w = readTrainedWeights(conv2d_12_w_path.c_str(), 0,512,512,3,3);
std::string conv2d_12_b_path = dir_prefix + std::string("conv2d_12_b.bin");
void* conv2d_12_b = readTrainedWeights(conv2d_12_b_path.c_str(), 0,1,512,1,1);
std::string conv2d_13_w_path = dir_prefix + std::string("conv2d_13_w.bin");
void* conv2d_13_w = readTrainedWeights(conv2d_13_w_path.c_str(), 0,512,512,3,3);
std::string conv2d_13_b_path = dir_prefix + std::string("conv2d_13_b.bin");
void* conv2d_13_b = readTrainedWeights(conv2d_13_b_path.c_str(), 0,1,512,1,1);
std::string dense_1_w_path = dir_prefix + std::string("dense_1_w.bin");
void* dense_1_w = readTrainedWeights(dense_1_w_path.c_str(), 0,1,1,512,512);
std::string dense_1_b_path = dir_prefix + std::string("dense_1_b.bin");
void* dense_1_b = readTrainedWeights(dense_1_b_path.c_str(), 0,1,512,1,1);
std::string dense_2_w_path = dir_prefix + std::string("dense_2_w.bin");
void* dense_2_w = readTrainedWeights(dense_2_w_path.c_str(), 0,1,1,512,10);
std::string dense_2_b_path = dir_prefix + std::string("dense_2_b.bin");
void* dense_2_b = readTrainedWeights(dense_2_b_path.c_str(), 0,1,10,1,1);
startMemTracking();
int test_input_size = 5000;
int batch_size = 5000;
int offset = 5000;
int batch_count = test_input_size / batch_size;
float final_accuracy = 0.0;
for(int i = 0; i < batch_count; i++){
int start = i * batch_size + offset;
int end = (i + 1) * batch_size + offset;
void* input = readInputBatch(input_path.c_str(), 0,start,end,3,32,32);
void* var_0 = tensorConvolution(input, conv2d_1_w, 1, 1, 1, 1, 1, 0);
void* var_1 = tensorAdd(var_0, conv2d_1_b);
void* var_2 = tensorRelu(var_1);
void* var_4 = tensorConvolution(var_2, conv2d_2_w, 1, 1, 1, 1, 1, 0);
void* var_5 = tensorAdd(var_4, conv2d_2_b);
void* var_6 = tensorRelu(var_5);
void* var_7 = tensorPooling(var_6,0,2,2,0,0,2,2);
void* var_8 = tensorConvolution(var_7, conv2d_3_w, 1, 1, 1, 1, 1, 0);
void* var_9 = tensorAdd(var_8, conv2d_3_b);
void* var_10 = tensorRelu(var_9);
void* var_12 = tensorConvolution(var_10, conv2d_4_w, 1, 1, 1, 1, 1, 0);
void* var_13 = tensorAdd(var_12, conv2d_4_b);
void* var_14 = tensorRelu(var_13);
void* var_15 = tensorPooling(var_14,0,2,2,0,0,2,2);
void* var_16 = tensorConvolution(var_15, conv2d_5_w, 1, 1, 1, 1, 1, 0);
void* var_17 = tensorAdd(var_16, conv2d_5_b);
void* var_18 = tensorRelu(var_17);
void* var_20 = tensorConvolution(var_18, conv2d_6_w, 1, 1, 1, 1, 1, 0);
void* var_21 = tensorAdd(var_20, conv2d_6_b);
void* var_22 = tensorRelu(var_21);
void* var_24 = tensorConvolution(var_22, conv2d_7_w, 1, 1, 1, 1, 1, 0);
void* var_25 = tensorAdd(var_24, conv2d_7_b);
void* var_26 = tensorRelu(var_25);
void* var_27 = tensorPooling(var_26,0,2,2,0,0,2,2);
void* var_28 = tensorConvolution(var_27, conv2d_8_w, 1, 1, 1, 1, 1, 0);
void* var_29 = tensorAdd(var_28, conv2d_8_b);
void* var_30 = tensorRelu(var_29);
void* var_32 = tensorConvolution(var_30, conv2d_9_w, 1, 1, 1, 1, 1, 0);
void* var_33 = tensorAdd(var_32, conv2d_9_b);
void* var_34 = tensorRelu(var_33);
void* var_36 = tensorConvolution(var_34, conv2d_10_w, 1, 1, 1, 1, 1, 0);
void* var_37 = tensorAdd(var_36, conv2d_10_b);
void* var_38 = tensorRelu(var_37);
void* var_39 = tensorPooling(var_38,0,2,2,0,0,2,2);
void* var_40 = tensorConvolution(var_39, conv2d_11_w, 1, 1, 1, 1, 1, 0);
void* var_41 = tensorAdd(var_40, conv2d_11_b);
void* var_42 = tensorRelu(var_41);
void* var_44 = tensorConvolution(var_42, conv2d_12_w, 1, 1, 1, 1, 1, 0);
void* var_45 = tensorAdd(var_44, conv2d_12_b);
void* var_46 = tensorRelu(var_45);
void* var_48 = tensorConvolution(var_46, conv2d_13_w, 1, 1, 1, 1, 1, 0);
void* var_49 = tensorAdd(var_48, conv2d_13_b);
void* var_50 = tensorRelu(var_49);
void* var_51 = tensorPooling(var_50,0,2,2,0,0,2,2);
void* var_54 = tensorGemmGPU(var_51, dense_1_w);
void* var_55 = tensorAdd(var_54, dense_1_b);
void* var_56 = tensorRelu(var_55);
void* var_58 = tensorGemmGPU(var_56, dense_2_w);
void* var_59 = tensorAdd(var_58, dense_2_b);
void* var_60 = tensorSoftmax(var_59);
uint8_t* labels = readLabelsBatch(labels_path.c_str(), start, end);
float accuracy = computeAccuracy2(labels,batch_size,var_60);
final_accuracy += accuracy;
freeBatchMemory();
}
final_accuracy = final_accuracy / batch_count;
dumpFinalAccuracy(final_accuracy);
llvm_hpvm_cleanupTensorRt();
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment