diff --git a/llvm/projects/hpvm-tensor-rt/docs/Changes.md b/llvm/projects/hpvm-tensor-rt/docs/Changes.md new file mode 100644 index 0000000000000000000000000000000000000000..ebf0295ed664bf618195d79a461b58b576b0c071 --- /dev/null +++ b/llvm/projects/hpvm-tensor-rt/docs/Changes.md @@ -0,0 +1,62 @@ +# Header Files Needing Modification + +- llvm/include/IR/IntrisicsVISC.td + - Add Tensor intrinsics here + +- bechmarks/common/include/visc.h - Benchmarks header + - Include tensor intrinsic declarations + +- Header files for "PROMISE_TARGET" and "CUDNN_TARGET" Hints + - /include/SupportVISC/DFG2LLVM.h + - /include/SupportVISC/VISCUtils.h + - /include/SupportVISC/VISCHint.h + + + + +# Passes Needing Modification + +- GenVISC + * Handle Tensor Intrinsics + * Add Declarations for Intrinsic Functions called (at top) + * Modify runOnModule to include rules for functions -> intrinsics + + +- ClearDFG + * Incorporate new changes for visc.node.id + + +# New Passes to Incorporate in LLVM-9 Branch + +- lib/Transforms/DFG2LLVM_CUDNN +- lib/Transforms/DFG2LLVM_WrapperAPI +- lib/Transforms/FusedNodesHPVM + +** Changes needed: +- Modify paths to tensor_runtime.ll +- Use "hpvm" instead of "visc" intrinsics + + +# Projects to Move + +- hpvm-tensor-rt + * Make sure to not move 'tuner_results' and 'model_params' subdirectories + +- gpu_profiler + +- soc_simlator + +- Keras (wait on it) + + + +# Build System + +- Add rules to /lib/Transforms/CMakeLists.txt +- Add rules to /llvm/projects/CmakeLists.txt +- Automate the generation of 'tensor_runtime.ll` +- Add CUDNN, CUDA paths to the template environment setup file +- Move to using Cmake-3.17 (earlier 3.15) + + + diff --git a/llvm/projects/hpvm-tensor-rt/lib/tensor_runtime.ll b/llvm/projects/hpvm-tensor-rt/lib/tensor_runtime.ll index 42325406bd3308a7bc5f165b491da85cd1024f27..efef5f2c2f53d4812edfa4b6d231ca5a1cc52371 100644 --- a/llvm/projects/hpvm-tensor-rt/lib/tensor_runtime.ll +++ b/llvm/projects/hpvm-tensor-rt/lib/tensor_runtime.ll @@ -67,6 +67,10 @@ entry: %FCLayer = alloca i8*, align 8 %ConvLayer_ = alloca i8*, align 8 %ConvLayer2 = alloca i8*, align 8 +<<<<<<< HEAD +======= + %GroupConvLayer = alloca i8*, align 8 +>>>>>>> 2a31471f4de89edd9180689d139be7ca65b0df08 %FCLayer2 = alloca i8*, align 8 %AddWrapper = alloca i8*, align 8 %ReluWrapper = alloca i8*, align 8 @@ -122,6 +126,10 @@ entry: store i8* bitcast (i8* (i8*, float, float, i8*, float, float, i8*, float, float, i32, float, float, i32)* @FCLayer_PROMISE to i8*), i8** %FCLayer, align 8 store i8* bitcast (i8* (i8*, i8*, i8*, i8*, i32, i32, i32, i32, i32, i32, i32, float, float)* @wrapper_ConvLayer to i8*), i8** %ConvLayer_, align 8 store i8* bitcast (i8* (i8*, i8*, i8*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float)* @wrapper_ConvLayer2 to i8*), i8** %ConvLayer2, align 8 +<<<<<<< HEAD +======= + store i8* bitcast (i8* (i8*, i8*, i8*, i32, i32, i32, i32, i32, i32)* @wrapper_tensorGroupConvolution to i8*), i8** %GroupConvLayer, align 8 +>>>>>>> 2a31471f4de89edd9180689d139be7ca65b0df08 store i8* bitcast (i8* (i8*, i8*, i8*, i8*, i32, float, float)* @wrapper_FCLayer to i8*), i8** %FCLayer2, align 8 store i8* bitcast (i8* (i8*, i8*, i8*)* @wrapper_tensorAdd to i8*), i8** %AddWrapper, align 8 store i8* bitcast (i8* (i8*, i8*)* @wrapper_tensorRelu to i8*), i8** %ReluWrapper, align 8 @@ -219,6 +227,8 @@ declare i8* @wrapper_ConvLayer(i8*, i8*, i8*, i8*, i32, i32, i32, i32, i32, i32, declare i8* @wrapper_ConvLayer2(i8*, i8*, i8*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, float) #1 +declare i8* @wrapper_tensorGroupConvolution(i8*, i8*, i8*, i32, i32, i32, i32, i32, i32) #1 + declare i8* @wrapper_FCLayer(i8*, i8*, i8*, i8*, i32, float, float) #1 declare i8* @wrapper_tensorAdd(i8*, i8*, i8*) #1 diff --git a/llvm/projects/hpvm-tensor-rt/tensor_runtime/include/tensor_signatures.cc b/llvm/projects/hpvm-tensor-rt/tensor_runtime/include/tensor_signatures.cc index 9c4cf97908a129e421e61d29177e7a4359a860e6..478a7ba037702fd74d6dffb489ca093a49405449 100644 --- a/llvm/projects/hpvm-tensor-rt/tensor_runtime/include/tensor_signatures.cc +++ b/llvm/projects/hpvm-tensor-rt/tensor_runtime/include/tensor_signatures.cc @@ -47,6 +47,10 @@ void dummyFunction() { void *ConvLayer_ = (void *)&wrapper_ConvLayer; void *ConvLayer2 = (void *)&wrapper_ConvLayer2; +<<<<<<< HEAD +======= + void *GroupConvLayer = (void *)&wrapper_tensorGroupConvolution; +>>>>>>> 2a31471f4de89edd9180689d139be7ca65b0df08 void *FCLayer2 = (void *)&wrapper_FCLayer; void *AddWrapper = (void *)&wrapper_tensorAdd; diff --git a/llvm/projects/keras/cmake_template/CMakeLists.txt b/llvm/projects/keras/cmake_template/CMakeLists.txt index 67ce4a848b4de67c15cc2a8de032f6dd063d6fc7..0cdee697ce2d663775f0283e96f35c45fd467986 100644 --- a/llvm/projects/keras/cmake_template/CMakeLists.txt +++ b/llvm/projects/keras/cmake_template/CMakeLists.txt @@ -50,7 +50,7 @@ find_library(TENSOR_LIB ) -set(LINK_LIBS cudart cudnn cufft cublas stdc++fs curand) +set(LINK_LIBS cudart cudnn cufft cublas stdc++fs curand -pthread) #### Image Processing Benchmarks diff --git a/llvm/projects/keras/frontend/approxhpvm_translator.py b/llvm/projects/keras/frontend/approxhpvm_translator.py index bd30ad2a44392bd71395958c8b58c24d8d9d66ad..e60d6adb994ee4da56765a1fa365b14a792863d2 100644 --- a/llvm/projects/keras/frontend/approxhpvm_translator.py +++ b/llvm/projects/keras/frontend/approxhpvm_translator.py @@ -21,6 +21,7 @@ class DFG: def hasSingleInput(self, layer): + layer_name = layer.__class__.__name__ singleInLayers = {} @@ -57,12 +58,12 @@ class DFG: inbound_node_name = inbound_node_name.split("/")[0] if inbound_node_name in self.node_map: inbound_node = self.node_map[inbound_node_name] - print (inbound_node_name, " found!") + DEBUG (inbound_node_name, " found!") inbound_node.add_output(dfg_node) dfg_node.add_input(inbound_node) else: - print ("--inbound node NOT FOUND!") + DEBUG ("--inbound node NOT FOUND!") @@ -75,12 +76,12 @@ class DFG: if self.hasMultipleInputs(layer): for j in range(len(layer.input)): - print(type(layer.input[j])) - print(layer.input[j].op.name) + DEBUG (type(layer.input[j])) + DEBUG (layer.input[j].op.name) self.add_dfg_edge(layer.input[j].op.name, dfg_node) else: - print (layer.input.name) + DEBUG (layer.input.name) self.add_dfg_edge(layer.input.name, dfg_node) # Adding DFG node to name mapping @@ -104,8 +105,8 @@ class DFG: return if self.predVisited(cur_node, visited_nodes): - print(cur_node.layer_type) - print(cur_node.layer_name) + DEBUG (cur_node.layer_type) + DEBUG (cur_node.layer_name) visited_nodes[cur_node.layer_name] = True # Invoking traversal on outbound nodes @@ -119,7 +120,7 @@ class DFG: #Build and Print the DFG in reverse postorder def buildDFG(self): - print ("\n\n ****** Traversing and Printing DFG ******* \n\n") + DEBUG ("\n\n ****** Traversing and Printing DFG ******* \n\n") visited_nodes = {} # Starting traversal at the DFG root node self.traverseNode(self.root_node, visited_nodes) @@ -144,42 +145,42 @@ class DFGNode: layer_type = layer.__class__.__name__ self.layer_type = layer_type # layer type e.g., conv2d, add, dense self.layer_name = layer.name # unique layer identifier - print (self.layer_name) + DEBUG (self.layer_name) if layer_type == "Conv2D" or layer_type == "DepthwiseConv2D" or layer_type == "Dense": self.weights = layer.get_weights()[0] - print("\t", self.weights.shape) + DEBUG ("\t", self.weights.shape) self.use_bias = layer.use_bias if layer.use_bias: self.use_bias = layer.use_bias self.bias_weights = layer.get_weights()[1] - print("\t", self.bias_weights.shape) + DEBUG ("\t", self.bias_weights.shape) if layer_type == "Conv2D" or layer_type == "DepthwiseConv2D": self.padding = layer.padding self.strides = layer.strides - print("\t", self.strides) - print("\tPadding = ", self.padding) + DEBUG ("\t", self.strides) + DEBUG ("\tPadding = ", self.padding) if layer_type == "MaxPooling2D" or layer_type == "AveragePooling2D": self.pool_size = layer.pool_size self.strides = layer.strides - print("\t pool_size = ", self.pool_size) - print("\t strides = ", self.strides) + DEBUG ("\t pool_size = ", self.pool_size) + DEBUG ("\t strides = ", self.strides) if layerHasActivationAttr(self): self.activation_type = layer.activation.__name__ - print ("\t Activation = ", self.activation_type) + DEBUG ("\t Activation = ", self.activation_type) if layer_type == "ZeroPadding2D": - print ("***ZeroPaddding \n"); + DEBUG ("***ZeroPaddding \n"); self.padding = layer.padding - print ("padding = ", self.padding); + DEBUG ("padding = ", self.padding); if layer_type == "BatchNormalization": self.epsilon = layer.epsilon @@ -264,12 +265,12 @@ class TensorRtTranslator: def getSingleInputName(self, cur_node): - print (cur_node.layer_name) + DEBUG (cur_node.layer_name) # Assumption: If no inputs, the previous layer must be input layer if len(cur_node.inputs) == 0: return "input" - print ("Input_type = ", cur_node.inputs[0].layer_type) + DEBUG ("Input_type = ", cur_node.inputs[0].layer_type) # NOTE: Assuming the 'inference' phase - hence skipping Dropout pred_layer_type = cur_node.inputs[0].layer_type @@ -295,12 +296,12 @@ class TensorRtTranslator: def getPrevLayerPadding(self, cur_node): - print (cur_node.layer_name) + DEBUG (cur_node.layer_name) # Assumption: If no inputs, the previous layer must be input layer if len(cur_node.inputs) == 0: return None - print ("Input_type = ", cur_node.inputs[0].layer_type) + DEBUG ("Input_type = ", cur_node.inputs[0].layer_type) if cur_node.inputs[0].layer_type == "ZeroPadding2D": pred_padding = cur_node.inputs[0].padding return pred_padding @@ -483,9 +484,7 @@ class TensorRtTranslator: self.program_str += inst_str - - - + def codegenNode(self, dfg, cur_node, visited_nodes): @@ -494,12 +493,11 @@ class TensorRtTranslator: if cur_node.layer_name in visited_nodes: return - print ("-visiting = ", cur_node.layer_name, "\n") + DEBUG ("-visiting = ", cur_node.layer_name, "\n") if dfg.predVisited(cur_node, visited_nodes): visited_nodes[cur_node.layer_name] = True - self.genNodeCalls(cur_node) # Invoking traversal on outbound nodes @@ -510,11 +508,13 @@ class TensorRtTranslator: # Print the DFG in reverse postorder def codegen(self, dfg): - print ("\n\n ****** Codegen for HPVM Tensor Rt ******* \n\n") + print ("\n *** Starting Codegen for HPVM Tensor Rt *** \n") visited_nodes = {} # Starting traversal at the DFG root node self.codegenNode(dfg, dfg.root_node, visited_nodes) + print ("\n\n --- Codegen Completed --- \n\n") + @@ -531,7 +531,7 @@ class TensorRtTranslator: w_name = layer_name + "_w" self.filter_names[w_name] = 1 - print (weights.shape, w_name) + DEBUG (weights.shape, w_name) N = weights.shape[3] C = weights.shape[2] @@ -563,7 +563,7 @@ class TensorRtTranslator: b_name = layer_name + "_b" self.filter_names[b_name] = 1 - print (bias_weights.shape, b_name) + DEBUG (bias_weights.shape, b_name) unique_file_name = b_name + ".bin" dumpFcBias(prefix + unique_file_name, bias_weights, bias_weights.shape[0]) @@ -584,7 +584,7 @@ class TensorRtTranslator: w_name = layer_name + "_w" self.filter_names[w_name] = 1 - print (weights.shape, w_name) + DEBUG (weights.shape, w_name) H = weights.shape[0] W = weights.shape[1] @@ -606,7 +606,7 @@ class TensorRtTranslator: b_name = layer_name + "_b" self.filter_names[b_name] = 1 - print (bias_weights.shape, b_name) + DEBUG (bias_weights.shape, b_name) unique_file_name = b_name + ".bin" dumpFcBias(prefix + unique_file_name, bias_weights, bias_weights.shape[0]) @@ -862,7 +862,7 @@ def reloadModelParams(model, reload_dir, x_test, y_test): for i in range(len(model.layers)): layer = model.layers[i] layer_name = layer.name - print ("*layer_name = ", layer_name) + DEBUG ("*layer_name = ", layer_name) if "conv" not in layer_name and "dense" not in layer_name: continue @@ -870,9 +870,6 @@ def reloadModelParams(model, reload_dir, x_test, y_test): w_path = reload_dir + layer_name + "_w.bin" b_path = reload_dir + layer_name + "_b.bin" - print ("** w_path = ", w_path) - print ("** b_path = ", b_path) - w_arr = np.fromfile(w_path, dtype='float32') b_arr = np.fromfile(b_path, dtype='float32') @@ -885,7 +882,7 @@ def reloadModelParams(model, reload_dir, x_test, y_test): b_arr = np.reshape(b_arr, b_shape) w_arr = np.transpose(w_arr, (2,3,1,0)) - print ("old_shape = ", w_shape, " new_shape = ", w_arr.shape) + DEBUG ("old_shape = ", w_shape, " new_shape = ", w_arr.shape) if "dense" in layer_name: w_arr = np.reshape(w_arr, w_shape) @@ -921,7 +918,6 @@ def getUniquePath(weights_dir): weights_dir = getUniquePath(weights_dir) - #print (weights_dir) return weights_dir @@ -950,8 +946,8 @@ def translate_to_approxhpvm(model, weights_dir, test_data=None, test_labels=None dfg.buildDFG() - print ("test_data.shape = ", test_data.shape, "\n") - print ("test_labels.shape = ", test_labels.shape, "\n") + DEBUG ("test_data.shape = ", test_data.shape, "\n") + DEBUG ("test_labels.shape = ", test_labels.shape, "\n") tensorRtTranslator = TensorRtTranslator(dfg) tensorRtTranslator.translate(model, weights_dir, test_data, test_labels) @@ -959,13 +955,17 @@ def translate_to_approxhpvm(model, weights_dir, test_data=None, test_labels=None input_str = tensorRtTranslator.getInputStr() - promiseRtTranslator = PromiseRtTranslator(dfg, weight_str) - promiseRtTranslator.translate(model, weights_dir, test_data) + #promiseRtTranslator = PromiseRtTranslator(dfg, weight_str) + #promiseRtTranslator.translate(model, weights_dir, test_data) filter_names = tensorRtTranslator.getFilterNames() hpvmTranslator = HPVMTranslator(dfg, weight_str, input_str, filter_names) hpvmTranslator.translate(model, weights_dir, test_data) - + + print ("-- Weight Files Under : ", weights_dir) + print ("-- TensorRT src : ", weights_dir + "/src.cc") + print ("-- ApproxHPVM src : ", weights_dir + "approxhpvm_src.cc") + return weights_dir diff --git a/llvm/projects/keras/frontend/hpvm_dfg_translator.py b/llvm/projects/keras/frontend/hpvm_dfg_translator.py index 233652600a564f2ca2533030b1f623b4aab06f48..65574a98881f010bf7cd67df344517803de8c67c 100644 --- a/llvm/projects/keras/frontend/hpvm_dfg_translator.py +++ b/llvm/projects/keras/frontend/hpvm_dfg_translator.py @@ -59,12 +59,12 @@ class HPVMTranslator: def getSingleInputName(self, cur_node): - print (cur_node.layer_name) + DEBUG (cur_node.layer_name) # Assumption: If no inputs, the previous layer must be input layer if len(cur_node.inputs) == 0: return "input" - print ("Input_type = ", cur_node.inputs[0].layer_type) + DEBUG ("Input_type = ", cur_node.inputs[0].layer_type) pred_layer_type = cur_node.inputs[0].layer_type # NOTE: Assuming the 'inference' phase - hence skipping Dropout @@ -90,12 +90,12 @@ class HPVMTranslator: def getPrevLayerPadding(self, cur_node): - print (cur_node.layer_name) + DEBUG (cur_node.layer_name) # Assumption: If no inputs, the previous layer must be input layer if len(cur_node.inputs) == 0: return None - print ("Input_type = ", cur_node.inputs[0].layer_type) + DEBUG ("Input_type = ", cur_node.inputs[0].layer_type) if cur_node.inputs[0].layer_type == "ZeroPadding2D": pred_padding = cur_node.inputs[0].padding return pred_padding @@ -166,7 +166,7 @@ class HPVMTranslator: node_header_str += ", " node_header_str += ") { \n" - node_header_str += " __visc__hint(visc::CUDNN_TARGET); \n" + node_header_str += " __visc__hint(visc::PROMISE_TARGET); \n" node_header_str += " __visc__attributes(" + str(num_params) + ", " for i in range(num_params): @@ -215,8 +215,8 @@ class HPVMTranslator: # Fix: replace deprecated genHpvmNodeEdges with genHpvmEdges def genHpvmNodeEdges(self, out_var_name, input_var_name, input_var_name2): - print ("input_var_name2 = ", input_var_name2) - print ("input_var_name = ", input_var_name) + DEBUG ("input_var_name2 = ", input_var_name2) + DEBUG ("input_var_name = ", input_var_name) hpvm_edge_str = "\n void* " + out_var_name + " = " hpvm_edge_str += "__visc__createNodeND(0, " + out_var_name + "_node); \n\n" @@ -462,7 +462,7 @@ class HPVMTranslator: if layer_type == "MaxPooling2D": func_name = "__visc__tensor_pool_max" if layer_type == "AveragePooling2D": - func_name = "__visc__tensor_pool_avg" + func_name = "__visc__tensor_pool_mean" inst_str += " void* r = " + func_name + "(t1, " inst_str += str(pool_size[0]) + ", " + str(pool_size[1]) + ", " @@ -531,11 +531,13 @@ class HPVMTranslator: # Print the DFG in reverse postorder def codegen(self, dfg): - print ("\n\n ****** Codegen for ApproxHPVM DFG Representation ******* \n\n") + print ("\n *** Starting Codegen for ApproxHPVM DFG Representation *** \n") visited_nodes = {} # Starting traversal at the DFG root node self.codegenNode(dfg, dfg.root_node, visited_nodes) + print ("\n --- Codegen Completed --- \n") + @@ -648,7 +650,7 @@ class HPVMTranslator: program_str = self.file_header_str + self.node_str + self.root_str program_str += self.root_struct_str + self.main_func_str - print (program_str) + DEBUG (program_str) f = open(dir_prefix + "/approxhpvm_src.cc", "w+") f.write(program_str) diff --git a/llvm/projects/keras/frontend/promise_translator.py b/llvm/projects/keras/frontend/promise_translator.py index 54982bd7c7f906d5fe27ddb052ae303575c260ba..30acf47cd8aeedaaae8ee1ba0fda637a7d931940 100644 --- a/llvm/projects/keras/frontend/promise_translator.py +++ b/llvm/projects/keras/frontend/promise_translator.py @@ -386,11 +386,8 @@ class PromiseRtTranslator: if len(cur_node.inputs) == 0: return "input" - #print ("Input_type = ", cur_node.inputs[0].layer_type) - pred_layer_type = cur_node.inputs[0].layer_type # FIXME: Assuming the 'inference' phase - hence skipping Dropout - #if pred_layer_type == "Flatten" or pred_layer_type == "Dropout": if self.isSkipLayer(pred_layer_type): cur_node = self.getPrevActiveLayer(cur_node) @@ -1056,8 +1053,6 @@ class PromiseRtTranslator: # Inference over test set layer_outs = functor([x_test[start:end], 1.]) - - ###layer_outs = functor([x_test[start:end]]) # NOTE: Saving quant ranges for input min_val = np.amin(x_test) @@ -1096,12 +1091,9 @@ class PromiseRtTranslator: min_val = range[0] if range[1] > max_val: max_val = range[1] - - # print ("****** min = ", range[0], " max = ", range[1]) self.quant_ranges[layer_name] = (min_val, max_val) - print ("---- min = ", min_val, " max = ", max_val, " ----- \n\n") ind += 1 @@ -1123,20 +1115,6 @@ class PromiseRtTranslator: print ("layer_shape = ", layer.input.shape) self.layer_input_sizes[layer_name] = layer.input.shape - #inp = model.input # input placeholder - #inputs = [] - # functor = K.function([inp, K.learning_phase()], outputs ) # evaluation function - # functor2 = K.function([inp, K.learning_phase()], inputs ) # evaluation function - # Testing - # layer_outs = functor([x_test, 1.]) - # layer_inputs = functor2([x_test, 1.]) - - #index = 0 - #for layer_in in layer_inputs: - # print ("layer_in = ", layer_in.shape) - # layer_name = model.layers[index].name - # self.layer_input_sizes[layer_name] = layer_in.shape - # index += 1 @@ -1323,7 +1301,6 @@ class PromiseRtTranslator: self.findQuantizeRanges(model, x_test) - #self.traverseSuccessors(root_node, state) self.handleLayers(root_node, state) print ("\n *** Generated PROMISE Layers **** \n ") @@ -1335,4 +1312,4 @@ class PromiseRtTranslator: - #print (self.layer_size_str) + diff --git a/llvm/projects/keras/frontend/utils.py b/llvm/projects/keras/frontend/utils.py index ffc338c19ea60df7c53430ac38b613c2daef402e..9a2c13715ee351b61f8d7aaffc148a90a45ee233 100644 --- a/llvm/projects/keras/frontend/utils.py +++ b/llvm/projects/keras/frontend/utils.py @@ -1,6 +1,13 @@ +def DEBUG(str, *args): + + debug = False + if debug: + print (str, *args) + + def nodeHasBias(cur_node): @@ -45,7 +52,6 @@ def genActivationCallStr(input_var, output_var, activation_type): inst_str = "void* " + output_var + " = " inst_str += "tensor" + func_name + "(" + input_var + "); \n" - print ("***** inst_str = ", inst_str, "\n") return inst_str diff --git a/llvm/projects/keras/frontend/weight_utils.py b/llvm/projects/keras/frontend/weight_utils.py index 69c1ee5469f317a4b5d8fd3e080ddae6bb8c83d9..dd22765386e2172572ad0feec201c7dec407a909 100644 --- a/llvm/projects/keras/frontend/weight_utils.py +++ b/llvm/projects/keras/frontend/weight_utils.py @@ -6,17 +6,16 @@ from keras.optimizers import Adam def dumpLabels(file_name, Y_test): + + print ("Dumping Labels File = ", file_name) - f = open(file_name, "wb") - + f = open(file_name, "wb") labels_map = {} for label in Y_test: label_val = 0 if len(Y_test.shape) > 1: - #label_val = np.int8(label[0]) label_val = np.int32(label[0]) else: - #label_val = np.int8(label) label_val = np.int32(label) if label_val not in labels_map: @@ -28,7 +27,7 @@ def dumpLabels(file_name, Y_test): f.close() - +""" def dumpData(file_name, X_test): N = X_test.shape[0] @@ -37,8 +36,8 @@ def dumpData(file_name, X_test): W = X_test.shape[3] print ("*DumpData") - print("-min_val = ", np.amin(X_test)) - print("-max_val = ", np.amax(X_test)) + #print("-min_val = ", np.amin(X_test)) + #print("-max_val = ", np.amax(X_test)) f = open(file_name, "wb") for i in range(N): @@ -50,35 +49,34 @@ def dumpData(file_name, X_test): f.close() +""" + -""" def dumpData(file_name, X_test): - N = X_test.shape[0] - C = X_test.shape[1] - H = X_test.shape[2] - W = X_test.shape[3] - - print ("*DumpData") - print("-min_val = ", np.amin(X_test)) - print("-max_val = ", np.amax(X_test)) + print ("*Dumping Input File = ", file_name) + #print("-min_val = ", np.amin(X_test)) + #print("-max_val = ", np.amax(X_test)) f = open(file_name, "wb") + X_test = X_test.flatten() + X_test = X_test.astype(np.float32) X_test.tofile(f) f.close() -""" + - +""" def dumpConvWeights(file_name, weights, N, C, H, W): print (weights.shape) print ("*DumpConvWeights") - print("-min_val = ", np.amin(weights)) - print("-max_val = ", np.amax(weights)) + + #print("-min_val = ", np.amin(weights)) + #print("-max_val = ", np.amax(weights)) f = open(file_name, "wb") @@ -90,15 +88,33 @@ def dumpConvWeights(file_name, weights, N, C, H, W): f.close() +""" + + +def dumpConvWeights(file_name, X_test, N, C, H, W): + + print ("*Dumping Conv Weights to file = ", file_name) + #print("-min_val = ", np.amin(X_test)) + #print("-max_val = ", np.amax(X_test)) + + f = open(file_name, "wb") + + X_test = np.transpose(X_test, (3, 2, 0, 1)) + X_test = X_test.flatten() + X_test = X_test.astype(np.float32) + X_test.tofile(f) + f.close() + + + def dumpFcWeights(file_name, weights, H, W): - print (weights.shape) - print ("*DumpFcWeights") - print("-min_val = ", np.amin(weights)) - print("-max_val = ", np.amax(weights)) - + print ("*Dumping FC weights to = ", file_name) + + #print("-min_val = ", np.amin(weights)) + #print("-max_val = ", np.amax(weights)) f = open(file_name, "wb") for i in range(H): @@ -111,11 +127,7 @@ def dumpFcWeights(file_name, weights, H, W): def dumpFcBias(file_name, bias, W): - print (bias.shape) - print ("*DumpFcBias") - print("-min_val = ", np.amin(bias)) - print("-max_val = ", np.amax(bias)) - + print ("*Dump Bias Weights = ", file_name) f = open(file_name, "wb") for i in range(W): @@ -159,19 +171,19 @@ def dumpCalibrationData2(file_name, test_data, labels_fname, test_labels): # Loads Existing HPVM FP32 weights -def dumpHPVMToKerasModel(model, reload_dir, output_model, X_test, Y_test): +def reloadHPVMWeights(model, reload_dir, output_model, X_test, Y_test): print ("***** Reloading pre-trained HPVM weights ****") for i in range(len(model.layers)): layer = model.layers[i] layer_name = layer.name - print ("*layer_name = ", layer_name) + #-- print ("*layer_name = ", layer_name) if "conv" not in layer_name and "dense" not in layer_name: continue w_path = reload_dir + layer_name + "_w.bin" - print ("** w_path = ", w_path) + #-- print ("** w_path = ", w_path) w_arr = np.fromfile(w_path, dtype='float32') b_path = reload_dir + layer_name + "_b.bin" diff --git a/llvm/projects/keras/keras_environment.yml b/llvm/projects/keras/keras_environment.yml index b0aa451b76f83618f69e8eb95ff86163b658a33a..1f56f758bef1f136f4fe71f04fe17ed0e770f7db 100644 --- a/llvm/projects/keras/keras_environment.yml +++ b/llvm/projects/keras/keras_environment.yml @@ -4,316 +4,29 @@ channels: - conda-forge - defaults dependencies: - - absl-py=0.6.1=py36_0 - - anaconda-project=0.8.2=py36_0 - - asn1crypto=0.24.0=py36_0 - - automat=0.7.0=py36_0 - - babel=2.6.0=py36_0 - - backports=1.0=py36_1 - - backports.os=0.1.1=py36_0 - - beautifulsoup4=4.6.3=py36_0 - - bkcharts=0.2=py36_0 - - blaze=0.11.3=py36_0 - - conda=4.5.11=py36_0 - - conda-env=2.6.0=1 - - contextlib2=0.5.5=py36_0 - - cycler=0.10.0=py36_0 - - dill=0.2.8.2=py36_0 - - docutils=0.14=py36_0 - - entrypoints=0.2.3=py36_2 - - et_xmlfile=1.0.1=py36_0 - - idna=2.7=py36_0 - - imageio=2.4.1=py36_0 - - importlib_metadata=0.6=py36_0 - - ipython_genutils=0.2.0=py36_0 - - isort=4.3.4=py36_0 - - jdcal=1.4=py36_0 - - jedi=0.13.1=py36_0 - - jinja2=2.10=py36_0 - - jmespath=0.9.3=py36_0 - - jsonschema=2.6.0=py36_0 - - keyring=16.0.0=py36_0 - - libgcc=7.2.0=h69d50b8_2 - - libgfortran=3.0.0=1 - - locket=0.2.0=py36_1 - - more-itertools=4.3.0=py36_0 - - nbconvert=5.3.1=py36_0 - - nbformat=4.4.0=py36_0 - - nose=1.3.7=py36_2 - - notebook=5.7.0=py36_0 - - numpydoc=0.8.0=py36_0 - - odo=0.5.1=py36_0 - - pathlib2=2.3.2=py36_0 - - pexpect=4.6.0=py36_0 - - pickleshare=0.7.5=py36_0 - - ply=3.11=py36_0 - - ptyprocess=0.6.0=py36_0 - - pycodestyle=2.4.0=py36_0 - - pygments=2.2.0=py36_0 - - pylint=2.1.1=py36_0 - - pyopenssl=18.0.0=py36_0 - - qtconsole=4.4.2=py36_0 - - requests=2.19.1=py36_0 - - s3transfer=0.1.13=py36_0 - - secretstorage=3.1.0=py36_0 - - setuptools=40.5.0=py36_0 - - singledispatch=3.4.0.3=py36_0 - - six=1.11.0=py36_1 - - snowballstemmer=1.2.1=py36_0 - - sortedcollections=1.0.1=py36_0 - - sphinx=1.8.1=py36_0 - - spyder=3.3.1=py36_1 - - sympy=1.3=py36_0 - - tblib=1.3.2=py36_0 - - termcolor=1.1.0=py36_1 - - terminado=0.8.1=py36_1 - - testpath=0.4.2=py36_0 - torchvision=0.2.1=py36_0 - - traitlets=4.3.2=py36_0 - - typing=3.6.4=py36_0 - - unicodecsv=0.14.1=py36_0 - - urllib3=1.23=py36_0 - - wcwidth=0.1.7=py36_0 - - wheel=0.32.2=py36_0 - - widgetsnbextension=3.4.2=py36_0 - - xlwt=1.3.0=py36_0 - - _license=1.1=py36_1 - _tflow_select=2.1.0=gpu - - alabaster=0.7.12=py36_0 - - anaconda-client=1.7.2=py36_0 - - anaconda=custom=py36hbbc8b67_0 - - anaconda-navigator=1.9.2=py36_0 - - appdirs=1.4.3=py36h28b3542_0 - - astor=0.7.1=py36_0 - - astroid=2.0.4=py36_0 - - astropy=3.0.5=py36h7b6447c_0 - - atomicwrites=1.2.1=py36_0 - - attrs=18.2.0=py36h28b3542_0 - - backcall=0.1.0=py36_0 - - backports.shutil_get_terminal_size=1.0.0=py36_2 - - bitarray=0.8.3=py36h14c3975_0 - - blas=1.0=mkl - - bleach=3.0.2=py36_0 - - blosc=1.14.4=hdbcaa40_0 - - bokeh=1.0.1=py36_0 - - boto=2.49.0=py36_0 - - boto3=1.9.35=py36_0 - - botocore=1.12.35=py36_0 - - bottleneck=1.2.1=py36h035aef0_1 - - bz2file=0.98=py36_1 - - bzip2=1.0.6=h14c3975_5 - - ca-certificates=2018.03.07=0 - - cairo=1.14.12=h8948797_3 - - certifi=2018.10.15=py36_0 - - cffi=1.11.5=py36he75722e_1 - - chardet=3.0.4=py36_1 - - chest=0.2.3=py36_1 - - click=7.0=py36_0 - - cloudpickle=0.6.1=py36_0 - - clyent=1.2.2=py36_1 - - colorama=0.4.0=py36_0 - - configobj=5.0.6=py36_1 - - constantly=15.1.0=py36h28b3542_0 - - cryptography=2.3.1=py36hc365091_0 - - cudatoolkit=9.0=h13b8566_0 - - cudnn=7.1.2=cuda9.0_0 - - cupti=9.0.176=0 - - curl=7.61.0=h84994c4_0 - - cython=0.29=py36he6710b0_0 - - cytoolz=0.9.0.1=py36h14c3975_1 - - dask=0.20.0=py36_0 - - dask-core=0.20.0=py36_0 - - datashape=0.5.4=py36_1 - - dbus=1.13.2=h714fa37_1 - - decorator=4.3.0=py36_0 - - defusedxml=0.5.0=py36_1 - - distributed=1.24.0=py36_0 - - expat=2.2.6=he6710b0_0 - - fastcache=1.0.2=py36h14c3975_2 - - filelock=3.0.10=py36_0 - - flask=1.0.2=py36_1 - - flask-cors=3.0.6=py36_0 - - fontconfig=2.13.0=h9420a91_0 - - freetype=2.9.1=h8a8886c_1 - - fribidi=1.0.5=h7b6447c_0 - - gast=0.2.0=py36_0 - - gensim=3.4.0=py36h14c3975_0 - - get_terminal_size=1.0.0=haa9412d_0 - - gevent=1.3.7=py36h7b6447c_1 - - glib=2.56.2=hd408876_0 - - glob2=0.6=py36_1 - - gmp=6.1.2=h6c8ec71_1 - - gmpy2=2.0.8=py36h10f8cd9_2 - - graphite2=1.3.12=h23475e2_2 - - greenlet=0.4.15=py36h7b6447c_0 - - grpcio=1.12.1=py36hdbcaa40_0 - - gst-plugins-base=1.14.0=hbbd80ab_1 - - gstreamer=1.14.0=hb453b48_1 - - h5py=2.8.0=py36h989c5e5_3 - - harfbuzz=1.8.8=hffaf4a1_0 - - hdf5=1.10.2=hba1933b_1 - - heapdict=1.0.0=py36_2 - - html5lib=1.0.1=py36_0 - - hyperlink=18.0.0=py36_0 - - icu=58.2=h9c2bf20_1 - - imagesize=1.1.0=py36_0 - - incremental=17.5.0=py36_0 - - ipykernel=5.1.0=py36h39e3cac_0 - - ipython=7.1.1=py36h39e3cac_0 - - ipywidgets=7.4.2=py36_0 - - itsdangerous=1.1.0=py36_0 - - jbig=2.1=hdba287a_0 - - jeepney=0.4=py36_0 - - jpeg=9b=h024ee3a_2 - keras=2.1.6=py36_0 - keras-applications=1.0.6=py36_0 - keras-preprocessing=1.0.5=py36_0 - - kiwisolver=1.0.1=py36hf484d3e_0 - - lazy-object-proxy=1.3.1=py36h14c3975_2 - - libcurl=7.61.0=h1ad7b7a_0 - - libedit=3.1.20170329=h6b74fdf_2 - - libffi=3.2.1=hd88cf55_4 - - libgcc-ng=8.2.0=hdf63c60_1 - - libgfortran-ng=7.3.0=hdf63c60_0 - - libiconv=1.15=h63c8f33_5 - - libpng=1.6.35=hbc83047_0 - - libprotobuf=3.6.1=hd408876_0 - - libsodium=1.0.16=h1bed415_0 - - libssh2=1.8.0=h9cfc8f7_4 - - libstdcxx-ng=8.2.0=hdf63c60_1 - - libtiff=4.0.9=he85c1e1_2 - - libtool=2.4.6=h7b6447c_5 - - libuuid=1.0.3=h1bed415_2 - - libxcb=1.13=h1bed415_1 - - libxml2=2.9.8=h26e45fe_1 - - libxslt=1.1.32=h1312cb7_0 - - llvmlite=0.25.0=py36hd408876_0 - - lxml=4.2.5=py36hefd8a0e_0 - - lzo=2.10=h49e0be7_2 - - markdown=3.0.1=py36_0 - - markupsafe=1.0=py36h14c3975_1 - - matplotlib=3.0.1=py36h5429711_0 - - mccabe=0.6.1=py36_1 - - mistune=0.8.4=py36h7b6447c_0 - mkl=2018.0.3=1 - mkl-service=1.1.2=py36h90e4bf4_5 - mkl_fft=1.0.6=py36h7dd41cf_0 - mkl_random=1.0.1=py36h4414c95_1 - - mpc=1.1.0=h10f8cd9_1 - - mpfr=4.0.1=hdf1c602_3 - - mpmath=1.0.0=py36_2 - - msgpack-python=0.5.6=py36h6bb024c_1 - - multipledispatch=0.6.0=py36_0 - - navigator-updater=0.2.1=py36_0 - - nccl=1.3.5=cuda9.0_0 - ncurses=6.1=hf484d3e_0 - - networkx=2.2=py36_1 - - ninja=1.8.2=py36h6bb024c_1 - - nltk=3.3.0=py36_0 - - numba=0.40.0=py36h962f231_0 - - numexpr=2.6.8=py36hd89afb7_0 - numpy=1.15.3=py36h1d66e8a_0 - numpy-base=1.15.3=py36h81de0dd_0 - - olefile=0.46=py36_0 - - openpyxl=2.5.9=py36_0 - - openssl=1.0.2p=h14c3975_0 - - packaging=18.0=py36_0 - pandas=0.23.4=py36h04863e7_0 - - pandoc=2.2.3.2=0 - - pandocfilters=1.4.2=py36_1 - - pango=1.42.4=h049681c_0 - - parso=0.3.1=py36_0 - - partd=0.3.9=py36_0 - - patchelf=0.9=he6710b0_3 - - path.py=11.5.0=py36_0 - - patsy=0.5.1=py36_0 - - pcre=8.42=h439df22_0 - - pep8=1.7.1=py36_0 - - pillow=5.3.0=py36h34e0f95_0 - pip=18.1=py36_0 - - pixman=0.34.0=hceecf20_3 - - pkginfo=1.4.2=py36_1 - - pluggy=0.8.0=py36_0 - - prometheus_client=0.4.2=py36_0 - - prompt_toolkit=2.0.7=py36_0 - - protobuf=3.6.1=py36he6710b0_0 - psutil=5.4.8=py36h7b6447c_0 - py=1.7.0=py36_0 - - pyasn1=0.4.4=py36h28b3542_0 - - pyasn1-modules=0.2.2=py36_0 - - pycosat=0.6.3=py36h14c3975_0 - - pycparser=2.19=py36_0 - - pycrypto=2.6.1=py36h14c3975_9 - - pycurl=7.43.0.2=py36hb7f436b_0 - - pyflakes=2.0.0=py36_0 - - pyhamcrest=1.9.0=py36_2 - - pyodbc=4.0.24=py36he6710b0_0 - - pyparsing=2.2.2=py36_0 - - pyqt=5.9.2=py36h05f1152_2 - - pysocks=1.6.8=py36_0 - - pytables=3.4.4=py36ha205bf6_0 - - pytest=3.9.3=py36_0 - - pytest-arraydiff=0.2=py36h39e3cac_0 - - pytest-astropy=0.4.0=py36_0 - - pytest-doctestplus=0.1.3=py36_0 - - pytest-openfiles=0.3.0=py36_0 - - pytest-remotedata=0.3.1=py36_0 - python=3.6.6=h6e4f718_2 - - python-dateutil=2.7.5=py36_0 - pytorch=0.4.1=py36ha74772b_0 - - pytz=2018.7=py36_0 - - pywavelets=1.0.1=py36hdd07704_0 - - pyyaml=3.13=py36h14c3975_0 - - pyzmq=17.1.2=py36h14c3975_0 - - qt=5.9.6=h8703b6f_2 - - qtawesome=0.5.2=py36_0 - - qtpy=1.5.2=py36_0 - - readline=7.0=h7b6447c_5 - - redis=5.0.0=h7b6447c_0 - - redis-py=2.10.6=py36_0 - - rope=0.11.0=py36_0 - - ruamel_yaml=0.15.46=py36h14c3975_0 - - scikit-image=0.14.0=py36hf484d3e_1 - - scikit-learn=0.20.0=py36h4989274_1 - scipy=1.1.0=py36hfa4b5c9_1 - - seaborn=0.9.0=py36_0 - - send2trash=1.5.0=py36_0 - - service_identity=17.0.0=py36h28b3542_0 - - simplegeneric=0.8.1=py36_2 - - sip=4.19.8=py36hf484d3e_0 - - smart_open=1.7.1=py36_0 - - snappy=1.1.7=hbae5bb6_3 - - sockjs-tornado=1.0.6=py36_0 - - sortedcontainers=2.0.5=py36_0 - - sphinxcontrib=1.0=py36_1 - - sphinxcontrib-websupport=1.1.0=py36_1 - - spyder-kernels=0.2.6=py36_0 - - sqlalchemy=1.2.12=py36h7b6447c_0 - - sqlite=3.25.2=h7b6447c_0 - - statsmodels=0.9.0=py36h035aef0_0 - - tensorboard=1.11.0=py36hf484d3e_0 - - tensorflow=1.11.0=gpu_py36h4459f94_0 - - tensorflow-base=1.11.0=gpu_py36h8e0ae2d_0 - - tensorflow-gpu=1.11.0=h0d30ee6_0 - - tk=8.6.8=hbc83047_0 - - toolz=0.9.0=py36_0 - - tornado=5.1.1=py36h7b6447c_0 - - tqdm=4.28.1=py36h28b3542_0 - - twisted=18.9.0=py36h7b6447c_0 - - typed-ast=1.1.0=py36h14c3975_0 - - unixodbc=2.3.7=h14c3975_0 - - webencodings=0.5.1=py36_1 - - werkzeug=0.14.1=py36_0 - - wrapt=1.10.11=py36h14c3975_2 - - xlrd=1.1.0=py36_1 - - xlsxwriter=1.1.2=py36_0 - - xz=5.2.4=h14c3975_4 - - yaml=0.1.7=had09818_2 - - zeromq=4.2.5=hf484d3e_1 - - zict=0.1.3=py36_0 - - zlib=1.2.11=ha838bed_2 - - zope=1.0=py36_1 - - zope.interface=4.6.0=py36h7b6447c_0 + - tensorboard=1.14 + - tensorflow=1.14 + - tensorflow-base=1.14 + - tensorflow-gpu=1.14 - cuda91=1.0=h4c16780_0 - pip: - msgpack==0.5.6 diff --git a/llvm/projects/keras/keras_environment_minimal.yml b/llvm/projects/keras/keras_environment_minimal.yml deleted file mode 100644 index 1f56f758bef1f136f4fe71f04fe17ed0e770f7db..0000000000000000000000000000000000000000 --- a/llvm/projects/keras/keras_environment_minimal.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: approxhpvm_keras -channels: - - pytorch - - conda-forge - - defaults -dependencies: - - torchvision=0.2.1=py36_0 - - _tflow_select=2.1.0=gpu - - keras=2.1.6=py36_0 - - keras-applications=1.0.6=py36_0 - - keras-preprocessing=1.0.5=py36_0 - - mkl=2018.0.3=1 - - mkl-service=1.1.2=py36h90e4bf4_5 - - mkl_fft=1.0.6=py36h7dd41cf_0 - - mkl_random=1.0.1=py36h4414c95_1 - - ncurses=6.1=hf484d3e_0 - - numpy=1.15.3=py36h1d66e8a_0 - - numpy-base=1.15.3=py36h81de0dd_0 - - pandas=0.23.4=py36h04863e7_0 - - pip=18.1=py36_0 - - psutil=5.4.8=py36h7b6447c_0 - - py=1.7.0=py36_0 - - python=3.6.6=h6e4f718_2 - - pytorch=0.4.1=py36ha74772b_0 - - scipy=1.1.0=py36hfa4b5c9_1 - - tensorboard=1.14 - - tensorflow=1.14 - - tensorflow-base=1.14 - - tensorflow-gpu=1.14 - - cuda91=1.0=h4c16780_0 - - pip: - - msgpack==0.5.6 - - tables==3.4.4 - - torch==0.4.1 - diff --git a/llvm/projects/keras/generated/vgg16/approxhpvm_src.cc b/llvm/projects/keras/legacy/generated/vgg16/approxhpvm_src.cc similarity index 100% rename from llvm/projects/keras/generated/vgg16/approxhpvm_src.cc rename to llvm/projects/keras/legacy/generated/vgg16/approxhpvm_src.cc diff --git a/llvm/projects/keras/generated/vgg16/src.cc b/llvm/projects/keras/legacy/generated/vgg16/src.cc similarity index 100% rename from llvm/projects/keras/generated/vgg16/src.cc rename to llvm/projects/keras/legacy/generated/vgg16/src.cc diff --git a/llvm/projects/keras/legacy/keras_environment.yml b/llvm/projects/keras/legacy/keras_environment.yml new file mode 100644 index 0000000000000000000000000000000000000000..caa3a773dfd8c7a82571a923bb1941997ba59ca9 --- /dev/null +++ b/llvm/projects/keras/legacy/keras_environment.yml @@ -0,0 +1,321 @@ +name: approxhpvm_keras +channels: + - pytorch + - conda-forge + - defaults +dependencies: + - absl-py=0.6.1=py36_0 + - anaconda-project=0.8.2=py36_0 + - asn1crypto=0.24.0=py36_0 + - automat=0.7.0=py36_0 + - babel=2.6.0=py36_0 + - backports=1.0=py36_1 + - backports.os=0.1.1=py36_0 + - beautifulsoup4=4.6.3=py36_0 + - bkcharts=0.2=py36_0 + - blaze=0.11.3=py36_0 + - conda=4.5.11=py36_0 + - conda-env=2.6.0=1 + - contextlib2=0.5.5=py36_0 + - cycler=0.10.0=py36_0 + - dill=0.2.8.2=py36_0 + - docutils=0.14=py36_0 + - entrypoints=0.2.3=py36_2 + - et_xmlfile=1.0.1=py36_0 + - idna=2.7=py36_0 + - imageio=2.4.1=py36_0 + - importlib_metadata=0.6=py36_0 + - ipython_genutils=0.2.0=py36_0 + - isort=4.3.4=py36_0 + - jdcal=1.4=py36_0 + - jedi=0.13.1=py36_0 + - jinja2=2.10=py36_0 + - jmespath=0.9.3=py36_0 + - jsonschema=2.6.0=py36_0 + - keyring=16.0.0=py36_0 + - libgcc=7.2.0=h69d50b8_2 + - libgfortran=3.0.0=1 + - locket=0.2.0=py36_1 + - more-itertools=4.3.0=py36_0 + - nbconvert=5.3.1=py36_0 + - nbformat=4.4.0=py36_0 + - nose=1.3.7=py36_2 + - notebook=5.7.0=py36_0 + - numpydoc=0.8.0=py36_0 + - odo=0.5.1=py36_0 + - pathlib2=2.3.2=py36_0 + - pexpect=4.6.0=py36_0 + - pickleshare=0.7.5=py36_0 + - ply=3.11=py36_0 + - ptyprocess=0.6.0=py36_0 + - pycodestyle=2.4.0=py36_0 + - pygments=2.2.0=py36_0 + - pylint=2.1.1=py36_0 + - pyopenssl=18.0.0=py36_0 + - qtconsole=4.4.2=py36_0 + - requests=2.19.1=py36_0 + - s3transfer=0.1.13=py36_0 + - secretstorage=3.1.0=py36_0 + - setuptools=40.5.0=py36_0 + - singledispatch=3.4.0.3=py36_0 + - six=1.11.0=py36_1 + - snowballstemmer=1.2.1=py36_0 + - sortedcollections=1.0.1=py36_0 + - sphinx=1.8.1=py36_0 + - spyder=3.3.1=py36_1 + - sympy=1.3=py36_0 + - tblib=1.3.2=py36_0 + - termcolor=1.1.0=py36_1 + - terminado=0.8.1=py36_1 + - testpath=0.4.2=py36_0 + - torchvision=0.2.1=py36_0 + - traitlets=4.3.2=py36_0 + - typing=3.6.4=py36_0 + - unicodecsv=0.14.1=py36_0 + - urllib3=1.23=py36_0 + - wcwidth=0.1.7=py36_0 + - wheel=0.32.2=py36_0 + - widgetsnbextension=3.4.2=py36_0 + - xlwt=1.3.0=py36_0 + - _tflow_select=2.1.0=gpu + - alabaster=0.7.12=py36_0 + - anaconda-client=1.7.2=py36_0 + - anaconda=custom=py36hbbc8b67_0 + - anaconda-navigator=1.9.2=py36_0 + - appdirs=1.4.3=py36h28b3542_0 + - astor=0.7.1=py36_0 + - astroid=2.0.4=py36_0 + - astropy=3.0.5=py36h7b6447c_0 + - atomicwrites=1.2.1=py36_0 + - attrs=18.2.0=py36h28b3542_0 + - backcall=0.1.0=py36_0 + - backports.shutil_get_terminal_size=1.0.0=py36_2 + - bitarray=0.8.3=py36h14c3975_0 + - blas=1.0=mkl + - bleach=3.0.2=py36_0 + - blosc=1.14.4=hdbcaa40_0 + - bokeh=1.0.1=py36_0 + - boto=2.49.0=py36_0 + - boto3=1.9.35=py36_0 + - botocore=1.12.35=py36_0 + - bottleneck=1.2.1=py36h035aef0_1 + - bz2file=0.98=py36_1 + - bzip2=1.0.6=h14c3975_5 + - ca-certificates=2018.03.07=0 + - cairo=1.14.12=h8948797_3 + - certifi=2018.10.15=py36_0 + - cffi=1.11.5=py36he75722e_1 + - chardet=3.0.4=py36_1 + - chest=0.2.3=py36_1 + - click=7.0=py36_0 + - cloudpickle=0.6.1=py36_0 + - clyent=1.2.2=py36_1 + - colorama=0.4.0=py36_0 + - configobj=5.0.6=py36_1 + - constantly=15.1.0=py36h28b3542_0 + - cryptography=2.3.1=py36hc365091_0 + - cudatoolkit=9.0=h13b8566_0 + - cudnn=7.1.2=cuda9.0_0 + - cupti=9.0.176=0 + - curl=7.61.0=h84994c4_0 + - cython=0.29=py36he6710b0_0 + - cytoolz=0.9.0.1=py36h14c3975_1 + - dask=0.20.0=py36_0 + - dask-core=0.20.0=py36_0 + - datashape=0.5.4=py36_1 + - dbus=1.13.2=h714fa37_1 + - decorator=4.3.0=py36_0 + - defusedxml=0.5.0=py36_1 + - distributed=1.24.0=py36_0 + - expat=2.2.6=he6710b0_0 + - fastcache=1.0.2=py36h14c3975_2 + - filelock=3.0.10=py36_0 + - flask=1.0.2=py36_1 + - flask-cors=3.0.6=py36_0 + - fontconfig=2.13.0=h9420a91_0 + - freetype=2.9.1=h8a8886c_1 + - fribidi=1.0.5=h7b6447c_0 + - gast=0.2.0=py36_0 + - gensim=3.4.0=py36h14c3975_0 + - get_terminal_size=1.0.0=haa9412d_0 + - gevent=1.3.7=py36h7b6447c_1 + - glib=2.56.2=hd408876_0 + - glob2=0.6=py36_1 + - gmp=6.1.2=h6c8ec71_1 + - gmpy2=2.0.8=py36h10f8cd9_2 + - graphite2=1.3.12=h23475e2_2 + - greenlet=0.4.15=py36h7b6447c_0 + - grpcio=1.12.1=py36hdbcaa40_0 + - gst-plugins-base=1.14.0=hbbd80ab_1 + - gstreamer=1.14.0=hb453b48_1 + - h5py=2.8.0=py36h989c5e5_3 + - harfbuzz=1.8.8=hffaf4a1_0 + - hdf5=1.10.2=hba1933b_1 + - heapdict=1.0.0=py36_2 + - html5lib=1.0.1=py36_0 + - hyperlink=18.0.0=py36_0 + - icu=58.2=h9c2bf20_1 + - imagesize=1.1.0=py36_0 + - incremental=17.5.0=py36_0 + - ipykernel=5.1.0=py36h39e3cac_0 + - ipython=7.1.1=py36h39e3cac_0 + - ipywidgets=7.4.2=py36_0 + - itsdangerous=1.1.0=py36_0 + - jbig=2.1=hdba287a_0 + - jeepney=0.4=py36_0 + - jpeg=9b=h024ee3a_2 + - keras=2.1.6=py36_0 + - keras-applications=1.0.6=py36_0 + - keras-preprocessing=1.0.5=py36_0 + - kiwisolver=1.0.1=py36hf484d3e_0 + - lazy-object-proxy=1.3.1=py36h14c3975_2 + - libcurl=7.61.0=h1ad7b7a_0 + - libedit=3.1.20170329=h6b74fdf_2 + - libffi=3.2.1=hd88cf55_4 + - libgcc-ng=8.2.0=hdf63c60_1 + - libgfortran-ng=7.3.0=hdf63c60_0 + - libiconv=1.15=h63c8f33_5 + - libpng=1.6.35=hbc83047_0 + - libprotobuf=3.6.1=hd408876_0 + - libsodium=1.0.16=h1bed415_0 + - libssh2=1.8.0=h9cfc8f7_4 + - libstdcxx-ng=8.2.0=hdf63c60_1 + - libtiff=4.0.9=he85c1e1_2 + - libtool=2.4.6=h7b6447c_5 + - libuuid=1.0.3=h1bed415_2 + - libxcb=1.13=h1bed415_1 + - libxml2=2.9.8=h26e45fe_1 + - libxslt=1.1.32=h1312cb7_0 + - llvmlite=0.25.0=py36hd408876_0 + - lxml=4.2.5=py36hefd8a0e_0 + - lzo=2.10=h49e0be7_2 + - markdown=3.0.1=py36_0 + - markupsafe=1.0=py36h14c3975_1 + - matplotlib=3.0.1=py36h5429711_0 + - mccabe=0.6.1=py36_1 + - mistune=0.8.4=py36h7b6447c_0 + - mkl=2018.0.3=1 + - mkl-service=1.1.2=py36h90e4bf4_5 + - mkl_fft=1.0.6=py36h7dd41cf_0 + - mkl_random=1.0.1=py36h4414c95_1 + - mpc=1.1.0=h10f8cd9_1 + - mpfr=4.0.1=hdf1c602_3 + - mpmath=1.0.0=py36_2 + - msgpack-python=0.5.6=py36h6bb024c_1 + - multipledispatch=0.6.0=py36_0 + - navigator-updater=0.2.1=py36_0 + - nccl=1.3.5=cuda9.0_0 + - ncurses=6.1=hf484d3e_0 + - networkx=2.2=py36_1 + - ninja=1.8.2=py36h6bb024c_1 + - nltk=3.3.0=py36_0 + - numba=0.40.0=py36h962f231_0 + - numexpr=2.6.8=py36hd89afb7_0 + - numpy=1.15.3=py36h1d66e8a_0 + - numpy-base=1.15.3=py36h81de0dd_0 + - olefile=0.46=py36_0 + - openpyxl=2.5.9=py36_0 + - openssl=1.0.2p=h14c3975_0 + - packaging=18.0=py36_0 + - pandas=0.23.4=py36h04863e7_0 + - pandoc=2.2.3.2=0 + - pandocfilters=1.4.2=py36_1 + - pango=1.42.4=h049681c_0 + - parso=0.3.1=py36_0 + - partd=0.3.9=py36_0 + - patchelf=0.9=he6710b0_3 + - path.py=11.5.0=py36_0 + - patsy=0.5.1=py36_0 + - pcre=8.42=h439df22_0 + - pep8=1.7.1=py36_0 + - pillow=5.3.0=py36h34e0f95_0 + - pip=18.1=py36_0 + - pixman=0.34.0=hceecf20_3 + - pkginfo=1.4.2=py36_1 + - pluggy=0.8.0=py36_0 + - prometheus_client=0.4.2=py36_0 + - prompt_toolkit=2.0.7=py36_0 + - protobuf=3.6.1=py36he6710b0_0 + - psutil=5.4.8=py36h7b6447c_0 + - py=1.7.0=py36_0 + - pyasn1=0.4.4=py36h28b3542_0 + - pyasn1-modules=0.2.2=py36_0 + - pycosat=0.6.3=py36h14c3975_0 + - pycparser=2.19=py36_0 + - pycrypto=2.6.1=py36h14c3975_9 + - pycurl=7.43.0.2=py36hb7f436b_0 + - pyflakes=2.0.0=py36_0 + - pyhamcrest=1.9.0=py36_2 + - pyodbc=4.0.24=py36he6710b0_0 + - pyparsing=2.2.2=py36_0 + - pyqt=5.9.2=py36h05f1152_2 + - pysocks=1.6.8=py36_0 + - pytables=3.4.4=py36ha205bf6_0 + - pytest=3.9.3=py36_0 + - pytest-arraydiff=0.2=py36h39e3cac_0 + - pytest-astropy=0.4.0=py36_0 + - pytest-doctestplus=0.1.3=py36_0 + - pytest-openfiles=0.3.0=py36_0 + - pytest-remotedata=0.3.1=py36_0 + - python=3.6.6=h6e4f718_2 + - python-dateutil=2.7.5=py36_0 + - pytorch=0.4.1=py36ha74772b_0 + - pytz=2018.7=py36_0 + - pywavelets=1.0.1=py36hdd07704_0 + - pyyaml=3.13=py36h14c3975_0 + - pyzmq=17.1.2=py36h14c3975_0 + - qt=5.9.6=h8703b6f_2 + - qtawesome=0.5.2=py36_0 + - qtpy=1.5.2=py36_0 + - readline=7.0=h7b6447c_5 + - redis=5.0.0=h7b6447c_0 + - redis-py=2.10.6=py36_0 + - rope=0.11.0=py36_0 + - ruamel_yaml=0.15.46=py36h14c3975_0 + - scikit-image=0.14.0=py36hf484d3e_1 + - scikit-learn=0.20.0=py36h4989274_1 + - scipy=1.1.0=py36hfa4b5c9_1 + - seaborn=0.9.0=py36_0 + - send2trash=1.5.0=py36_0 + - service_identity=17.0.0=py36h28b3542_0 + - simplegeneric=0.8.1=py36_2 + - sip=4.19.8=py36hf484d3e_0 + - smart_open=1.7.1=py36_0 + - snappy=1.1.7=hbae5bb6_3 + - sockjs-tornado=1.0.6=py36_0 + - sortedcontainers=2.0.5=py36_0 + - sphinxcontrib=1.0=py36_1 + - sphinxcontrib-websupport=1.1.0=py36_1 + - spyder-kernels=0.2.6=py36_0 + - sqlalchemy=1.2.12=py36h7b6447c_0 + - sqlite=3.25.2=h7b6447c_0 + - statsmodels=0.9.0=py36h035aef0_0 + - tensorboard=1.11.0=py36hf484d3e_0 + - tensorflow=1.11.0=gpu_py36h4459f94_0 + - tensorflow-base=1.11.0=gpu_py36h8e0ae2d_0 + - tensorflow-gpu=1.11.0=h0d30ee6_0 + - tk=8.6.8=hbc83047_0 + - toolz=0.9.0=py36_0 + - tornado=5.1.1=py36h7b6447c_0 + - tqdm=4.28.1=py36h28b3542_0 + - twisted=18.9.0=py36h7b6447c_0 + - typed-ast=1.1.0=py36h14c3975_0 + - unixodbc=2.3.7=h14c3975_0 + - webencodings=0.5.1=py36_1 + - werkzeug=0.14.1=py36_0 + - wrapt=1.10.11=py36h14c3975_2 + - xlrd=1.1.0=py36_1 + - xlsxwriter=1.1.2=py36_0 + - xz=5.2.4=h14c3975_4 + - yaml=0.1.7=had09818_2 + - zeromq=4.2.5=hf484d3e_1 + - zict=0.1.3=py36_0 + - zlib=1.2.11=ha838bed_2 + - zope=1.0=py36_1 + - zope.interface=4.6.0=py36h7b6447c_0 + - cuda91=1.0=h4c16780_0 + - pip: + - msgpack==0.5.6 + - tables==3.4.4 + - torch==0.4.1 + diff --git a/llvm/projects/keras/keras_environment_deps.yml b/llvm/projects/keras/legacy/keras_environment_deps.yml similarity index 100% rename from llvm/projects/keras/keras_environment_deps.yml rename to llvm/projects/keras/legacy/keras_environment_deps.yml diff --git a/llvm/projects/keras/src/Benchmark.py b/llvm/projects/keras/src/Benchmark.py index fc3b483fbc9b34dc99455ba6e61fcc7eea79f24a..e83a78f4ea5d776a21ed6a6b47ccdb840f42c129 100644 --- a/llvm/projects/keras/src/Benchmark.py +++ b/llvm/projects/keras/src/Benchmark.py @@ -7,7 +7,7 @@ from keras.utils.np_utils import to_categorical from keras.models import load_model from frontend.approxhpvm_translator import translate_to_approxhpvm from frontend.weight_utils import dumpCalibrationData -from frontend.weight_utils import dumpHPVMToKerasModel +from frontend.weight_utils import reloadHPVMWeights # Every CNN Benchmark must inherit from Benchmark class @@ -47,14 +47,19 @@ class Benchmark: # Cmake ../ # make - - def run(self, argv): - if len(argv) < 2: - print ("Usage: python ${benchmark.py} [hpvm_reload|keras_reload|train] [frontend] [compile]") + def printUsage(self): + + print ("Usage: python ${benchmark.py} [hpvm_reload|keras_reload|train] [frontend] [compile]") sys.exit(0) + + def run(self, argv): + + if len(argv) < 2: + self.printUsage() + # Virtual method call implemented by each CNN model = self.buildModel() @@ -62,14 +67,19 @@ class Benchmark: X_train, Y_train, X_test, Y_test = self.data_preprocess() if argv[1] == "hpvm_reload": - model = dumpHPVMToKerasModel(model, self.reload_dir, self.keras_model_file, X_test, Y_test) + print ("loading weights .....\n\n") + model = reloadHPVMWeights(model, self.reload_dir, self.keras_model_file, X_test, Y_test) - if argv[1] == "keras_reload": + elif argv[1] == "keras_reload": model = load_model(self.keras_model_file) - if argv[1] == "train": + elif argv[1] == "train": model = self.trainModel(model) + else: + self.printUsage() + + score = model.evaluate(X_test, to_categorical(Y_test, self.num_classes), verbose=0) print('Test accuracy2:', score[1]) @@ -81,10 +91,15 @@ class Benchmark: # Main call to ApproxHPVM-Keras Frontend working_dir = translate_to_approxhpvm(model, self.hpvm_dir, X_test, Y_test, self.num_classes) - print ("*** working_dir = ", working_dir) + #-- print ("*** working_dir = ", working_dir) if len(argv) > 3 and argv[3] == "compile": self.compileSource(working_dir) - + else: + self.printUsage() + + elif len(argv) > 2: + self.printUsage() + diff --git a/llvm/projects/keras/src/alexnet.py b/llvm/projects/keras/src/alexnet.py index d7848a2b6388e506583772caf9f39efd787df27d..9bfe80a156ae21e9befea3a6872b63758e37e2a3 100644 --- a/llvm/projects/keras/src/alexnet.py +++ b/llvm/projects/keras/src/alexnet.py @@ -19,9 +19,7 @@ import keras import numpy as np import os from Benchmark import Benchmark -from frontend.approxhpvm_translator import translate_to_approxhpvm -from frontend.weight_utils import dumpCalibrationData -from frontend.weight_utils import dumpHPVMToKerasModel + @@ -46,6 +44,8 @@ class AlexNet(Benchmark): def buildModel(self): + print ("BuildModel ...") + activation_type = "tanh" weight_decay = 1e-4 @@ -138,16 +138,20 @@ class AlexNet(Benchmark): def data_preprocess(self): + print ("Data Preprocess... \n") + (X_train, Y_train), (X_test, Y_test) = cifar10.load_data() + print ("Data Loaded... \n") + X_train = X_train / 255.0 X_test = X_test / 255.0 - + mean = np.mean(X_train,axis=(0,1,2,3)) std = np.std(X_train,axis=(0,1,2,3)) X_train = (X_train-mean)/(std+1e-7) X_test = (X_test-mean)/(std+1e-7) - + return X_train, Y_train, X_test, Y_test diff --git a/llvm/projects/keras/src/alexnet_imagenet.py b/llvm/projects/keras/src/alexnet_imagenet.py index 0e8425b8259a7361064fb189c77af0dc389cda66..41cf2d837cf8ba764b614512f40a0f6c0522ab3d 100644 --- a/llvm/projects/keras/src/alexnet_imagenet.py +++ b/llvm/projects/keras/src/alexnet_imagenet.py @@ -30,10 +30,10 @@ data_format = 'channels_first' IMAGENET_DIR = '/home/nz11/ILSVRC2012/' OUTPUT_DIR = 'data/alexnet_imagenet_tune/' -WEIGHTS_PATH = 'data/weights.h5' +WEIGHTS_PATH = 'data/alexnet_imagenet_tune/weights.h5' NUM_CLASSES = 200 -IMAGES_PER_CLASS = 40 +IMAGES_PER_CLASS = 50 # VAL_SIZE = 100 @@ -183,6 +183,9 @@ y_true = np.array(y_true) X_tune = np.array(X_tune) y_tune = np.array(y_tune) +print ('tune size', len(X_tune)) +print ('test size', len(X_test)) + @@ -233,16 +236,16 @@ model.compile(optimizer=keras.optimizers.Adam(lr=0.00001), loss='categorical_cro if os.path.exists(WEIGHTS_PATH): model.load_weights(WEIGHTS_PATH) else: - model.fit_generator(generate(), steps_per_epoch=1000, validation_data=(X_test, to_categorical(y_true, num_classes=1000)), epochs=2) - K.set_value(model.optimizer.lr, 0.000001) - model.fit_generator(generate(), steps_per_epoch=1000, validation_data=(X_test, to_categorical(y_true, num_classes=1000)), epochs=6) - model.save_weights('data/weights.h5') + pass +# model.fit_generator(generate(), steps_per_epoch=1000, validation_data=(X_test, to_categorical(y_true, num_classes=1000)), epochs=3) +# K.set_value(model.optimizer.lr, 0.000001) +# model.fit_generator(generate(), steps_per_epoch=1000, validation_data=(X_test, to_categorical(y_true, num_classes=1000)), epochs=3) translate_to_approxhpvm(model, OUTPUT_DIR, X_tune, y_tune, 1000) -# dumpCalibrationData2(OUTPUT_DIR + 'test_input_10K.bin', X_test, OUTPUT_DIR + 'test_labels_10K.bin', y_true) -dumpCalibrationData2(OUTPUT_DIR + 'tune_input.bin', X_tune, OUTPUT_DIR + 'tune_labels.bin', y_tune) -dumpCalibrationData2(OUTPUT_DIR + 'test_input.bin', X_test, OUTPUT_DIR + 'test_labels.bin', y_true) +# # dumpCalibrationData2(OUTPUT_DIR + 'test_input_10K.bin', X_test, OUTPUT_DIR + 'test_labels_10K.bin', y_true) +# dumpCalibrationData2(OUTPUT_DIR + 'tune_input.bin', X_tune, OUTPUT_DIR + 'tune_labels.bin', y_tune) +# dumpCalibrationData2(OUTPUT_DIR + 'test_input.bin', X_test, OUTPUT_DIR + 'test_labels.bin', y_true) pred = np.argmax(model.predict(X_test), axis=1) @@ -250,4 +253,7 @@ print ('val accuracy', np.sum(pred == y_true.ravel()) / len(X_test)) pred = np.argmax(model.predict(X_tune), axis=1) print ('val accuracy', np.sum(pred == y_tune.ravel()) / len(X_tune)) + +model.save_weights(OUTPUT_DIR + '/weights.h5') + \ No newline at end of file diff --git a/llvm/projects/keras/src/lenet_conv_test.py b/llvm/projects/keras/src/legacy/lenet_conv_test.py similarity index 100% rename from llvm/projects/keras/src/lenet_conv_test.py rename to llvm/projects/keras/src/legacy/lenet_conv_test.py diff --git a/llvm/projects/keras/src/mobilenet_imagenet.py b/llvm/projects/keras/src/legacy/mobilenet_imagenet.py similarity index 100% rename from llvm/projects/keras/src/mobilenet_imagenet.py rename to llvm/projects/keras/src/legacy/mobilenet_imagenet.py diff --git a/llvm/projects/keras/src/mobilenet_shallow.py b/llvm/projects/keras/src/legacy/mobilenet_shallow.py similarity index 100% rename from llvm/projects/keras/src/mobilenet_shallow.py rename to llvm/projects/keras/src/legacy/mobilenet_shallow.py diff --git a/llvm/projects/keras/src/mobilenetv2_cifar10.py b/llvm/projects/keras/src/legacy/mobilenetv2_cifar10.py similarity index 100% rename from llvm/projects/keras/src/mobilenetv2_cifar10.py rename to llvm/projects/keras/src/legacy/mobilenetv2_cifar10.py diff --git a/llvm/projects/keras/src/resnet.py b/llvm/projects/keras/src/resnet18_cifar10.py similarity index 100% rename from llvm/projects/keras/src/resnet.py rename to llvm/projects/keras/src/resnet18_cifar10.py diff --git a/llvm/projects/keras/src/resnet50_imagenet.py b/llvm/projects/keras/src/resnet50_imagenet.py index b4d9925a085e6e510c4d2707f9564cfe28a53765..55d0918b7a526ba1a9866d2d8e3b0e2e8608cc25 100644 --- a/llvm/projects/keras/src/resnet50_imagenet.py +++ b/llvm/projects/keras/src/resnet50_imagenet.py @@ -29,7 +29,7 @@ data_format = 'channels_first' IMAGENET_DIR = '/home/nz11/ILSVRC2012/' -OUTPUT_DIR = 'data/resnet50_imagenet_tune/' +OUTPUT_DIR = 'data/resnet50_imagenet_tune_regenerate/' WEIGHTS_PATH = 'data/resnet50_imagenet/weights.h5' NUM_CLASSES = 200 @@ -217,6 +217,9 @@ y_true = np.array(y_true) X_tune = np.array(X_tune) y_tune = np.array(y_tune) +print ('tune size', len(X_tune)) +print ('test size', len(X_test)) + @@ -267,19 +270,20 @@ model.compile(optimizer=keras.optimizers.Adam(lr=0.00001), loss='categorical_cro if os.path.exists(WEIGHTS_PATH): model.load_weights(WEIGHTS_PATH) else: - model.fit_generator(generate(), steps_per_epoch=1000, validation_data=(X_test, to_categorical(y_true, num_classes=1000)), epochs=6) - model.save_weights(OUTPUT_DIR + 'weights.h5') + pass +# model.fit_generator(generate(), steps_per_epoch=1000, validation_data=(X_test, to_categorical(y_true, num_classes=1000)), epochs=6) +# model.save_weights(OUTPUT_DIR + 'weights.h5') translate_to_approxhpvm(model, OUTPUT_DIR, X_tune, y_tune, 1000) -# dumpCalibrationData2(OUTPUT_DIR + 'test_input_10K.bin', X_test, OUTPUT_DIR + 'test_labels_10K.bin', y_true) -dumpCalibrationData2(OUTPUT_DIR + 'tune_input.bin', X_tune, OUTPUT_DIR + 'tune_labels.bin', y_tune) -dumpCalibrationData2(OUTPUT_DIR + 'test_input.bin', X_test, OUTPUT_DIR + 'test_labels.bin', y_true) +# # dumpCalibrationData2(OUTPUT_DIR + 'test_input_10K.bin', X_test, OUTPUT_DIR + 'test_labels_10K.bin', y_true) +# dumpCalibrationData2(OUTPUT_DIR + 'tune_input.bin', X_tune, OUTPUT_DIR + 'tune_labels.bin', y_tune) +# dumpCalibrationData2(OUTPUT_DIR + 'test_input.bin', X_test, OUTPUT_DIR + 'test_labels.bin', y_true) pred = np.argmax(model.predict(X_test), axis=1) print ('val accuracy', np.sum(pred == y_true.ravel()) / len(X_test)) -pred = np.argmax(model.predict(X_tune), axis=1) -print ('val accuracy', np.sum(pred == y_tune.ravel()) / len(X_tune)) +# pred = np.argmax(model.predict(X_tune), axis=1) +# print ('val accuracy', np.sum(pred == y_tune.ravel()) / len(X_tune)) \ No newline at end of file diff --git a/llvm/projects/keras/src/vgg16_imagenet.py b/llvm/projects/keras/src/vgg16_imagenet.py index 4f24e6b184911537dc425f4db0200f3f0836a48c..b41df8b83a966495d6a1c8281745e91181a66c41 100644 --- a/llvm/projects/keras/src/vgg16_imagenet.py +++ b/llvm/projects/keras/src/vgg16_imagenet.py @@ -32,7 +32,7 @@ IMAGENET_DIR = '/home/nz11/ILSVRC2012/' OUTPUT_DIR = 'data/vgg16_imagenet_tune/' NUM_CLASSES = 200 -IMAGES_PER_CLASS = 40 +IMAGES_PER_CLASS = 50 # VAL_SIZE = 100 @@ -212,18 +212,22 @@ y_true = np.array(y_true) X_tune = np.array(X_tune) y_tune = np.array(y_tune) +print ('tune size', len(X_tune)) +print ('test size', len(X_test)) + translate_to_approxhpvm(model, OUTPUT_DIR, X_tune, y_tune, 1000) -# dumpCalibrationData2(OUTPUT_DIR + 'test_input_10K.bin', X_test, OUTPUT_DIR + 'test_labels_10K.bin', y_true) -dumpCalibrationData2(OUTPUT_DIR + 'tune_input.bin', X_tune, OUTPUT_DIR + 'tune_labels.bin', y_tune) -dumpCalibrationData2(OUTPUT_DIR + 'test_input.bin', X_test, OUTPUT_DIR + 'test_labels.bin', y_true) +# # dumpCalibrationData2(OUTPUT_DIR + 'test_input_10K.bin', X_test, OUTPUT_DIR + 'test_labels_10K.bin', y_true) +# dumpCalibrationData2(OUTPUT_DIR + 'tune_input.bin', X_tune, OUTPUT_DIR + 'tune_labels.bin', y_tune) +# dumpCalibrationData2(OUTPUT_DIR + 'test_input.bin', X_test, OUTPUT_DIR + 'test_labels.bin', y_true) pred = np.argmax(model.predict(X_test), axis=1) print ('val accuracy', np.sum(pred == y_true.ravel()) / len(X_test)) -pred = np.argmax(model.predict(X_tune), axis=1) -print ('val accuracy', np.sum(pred == y_tune.ravel()) / len(X_tune)) +# pred = np.argmax(model.predict(X_tune), axis=1) +# print ('val accuracy', np.sum(pred == y_tune.ravel()) / len(X_tune)) + diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet/Makefile b/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet/Makefile index fb23f70f66e85a77ae057c4d2edb989097723987..32cc431640742ce8e8323bec1ea74f0a1f5e202d 100644 --- a/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet/Makefile +++ b/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet/Makefile @@ -1,6 +1,4 @@ DNN_BENCHMARK_ROOT = $(LLVM_SRC_ROOT)/test/VISC/DNN_Benchmarks -# NOTE: can configure build directory -#HPVM_BUILD_DIR = $(LLVM_SRC_ROOT)/../build_hpvm/ HPVM_BUILD_DIR = $(LLVM_BUILD_ROOT) CC = $(HPVM_BUILD_DIR)/bin/clang++ @@ -49,36 +47,28 @@ TARGET = $(BUILD_DIR)/$(APP).opt.bc SOURCES = $(SRC_DIR)/$(APP).cpp VISC_RT_PATH = $(LLVM_SRC_ROOT)/../build/projects/visc-rt/visc-rt.ll -#OBJS = $(BUILD_DIR)/$(wildcabrd *.ll) + .PRECIOUS: $(BUILD_DIR)/$(APP).ll $(BUILD_DIR)/$(APP).visc.ll default: $(BUILD_DIR) $(TARGET) $(BUILD_DIR)/%.ll: $(SRC_DIR)/%.cpp $(CC) $(CC_FLAGS) -emit-llvm src/$(APP).cpp -S -o $(BUILD_DIR)/$(APP).ll - $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_promise.cpp -S -o $(BUILD_DIR)/$(APP)_promise.ll $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_loop.cpp -S -o $(BUILD_DIR)/$(APP)_loop.ll $(BUILD_DIR)/%.opt.bc: $(BUILD_DIR)/%.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP).ll -S -o $(BUILD_DIR)/$(APP).visc.ll - $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_promise.ll -S -o $(BUILD_DIR)/$(APP)_promise.visc.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_loop.ll -S -o $(BUILD_DIR)/$(APP)_loop.visc.ll $(OPT) $(VISC_OPTFLAGS) $(BUILD_DIR)/$(APP).visc.ll -o $(BUILD_DIR)/$(APP)_cudnn.bc - #$(OPT) $(VISC_OPTFLAGS2) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_promise.bc - $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_wrapperapi.bc $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc $(OPT) $(VISC_PRED_OPTFLAGS3) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_pred_wrapperapi.bc $(OPT) $(VISC_PRED_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_cudnn.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_cudnn_linked.bc - #$(LLVM_LINK) $(BUILD_DIR)/$(APP)_promise.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_promise_linked.bc - $(LLVM_LINK) $(BUILD_DIR)/$(APP)_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(CC) $(BUILD_DIR)/$(APP)_cudnn_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_cudnn_linked $(LINKER_FLAGS) - #$(CC) $(BUILD_DIR)/$(APP)_promise_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_promise_linked $(LINKER_FLAGS) - $(CC) $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked $(LINKER_FLAGS) diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet/src/alexnet_loop.cpp b/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet/src/alexnet_loop.cpp index 09e6e25cffe18e375575bf83ebd4283e4295e7e4..246fa5f32d1bd1e2ab29867b25ce648558b0cb20 100644 --- a/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet/src/alexnet_loop.cpp +++ b/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet/src/alexnet_loop.cpp @@ -440,12 +440,11 @@ int main(){ int test_input_size = 5000; int batch_count = test_input_size / batch_size; - // void* input = create4DTensor(0,nchw,batch_size,3,32,32); startMemTracking(); startProfiling(); - for (int j = 0; j < 14; j++){ + for (int j = 0; j < 1; j++){ for (int i = 0; i < batch_count; i++){ int start = i * batch_size; diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet2/Makefile b/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet2/Makefile index cae7df33de24e4d20e2d0d2b0977709a1865c9a8..4d4821a922507a257c9040af24adbcabe9dbf673 100644 --- a/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet2/Makefile +++ b/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet2/Makefile @@ -1,6 +1,4 @@ DNN_BENCHMARK_ROOT = $(LLVM_SRC_ROOT)/test/VISC/DNN_Benchmarks -# NOTE: can configure build directory -#HPVM_BUILD_DIR = $(LLVM_SRC_ROOT)/../build_hpvm/ HPVM_BUILD_DIR = $(LLVM_BUILD_ROOT) CC = $(HPVM_BUILD_DIR)/bin/clang++ @@ -49,36 +47,28 @@ TARGET = $(BUILD_DIR)/$(APP).opt.bc SOURCES = $(SRC_DIR)/$(APP).cpp VISC_RT_PATH = $(LLVM_SRC_ROOT)/../build/projects/visc-rt/visc-rt.ll -#OBJS = $(BUILD_DIR)/$(wildcabrd *.ll) + .PRECIOUS: $(BUILD_DIR)/$(APP).ll $(BUILD_DIR)/$(APP).visc.ll default: $(BUILD_DIR) $(TARGET) $(BUILD_DIR)/%.ll: $(SRC_DIR)/%.cpp $(CC) $(CC_FLAGS) -emit-llvm src/$(APP).cpp -S -o $(BUILD_DIR)/$(APP).ll - $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_promise.cpp -S -o $(BUILD_DIR)/$(APP)_promise.ll $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_loop.cpp -S -o $(BUILD_DIR)/$(APP)_loop.ll $(BUILD_DIR)/%.opt.bc: $(BUILD_DIR)/%.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP).ll -S -o $(BUILD_DIR)/$(APP).visc.ll - $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_promise.ll -S -o $(BUILD_DIR)/$(APP)_promise.visc.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_loop.ll -S -o $(BUILD_DIR)/$(APP)_loop.visc.ll $(OPT) $(VISC_OPTFLAGS) $(BUILD_DIR)/$(APP).visc.ll -o $(BUILD_DIR)/$(APP)_cudnn.bc - #$(OPT) $(VISC_OPTFLAGS2) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_promise.bc - $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_wrapperapi.bc $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc $(OPT) $(VISC_PRED_OPTFLAGS3) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_pred_wrapperapi.bc $(OPT) $(VISC_PRED_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_cudnn.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_cudnn_linked.bc - #$(LLVM_LINK) $(BUILD_DIR)/$(APP)_promise.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_promise_linked.bc - $(LLVM_LINK) $(BUILD_DIR)/$(APP)_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(CC) $(BUILD_DIR)/$(APP)_cudnn_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_cudnn_linked $(LINKER_FLAGS) - #$(CC) $(BUILD_DIR)/$(APP)_promise_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_promise_linked $(LINKER_FLAGS) - $(CC) $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked $(LINKER_FLAGS) diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet2/src/alexnet2_loop.cpp b/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet2/src/alexnet2_loop.cpp index 77a5fde7f8d448f8b9c14b959696f65a574205b2..555b62869ff457596b3e435bb22937c5fa920e20 100644 --- a/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet2/src/alexnet2_loop.cpp +++ b/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet2/src/alexnet2_loop.cpp @@ -486,7 +486,7 @@ int main(){ args->dense_1_b_bytes = 0; - int batch_size = 500; + int batch_size = 250; int test_input_size = 5000; int batch_count = test_input_size / batch_size; @@ -496,7 +496,7 @@ int main(){ startMemTracking(); startProfiling(); - for (int j = 0; j < 14; j++){ + for (int j = 0; j < 1; j++){ for (int i = 0; i < batch_count; i++){ int start = i * batch_size; diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet_imagenet/Makefile b/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet_imagenet/Makefile index 0e6d9e4f08d33fb62bfb20ac8eb4f86ea4ca87de..fdc988b6858b15942f1bc16e9dbc8fcdb6c60b0f 100644 --- a/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet_imagenet/Makefile +++ b/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet_imagenet/Makefile @@ -1,6 +1,4 @@ DNN_BENCHMARK_ROOT = $(LLVM_SRC_ROOT)/test/VISC/DNN_Benchmarks -# NOTE: can configure build directory -#HPVM_BUILD_DIR = $(LLVM_SRC_ROOT)/../build_hpvm/ HPVM_BUILD_DIR = $(LLVM_BUILD_ROOT) CC = $(HPVM_BUILD_DIR)/bin/clang++ @@ -49,22 +47,21 @@ TARGET = $(BUILD_DIR)/$(APP).opt.bc SOURCES = $(SRC_DIR)/$(APP).cpp VISC_RT_PATH = $(LLVM_SRC_ROOT)/../build/projects/visc-rt/visc-rt.ll -#OBJS = $(BUILD_DIR)/$(wildcabrd *.ll) + .PRECIOUS: $(BUILD_DIR)/$(APP).ll $(BUILD_DIR)/$(APP).visc.ll default: $(BUILD_DIR) $(TARGET) $(BUILD_DIR)/%.ll: $(SRC_DIR)/%.cpp $(CC) $(CC_FLAGS) -emit-llvm src/$(APP).cpp -S -o $(BUILD_DIR)/$(APP).ll - $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_promise.cpp -S -o $(BUILD_DIR)/$(APP)_promise.ll $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_loop.cpp -S -o $(BUILD_DIR)/$(APP)_loop.ll $(BUILD_DIR)/%.opt.bc: $(BUILD_DIR)/%.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP).ll -S -o $(BUILD_DIR)/$(APP).visc.ll - $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_promise.ll -S -o $(BUILD_DIR)/$(APP)_promise.visc.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_loop.ll -S -o $(BUILD_DIR)/$(APP)_loop.visc.ll $(OPT) $(VISC_OPTFLAGS) $(BUILD_DIR)/$(APP).visc.ll -o $(BUILD_DIR)/$(APP)_cudnn.bc +<<<<<<< HEAD #$(OPT) $(VISC_OPTFLAGS2) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_promise.bc $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_wrapperapi.bc $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc @@ -73,12 +70,19 @@ $(BUILD_DIR)/%.opt.bc: $(BUILD_DIR)/%.ll $(LLVM_LINK) $(BUILD_DIR)/$(APP)_cudnn.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_cudnn_linked.bc #$(LLVM_LINK) $(BUILD_DIR)/$(APP)_promise.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_promise_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc +======= + $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc + $(LLVM_LINK) $(BUILD_DIR)/$(APP)_cudnn.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_cudnn_linked.bc +>>>>>>> 2a31471f4de89edd9180689d139be7ca65b0df08 $(LLVM_LINK) $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(CC) $(BUILD_DIR)/$(APP)_cudnn_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_cudnn_linked $(LINKER_FLAGS) +<<<<<<< HEAD #$(CC) $(BUILD_DIR)/$(APP)_promise_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_promise_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked $(LINKER_FLAGS) +======= +>>>>>>> 2a31471f4de89edd9180689d139be7ca65b0df08 $(CC) $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked $(LINKER_FLAGS) diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet_imagenet/src/alexnet_imagenet_loop.cpp b/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet_imagenet/src/alexnet_imagenet_loop.cpp index 8423886e50000cc4e65527c19cc85f3a96e41efe..e9e3e6e0fd344f205784dc7d1fbd0e159f50d72a 100644 --- a/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet_imagenet/src/alexnet_imagenet_loop.cpp +++ b/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet_imagenet/src/alexnet_imagenet_loop.cpp @@ -555,7 +555,7 @@ int main(){ startMemTracking(); startProfiling(); - for (int j = 0; j < 14; j++){ + for (int j = 0; j < 1; j++){ for (int i = 0; i < batch_count; i++){ int start = i * batch_size; diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/Makefile b/llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/Makefile similarity index 100% rename from llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/Makefile rename to llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/Makefile diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/data/autotuner_data/tuner_confs_batch220.txt b/llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/data/autotuner_data/tuner_confs_batch220.txt similarity index 100% rename from llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/data/autotuner_data/tuner_confs_batch220.txt rename to llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/data/autotuner_data/tuner_confs_batch220.txt diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/data/autotuner_data/tuner_pareto_confs_batch220.txt b/llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/data/autotuner_data/tuner_pareto_confs_batch220.txt similarity index 100% rename from llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/data/autotuner_data/tuner_pareto_confs_batch220.txt rename to llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/data/autotuner_data/tuner_pareto_confs_batch220.txt diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/data/autotuner_data/tuner_promise_confs_batch220_multi.txt b/llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/data/autotuner_data/tuner_promise_confs_batch220_multi.txt similarity index 100% rename from llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/data/autotuner_data/tuner_promise_confs_batch220_multi.txt rename to llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/data/autotuner_data/tuner_promise_confs_batch220_multi.txt diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/data/autotuner_data/tuner_promise_confs_batch220_multi2.txt b/llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/data/autotuner_data/tuner_promise_confs_batch220_multi2.txt similarity index 100% rename from llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/data/autotuner_data/tuner_promise_confs_batch220_multi2.txt rename to llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/data/autotuner_data/tuner_promise_confs_batch220_multi2.txt diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/data/autotuner_data/tuner_promise_confs_batch220_single.txt b/llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/data/autotuner_data/tuner_promise_confs_batch220_single.txt similarity index 100% rename from llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/data/autotuner_data/tuner_promise_confs_batch220_single.txt rename to llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/data/autotuner_data/tuner_promise_confs_batch220_single.txt diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/data/quant_ranges.txt b/llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/data/quant_ranges.txt similarity index 100% rename from llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/data/quant_ranges.txt rename to llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/data/quant_ranges.txt diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/data/quant_ranges_rt.txt b/llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/data/quant_ranges_rt.txt similarity index 100% rename from llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/data/quant_ranges_rt.txt rename to llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/data/quant_ranges_rt.txt diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/data/tuner_confs_base.txt b/llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/data/tuner_confs_base.txt similarity index 100% rename from llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/data/tuner_confs_base.txt rename to llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/data/tuner_confs_base.txt diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/src/mobilenet_shallow.cpp b/llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/src/mobilenet_shallow.cpp similarity index 100% rename from llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/src/mobilenet_shallow.cpp rename to llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/src/mobilenet_shallow.cpp diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/src/mobilenet_shallow_promise.cpp b/llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/src/mobilenet_shallow_promise.cpp similarity index 100% rename from llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet_shallow/src/mobilenet_shallow_promise.cpp rename to llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/mobilenet_shallow/src/mobilenet_shallow_promise.cpp diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet2/src/alexnet2_promise.cpp b/llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/promise_src/alexnet2_promise.cpp similarity index 100% rename from llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet2/src/alexnet2_promise.cpp rename to llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/promise_src/alexnet2_promise.cpp diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet_imagenet/src/alexnet_imagenet_promise.cpp b/llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/promise_src/alexnet_imagenet_promise.cpp similarity index 100% rename from llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet_imagenet/src/alexnet_imagenet_promise.cpp rename to llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/promise_src/alexnet_imagenet_promise.cpp diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet/src/alexnet_promise.cpp b/llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/promise_src/alexnet_promise.cpp similarity index 100% rename from llvm/test/VISC/DNN_Benchmarks/benchmarks/alexnet/src/alexnet_promise.cpp rename to llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/promise_src/alexnet_promise.cpp diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/lenet_mnist/src/lenet_mnist_promise.cpp b/llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/promise_src/lenet_mnist_promise.cpp similarity index 100% rename from llvm/test/VISC/DNN_Benchmarks/benchmarks/lenet_mnist/src/lenet_mnist_promise.cpp rename to llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/promise_src/lenet_mnist_promise.cpp diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet/src/mobilenet_promise.cpp b/llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/promise_src/mobilenet_promise.cpp similarity index 100% rename from llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet/src/mobilenet_promise.cpp rename to llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/promise_src/mobilenet_promise.cpp diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/resnet18/src/resnet18_promise.cpp b/llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/promise_src/resnet18_promise.cpp similarity index 100% rename from llvm/test/VISC/DNN_Benchmarks/benchmarks/resnet18/src/resnet18_promise.cpp rename to llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/promise_src/resnet18_promise.cpp diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_cifar100/src/vgg16_cifar100_promise.cpp b/llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/promise_src/vgg16_cifar100_promise.cpp similarity index 100% rename from llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_cifar100/src/vgg16_cifar100_promise.cpp rename to llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/promise_src/vgg16_cifar100_promise.cpp diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_cifar10/src/vgg16_cifar10_promise.cpp b/llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/promise_src/vgg16_cifar10_promise.cpp similarity index 100% rename from llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_cifar10/src/vgg16_cifar10_promise.cpp rename to llvm/test/VISC/DNN_Benchmarks/benchmarks/legacy/promise_src/vgg16_cifar10_promise.cpp diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/lenet_mnist/Makefile b/llvm/test/VISC/DNN_Benchmarks/benchmarks/lenet_mnist/Makefile index 909ecfdca5a730e4d400cce70addee2d36573f1c..643715cbf57138926b222456f7b3b4257ca80f20 100644 --- a/llvm/test/VISC/DNN_Benchmarks/benchmarks/lenet_mnist/Makefile +++ b/llvm/test/VISC/DNN_Benchmarks/benchmarks/lenet_mnist/Makefile @@ -1,6 +1,9 @@ DNN_BENCHMARK_ROOT = $(LLVM_SRC_ROOT)/test/VISC/DNN_Benchmarks +<<<<<<< HEAD # NOTE: can configure build directory #HPVM_BUILD_DIR = $(LLVM_SRC_ROOT)/../build_hpvm/ +======= +>>>>>>> 2a31471f4de89edd9180689d139be7ca65b0df08 HPVM_BUILD_DIR = $(LLVM_BUILD_ROOT) CC = $(HPVM_BUILD_DIR)/bin/clang++ @@ -49,36 +52,50 @@ TARGET = $(BUILD_DIR)/$(APP).opt.bc SOURCES = $(SRC_DIR)/$(APP).cpp VISC_RT_PATH = $(LLVM_SRC_ROOT)/../build/projects/visc-rt/visc-rt.ll -#OBJS = $(BUILD_DIR)/$(wildcabrd *.ll) + .PRECIOUS: $(BUILD_DIR)/$(APP).ll $(BUILD_DIR)/$(APP).visc.ll default: $(BUILD_DIR) $(TARGET) $(BUILD_DIR)/%.ll: $(SRC_DIR)/%.cpp $(CC) $(CC_FLAGS) -emit-llvm src/$(APP).cpp -S -o $(BUILD_DIR)/$(APP).ll +<<<<<<< HEAD $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_promise.cpp -S -o $(BUILD_DIR)/$(APP)_promise.ll +======= +>>>>>>> 2a31471f4de89edd9180689d139be7ca65b0df08 $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_loop.cpp -S -o $(BUILD_DIR)/$(APP)_loop.ll $(BUILD_DIR)/%.opt.bc: $(BUILD_DIR)/%.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP).ll -S -o $(BUILD_DIR)/$(APP).visc.ll +<<<<<<< HEAD $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_promise.ll -S -o $(BUILD_DIR)/$(APP)_promise.visc.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_loop.ll -S -o $(BUILD_DIR)/$(APP)_loop.visc.ll $(OPT) $(VISC_OPTFLAGS) $(BUILD_DIR)/$(APP).visc.ll -o $(BUILD_DIR)/$(APP)_cudnn.bc #$(OPT) $(VISC_OPTFLAGS2) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_promise.bc $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_wrapperapi.bc +======= + $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_loop.ll -S -o $(BUILD_DIR)/$(APP)_loop.visc.ll + $(OPT) $(VISC_OPTFLAGS) $(BUILD_DIR)/$(APP).visc.ll -o $(BUILD_DIR)/$(APP)_cudnn.bc +>>>>>>> 2a31471f4de89edd9180689d139be7ca65b0df08 $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc $(OPT) $(VISC_PRED_OPTFLAGS3) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_pred_wrapperapi.bc $(OPT) $(VISC_PRED_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_cudnn.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_cudnn_linked.bc +<<<<<<< HEAD #$(LLVM_LINK) $(BUILD_DIR)/$(APP)_promise.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_promise_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc +======= +>>>>>>> 2a31471f4de89edd9180689d139be7ca65b0df08 $(LLVM_LINK) $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(CC) $(BUILD_DIR)/$(APP)_cudnn_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_cudnn_linked $(LINKER_FLAGS) +<<<<<<< HEAD #$(CC) $(BUILD_DIR)/$(APP)_promise_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_promise_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked $(LINKER_FLAGS) +======= +>>>>>>> 2a31471f4de89edd9180689d139be7ca65b0df08 $(CC) $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked $(LINKER_FLAGS) diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet/Makefile b/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet/Makefile index 3d678aae8feaf65bdfb9f3c04fafcb6a04505070..507d64f121e2448263ea294f6a94cd8974f0ff50 100644 --- a/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet/Makefile +++ b/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet/Makefile @@ -1,6 +1,4 @@ DNN_BENCHMARK_ROOT = $(LLVM_SRC_ROOT)/test/VISC/DNN_Benchmarks -# NOTE: can configure build directory -#HPVM_BUILD_DIR = $(LLVM_SRC_ROOT)/../build_hpvm/ HPVM_BUILD_DIR = $(LLVM_BUILD_ROOT) CC = $(HPVM_BUILD_DIR)/bin/clang++ @@ -49,36 +47,28 @@ TARGET = $(BUILD_DIR)/$(APP).opt.bc SOURCES = $(SRC_DIR)/$(APP).cpp VISC_RT_PATH = $(LLVM_SRC_ROOT)/../build/projects/visc-rt/visc-rt.ll -#OBJS = $(BUILD_DIR)/$(wildcabrd *.ll) + .PRECIOUS: $(BUILD_DIR)/$(APP).ll $(BUILD_DIR)/$(APP).visc.ll default: $(BUILD_DIR) $(TARGET) $(BUILD_DIR)/%.ll: $(SRC_DIR)/%.cpp $(CC) $(CC_FLAGS) -emit-llvm src/$(APP).cpp -S -o $(BUILD_DIR)/$(APP).ll - $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_promise.cpp -S -o $(BUILD_DIR)/$(APP)_promise.ll $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_loop.cpp -S -o $(BUILD_DIR)/$(APP)_loop.ll $(BUILD_DIR)/%.opt.bc: $(BUILD_DIR)/%.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP).ll -S -o $(BUILD_DIR)/$(APP).visc.ll - $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_promise.ll -S -o $(BUILD_DIR)/$(APP)_promise.visc.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_loop.ll -S -o $(BUILD_DIR)/$(APP)_loop.visc.ll $(OPT) $(VISC_OPTFLAGS) $(BUILD_DIR)/$(APP).visc.ll -o $(BUILD_DIR)/$(APP)_cudnn.bc - #$(OPT) $(VISC_OPTFLAGS2) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_promise.bc - $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_wrapperapi.bc $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc $(OPT) $(VISC_PRED_OPTFLAGS3) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_pred_wrapperapi.bc $(OPT) $(VISC_PRED_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_cudnn.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_cudnn_linked.bc - #$(LLVM_LINK) $(BUILD_DIR)/$(APP)_promise.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_promise_linked.bc - $(LLVM_LINK) $(BUILD_DIR)/$(APP)_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(CC) $(BUILD_DIR)/$(APP)_cudnn_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_cudnn_linked $(LINKER_FLAGS) - #$(CC) $(BUILD_DIR)/$(APP)_promise_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_promise_linked $(LINKER_FLAGS) - $(CC) $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked $(LINKER_FLAGS) diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet/data/tuner_confs_base.txt b/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet/data/tuner_confs_base.txt index 8b5c1727ad0dc9e24310e4c86e116894051c84b3..ed02ddab0dbef2b21f785226b80f4eee7a1735cf 100644 --- a/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet/data/tuner_confs_base.txt +++ b/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet/data/tuner_confs_base.txt @@ -1,3 +1,4 @@ +1000 +++++ conf1 1 0 84.8 0 1 gpu conv fp32 1 diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet/src/mobilenet.cpp b/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet/src/mobilenet.cpp index 5266f216887445b41f7d63a4c2e92b134a09ccc5..2fbb5a6eb424ae93e0d301b70620185060f4b7f5 100644 --- a/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet/src/mobilenet.cpp +++ b/llvm/test/VISC/DNN_Benchmarks/benchmarks/mobilenet/src/mobilenet.cpp @@ -1826,7 +1826,7 @@ RootIn; int main(){ - std::string dir_prefix = std::string("../../../../../../projects/hpvm-tensor-rt/model_params/mobilenet_quant/"); + std::string dir_prefix = std::string("../../../../../../projects/hpvm-tensor-rt/model_params/mobilenet/"); std::string input_path = dir_prefix + std::string("input.bin"); std::string labels_path = dir_prefix + std::string("labels.bin"); diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/resnet18/Makefile b/llvm/test/VISC/DNN_Benchmarks/benchmarks/resnet18/Makefile index 4de3565fce81f857beb3dd4ee60e7423bdd0322a..409358ba466c3d86f563f630d24fe6845cea7274 100644 --- a/llvm/test/VISC/DNN_Benchmarks/benchmarks/resnet18/Makefile +++ b/llvm/test/VISC/DNN_Benchmarks/benchmarks/resnet18/Makefile @@ -1,6 +1,5 @@ +LLVM_BUILD_ROOT=/home/hsharif3/Gitlab/hpvm/build_hpvm/ DNN_BENCHMARK_ROOT = $(LLVM_SRC_ROOT)/test/VISC/DNN_Benchmarks -# NOTE: can configure build directory -#HPVM_BUILD_DIR = $(LLVM_SRC_ROOT)/../build_hpvm/ HPVM_BUILD_DIR = $(LLVM_BUILD_ROOT) CC = $(HPVM_BUILD_DIR)/bin/clang++ @@ -56,29 +55,21 @@ default: $(BUILD_DIR) $(TARGET) $(BUILD_DIR)/%.ll: $(SRC_DIR)/%.cpp $(CC) $(CC_FLAGS) -emit-llvm src/$(APP).cpp -S -o $(BUILD_DIR)/$(APP).ll - $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_promise.cpp -S -o $(BUILD_DIR)/$(APP)_promise.ll $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_loop.cpp -S -o $(BUILD_DIR)/$(APP)_loop.ll $(BUILD_DIR)/%.opt.bc: $(BUILD_DIR)/%.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP).ll -S -o $(BUILD_DIR)/$(APP).visc.ll - $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_promise.ll -S -o $(BUILD_DIR)/$(APP)_promise.visc.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_loop.ll -S -o $(BUILD_DIR)/$(APP)_loop.visc.ll $(OPT) $(VISC_OPTFLAGS) $(BUILD_DIR)/$(APP).visc.ll -o $(BUILD_DIR)/$(APP)_cudnn.bc - #$(OPT) $(VISC_OPTFLAGS2) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_promise.bc - $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_wrapperapi.bc $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc $(OPT) $(VISC_PRED_OPTFLAGS3) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_pred_wrapperapi.bc $(OPT) $(VISC_PRED_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_cudnn.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_cudnn_linked.bc - #$(LLVM_LINK) $(BUILD_DIR)/$(APP)_promise.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_promise_linked.bc - $(LLVM_LINK) $(BUILD_DIR)/$(APP)_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(CC) $(BUILD_DIR)/$(APP)_cudnn_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_cudnn_linked $(LINKER_FLAGS) - #$(CC) $(BUILD_DIR)/$(APP)_promise_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_promise_linked $(LINKER_FLAGS) - $(CC) $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked $(LINKER_FLAGS) diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/resnet50_imagenet/Makefile b/llvm/test/VISC/DNN_Benchmarks/benchmarks/resnet50_imagenet/Makefile index 5fb4534594a1aef9077f74f53ffe06281bc2b23a..5180f55744d292e54042ebbf8227a3ebed99a3b4 100644 --- a/llvm/test/VISC/DNN_Benchmarks/benchmarks/resnet50_imagenet/Makefile +++ b/llvm/test/VISC/DNN_Benchmarks/benchmarks/resnet50_imagenet/Makefile @@ -1,3 +1,7 @@ +<<<<<<< HEAD +======= +LLVM_BUILD_ROOT=/home/hsharif3/Gitlab/hpvm/build_hpvm/ +>>>>>>> 2a31471f4de89edd9180689d139be7ca65b0df08 DNN_BENCHMARK_ROOT = $(LLVM_SRC_ROOT)/test/VISC/DNN_Benchmarks # NOTE: can configure build directory #HPVM_BUILD_DIR = $(LLVM_SRC_ROOT)/../build_hpvm/ @@ -49,36 +53,50 @@ TARGET = $(BUILD_DIR)/$(APP).opt.bc SOURCES = $(SRC_DIR)/$(APP).cpp VISC_RT_PATH = $(LLVM_SRC_ROOT)/../build/projects/visc-rt/visc-rt.ll -#OBJS = $(BUILD_DIR)/$(wildcabrd *.ll) + .PRECIOUS: $(BUILD_DIR)/$(APP).ll $(BUILD_DIR)/$(APP).visc.ll default: $(BUILD_DIR) $(TARGET) $(BUILD_DIR)/%.ll: $(SRC_DIR)/%.cpp $(CC) $(CC_FLAGS) -emit-llvm src/$(APP).cpp -S -o $(BUILD_DIR)/$(APP).ll +<<<<<<< HEAD $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_promise.cpp -S -o $(BUILD_DIR)/$(APP)_promise.ll +======= +>>>>>>> 2a31471f4de89edd9180689d139be7ca65b0df08 $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_loop.cpp -S -o $(BUILD_DIR)/$(APP)_loop.ll $(BUILD_DIR)/%.opt.bc: $(BUILD_DIR)/%.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP).ll -S -o $(BUILD_DIR)/$(APP).visc.ll +<<<<<<< HEAD $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_promise.ll -S -o $(BUILD_DIR)/$(APP)_promise.visc.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_loop.ll -S -o $(BUILD_DIR)/$(APP)_loop.visc.ll $(OPT) $(VISC_OPTFLAGS) $(BUILD_DIR)/$(APP).visc.ll -o $(BUILD_DIR)/$(APP)_cudnn.bc #$(OPT) $(VISC_OPTFLAGS2) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_promise.bc $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_wrapperapi.bc +======= + $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_loop.ll -S -o $(BUILD_DIR)/$(APP)_loop.visc.ll + $(OPT) $(VISC_OPTFLAGS) $(BUILD_DIR)/$(APP).visc.ll -o $(BUILD_DIR)/$(APP)_cudnn.bc +>>>>>>> 2a31471f4de89edd9180689d139be7ca65b0df08 $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc $(OPT) $(VISC_PRED_OPTFLAGS3) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_pred_wrapperapi.bc $(OPT) $(VISC_PRED_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_cudnn.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_cudnn_linked.bc +<<<<<<< HEAD #$(LLVM_LINK) $(BUILD_DIR)/$(APP)_promise.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_promise_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc +======= +>>>>>>> 2a31471f4de89edd9180689d139be7ca65b0df08 $(LLVM_LINK) $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(CC) $(BUILD_DIR)/$(APP)_cudnn_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_cudnn_linked $(LINKER_FLAGS) +<<<<<<< HEAD #$(CC) $(BUILD_DIR)/$(APP)_promise_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_promise_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked $(LINKER_FLAGS) +======= +>>>>>>> 2a31471f4de89edd9180689d139be7ca65b0df08 $(CC) $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked $(LINKER_FLAGS) diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_cifar10/Makefile b/llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_cifar10/Makefile index cf001e5dc9187b9562959af3223970ed9dce9b97..511cb5c8adf073956599b412ea18f7941c889ab9 100644 --- a/llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_cifar10/Makefile +++ b/llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_cifar10/Makefile @@ -1,6 +1,4 @@ DNN_BENCHMARK_ROOT = $(LLVM_SRC_ROOT)/test/VISC/DNN_Benchmarks -# NOTE: can configure build directory -#HPVM_BUILD_DIR = $(LLVM_SRC_ROOT)/../build_hpvm/ HPVM_BUILD_DIR = $(LLVM_BUILD_ROOT) CC = $(HPVM_BUILD_DIR)/bin/clang++ @@ -49,36 +47,30 @@ TARGET = $(BUILD_DIR)/$(APP).opt.bc SOURCES = $(SRC_DIR)/$(APP).cpp VISC_RT_PATH = $(LLVM_SRC_ROOT)/../build/projects/visc-rt/visc-rt.ll -#OBJS = $(BUILD_DIR)/$(wildcabrd *.ll) + .PRECIOUS: $(BUILD_DIR)/$(APP).ll $(BUILD_DIR)/$(APP).visc.ll default: $(BUILD_DIR) $(TARGET) $(BUILD_DIR)/%.ll: $(SRC_DIR)/%.cpp $(CC) $(CC_FLAGS) -emit-llvm src/$(APP).cpp -S -o $(BUILD_DIR)/$(APP).ll - $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_promise.cpp -S -o $(BUILD_DIR)/$(APP)_promise.ll $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_loop.cpp -S -o $(BUILD_DIR)/$(APP)_loop.ll $(BUILD_DIR)/%.opt.bc: $(BUILD_DIR)/%.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP).ll -S -o $(BUILD_DIR)/$(APP).visc.ll - $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_promise.ll -S -o $(BUILD_DIR)/$(APP)_promise.visc.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_loop.ll -S -o $(BUILD_DIR)/$(APP)_loop.visc.ll $(OPT) $(VISC_OPTFLAGS) $(BUILD_DIR)/$(APP).visc.ll -o $(BUILD_DIR)/$(APP)_cudnn.bc - #$(OPT) $(VISC_OPTFLAGS2) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_promise.bc - $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_wrapperapi.bc $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc $(OPT) $(VISC_PRED_OPTFLAGS3) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_pred_wrapperapi.bc $(OPT) $(VISC_PRED_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_cudnn.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_cudnn_linked.bc - #$(LLVM_LINK) $(BUILD_DIR)/$(APP)_promise.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_promise_linked.bc - $(LLVM_LINK) $(BUILD_DIR)/$(APP)_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc + #$(LLVM_LINK) $(BUILD_DIR)/$(APP)_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(CC) $(BUILD_DIR)/$(APP)_cudnn_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_cudnn_linked $(LINKER_FLAGS) - #$(CC) $(BUILD_DIR)/$(APP)_promise_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_promise_linked $(LINKER_FLAGS) - $(CC) $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked $(LINKER_FLAGS) + #$(CC) $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked $(LINKER_FLAGS) diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_cifar10/src/vgg16_cifar10_loop.cpp b/llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_cifar10/src/vgg16_cifar10_loop.cpp index 602164516f78462f7059ef7aa975bf2aa0d34bf0..a5f507e409d72f6f264eb9ff2b7e3dcc03fcc79a 100644 --- a/llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_cifar10/src/vgg16_cifar10_loop.cpp +++ b/llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_cifar10/src/vgg16_cifar10_loop.cpp @@ -974,12 +974,11 @@ int main(){ int test_input_size = 5000; int batch_count = test_input_size / batch_size; - // void* input = create4DTensor(0,nchw,batch_size,3,32,32); startMemTracking(); startProfiling(); - for (int j = 0; j < 14; j++){ + for (int j = 0; j < 1; j++){ for (int i = 0; i < batch_count; i++){ int start = i * batch_size; diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_cifar100/Makefile b/llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_cifar100/Makefile index 199d24b54f856be3b5c858ccd4ba8269a7e73328..052011292a3af053d23d0d6c627e5fd2d0231b13 100644 --- a/llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_cifar100/Makefile +++ b/llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_cifar100/Makefile @@ -1,6 +1,4 @@ DNN_BENCHMARK_ROOT = $(LLVM_SRC_ROOT)/test/VISC/DNN_Benchmarks -# NOTE: can configure build directory -#HPVM_BUILD_DIR = $(LLVM_SRC_ROOT)/../build_hpvm/ HPVM_BUILD_DIR = $(LLVM_BUILD_ROOT) CC = $(HPVM_BUILD_DIR)/bin/clang++ @@ -49,36 +47,28 @@ TARGET = $(BUILD_DIR)/$(APP).opt.bc SOURCES = $(SRC_DIR)/$(APP).cpp VISC_RT_PATH = $(LLVM_SRC_ROOT)/../build/projects/visc-rt/visc-rt.ll -#OBJS = $(BUILD_DIR)/$(wildcabrd *.ll) + .PRECIOUS: $(BUILD_DIR)/$(APP).ll $(BUILD_DIR)/$(APP).visc.ll default: $(BUILD_DIR) $(TARGET) $(BUILD_DIR)/%.ll: $(SRC_DIR)/%.cpp $(CC) $(CC_FLAGS) -emit-llvm src/$(APP).cpp -S -o $(BUILD_DIR)/$(APP).ll - $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_promise.cpp -S -o $(BUILD_DIR)/$(APP)_promise.ll $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_loop.cpp -S -o $(BUILD_DIR)/$(APP)_loop.ll $(BUILD_DIR)/%.opt.bc: $(BUILD_DIR)/%.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP).ll -S -o $(BUILD_DIR)/$(APP).visc.ll - $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_promise.ll -S -o $(BUILD_DIR)/$(APP)_promise.visc.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_loop.ll -S -o $(BUILD_DIR)/$(APP)_loop.visc.ll $(OPT) $(VISC_OPTFLAGS) $(BUILD_DIR)/$(APP).visc.ll -o $(BUILD_DIR)/$(APP)_cudnn.bc - #$(OPT) $(VISC_OPTFLAGS2) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_promise.bc - $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_wrapperapi.bc $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc $(OPT) $(VISC_PRED_OPTFLAGS3) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_pred_wrapperapi.bc $(OPT) $(VISC_PRED_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_cudnn.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_cudnn_linked.bc - #$(LLVM_LINK) $(BUILD_DIR)/$(APP)_promise.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_promise_linked.bc - $(LLVM_LINK) $(BUILD_DIR)/$(APP)_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(CC) $(BUILD_DIR)/$(APP)_cudnn_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_cudnn_linked $(LINKER_FLAGS) - #$(CC) $(BUILD_DIR)/$(APP)_promise_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_promise_linked $(LINKER_FLAGS) - $(CC) $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked $(LINKER_FLAGS) diff --git a/llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_imagenet/Makefile b/llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_imagenet/Makefile index 8875f2eddf39493321fb706b9eec45880819da16..f5e4d17b622deca90a98745c60df7586fd973435 100644 --- a/llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_imagenet/Makefile +++ b/llvm/test/VISC/DNN_Benchmarks/benchmarks/vgg16_imagenet/Makefile @@ -56,29 +56,43 @@ default: $(BUILD_DIR) $(TARGET) $(BUILD_DIR)/%.ll: $(SRC_DIR)/%.cpp $(CC) $(CC_FLAGS) -emit-llvm src/$(APP).cpp -S -o $(BUILD_DIR)/$(APP).ll +<<<<<<< HEAD $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_promise.cpp -S -o $(BUILD_DIR)/$(APP)_promise.ll +======= +>>>>>>> 2a31471f4de89edd9180689d139be7ca65b0df08 $(CC) $(CC_FLAGS) -emit-llvm src/$(APP)_loop.cpp -S -o $(BUILD_DIR)/$(APP)_loop.ll $(BUILD_DIR)/%.opt.bc: $(BUILD_DIR)/%.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP).ll -S -o $(BUILD_DIR)/$(APP).visc.ll +<<<<<<< HEAD $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_promise.ll -S -o $(BUILD_DIR)/$(APP)_promise.visc.ll $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_loop.ll -S -o $(BUILD_DIR)/$(APP)_loop.visc.ll $(OPT) $(VISC_OPTFLAGS) $(BUILD_DIR)/$(APP).visc.ll -o $(BUILD_DIR)/$(APP)_cudnn.bc #$(OPT) $(VISC_OPTFLAGS2) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_promise.bc $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_wrapperapi.bc +======= + $(OPT) -load LLVMGenVISC.so -genvisc -globaldce $(BUILD_DIR)/$(APP)_loop.ll -S -o $(BUILD_DIR)/$(APP)_loop.visc.ll + $(OPT) $(VISC_OPTFLAGS) $(BUILD_DIR)/$(APP).visc.ll -o $(BUILD_DIR)/$(APP)_cudnn.bc +>>>>>>> 2a31471f4de89edd9180689d139be7ca65b0df08 $(OPT) $(VISC_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc $(OPT) $(VISC_PRED_OPTFLAGS3) $(BUILD_DIR)/$(APP)_promise.visc.ll -o $(BUILD_DIR)/$(APP)_pred_wrapperapi.bc $(OPT) $(VISC_PRED_OPTFLAGS3) $(BUILD_DIR)/$(APP)_loop.visc.ll -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_cudnn.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_cudnn_linked.bc +<<<<<<< HEAD #$(LLVM_LINK) $(BUILD_DIR)/$(APP)_promise.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_promise_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc +======= +>>>>>>> 2a31471f4de89edd9180689d139be7ca65b0df08 $(LLVM_LINK) $(BUILD_DIR)/$(APP)_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(LLVM_LINK) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi.bc $(VISC_RT_PATH) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(CC) $(BUILD_DIR)/$(APP)_cudnn_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_cudnn_linked $(LINKER_FLAGS) +<<<<<<< HEAD #$(CC) $(BUILD_DIR)/$(APP)_promise_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_promise_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_wrapperapi_linked $(LINKER_FLAGS) +======= +>>>>>>> 2a31471f4de89edd9180689d139be7ca65b0df08 $(CC) $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_loop_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_wrapperapi_linked $(LINKER_FLAGS) $(CC) $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked.bc $(TENSOR_LIB_DIR) $(PROFILER_LIB_DIR) $(SOC_SIMULATOR_LIB_DIR) -o $(BUILD_DIR)/$(APP)_pred_loop_wrapperapi_linked $(LINKER_FLAGS) diff --git a/llvm/test/VISC/DNN_Benchmarks/common/include/visc.h b/llvm/test/VISC/DNN_Benchmarks/common/include/visc.h index 978f29e85a9aae8e310f528bc8fa7630c85d8542..9bf77b6ed654a6b309a8685acd51882ea1d95a5c 100644 --- a/llvm/test/VISC/DNN_Benchmarks/common/include/visc.h +++ b/llvm/test/VISC/DNN_Benchmarks/common/include/visc.h @@ -112,6 +112,10 @@ void* __visc__tensor_map3(void*, void*, void*, void*); void* __visc__tensor_cosineT(void*); void* __visc__tensor_stencil(void*); +// New HPVM intrinsic for Setting Node ID +void* __visc__node_id(int); + + #include <unistd.h> long get_global_id(int);