Commit acfe534d by chengshuyao

Debug expand order next_bit_layer

parent 409122be
...@@ -51,7 +51,7 @@ public: ...@@ -51,7 +51,7 @@ public:
//BSD内部使用的变量(固定) //BSD内部使用的变量(固定)
const double total_weight_max = pow(2.0,20); //指导权重分布修改 const double total_weight_max = pow(2.0,20); //指导权重分布修改
const int total_sample_max = 1000000000; //指导采样个数修改 const int total_sample_max = 1000000000; //指导采样个数修改
const int BSD_samples_influence_max = 1*parameter_num_threads; //BSD确定展开序的置信度 const int BSD_samples_influence_max = 10*parameter_num_threads; //BSD确定展开序的置信度
int which_demo_function ; int which_demo_function ;
int BDD_id; int BDD_id;
...@@ -659,7 +659,7 @@ int BDD_class::train_BDD(int start_depth, int how_many_start_nodes, BDD_node* st ...@@ -659,7 +659,7 @@ int BDD_class::train_BDD(int start_depth, int how_many_start_nodes, BDD_node* st
bool* left_mask_output_data_tmp = new bool [BSD_samples]; bool* left_mask_output_data_tmp = new bool [BSD_samples];
bool* right_mask_output_data_tmp = new bool [BSD_samples]; bool* right_mask_output_data_tmp = new bool [BSD_samples];
if((i == (parameter_early_stop_depth-1))&&(which_BDD==0) || ((i == (parameter_early_stop_depth-1))&&(which_BDD==1)) || ((total_split_nodes_recursive) > parameter_early_stop_split_nodes-BDD_width_each_layer[i])){ if((i == (parameter_early_stop_depth-1))&&(which_BDD==0) || ((i == (parameter_early_stop_depth-1))&&(which_BDD==1)) || ((total_split_nodes_recursive) > parameter_early_stop_split_nodes-BDD_width_each_layer[i])){
//cout<<"Early Stop: Condition A "<<endl; cout<<"Early Stop: Condition A "<<endl;
for(int zi=0;zi<min(BSD_samples,100);zi++){ for(int zi=0;zi<min(BSD_samples,100);zi++){
left_mask_output_data_tmp[zi] = left_mask_output_data_all[zi+BSD_samples*j]; left_mask_output_data_tmp[zi] = left_mask_output_data_all[zi+BSD_samples*j];
if(left_mask_output_data_tmp[zi]){ if(left_mask_output_data_tmp[zi]){
......
...@@ -83,8 +83,8 @@ int BDD_class::next_bit_layer_0(int depth){ ...@@ -83,8 +83,8 @@ int BDD_class::next_bit_layer_0(int depth){
amount_turn_input_data_ij[k] = mask_input_data[j][k]; amount_turn_input_data_ij[k] = mask_input_data[j][k];
} }
amount_turn_input_data_ij[i] = !amount_turn_input_data_ij[i]; amount_turn_input_data_ij[i] = !amount_turn_input_data_ij[i];
//bool amount_turn_output_data_ij = io_generator_single(amount_turn_input_data_ij,BDD[depth][which_node_this_layer_array[j]].which_bit_output); bool amount_turn_output_data_ij = io_generator_single(amount_turn_input_data_ij,BDD[depth][which_node_this_layer_array[j]].which_bit_output);
bool amount_turn_output_data_ij = io_generator_single(amount_turn_input_data_ij,0); //bool amount_turn_output_data_ij = io_generator_single(amount_turn_input_data_ij,0);
amount_turn_output_data[i][j] = amount_turn_output_data_ij; amount_turn_output_data[i][j] = amount_turn_output_data_ij;
arr_delete(amount_turn_input_data_ij); arr_delete(amount_turn_input_data_ij);
} }
......
#include "head.h" #include "head.h"
#include "io_generator/c432.h" //io_generator中需要包含对PI_WIDTH,PO_WIDTH的全局定义,如: extern const int PI_WIDTH = 36; #include "io_generator/c880.h" //io_generator中需要包含对PI_WIDTH,PO_WIDTH的全局定义,如: extern const int PI_WIDTH = 36;
#include "io_generator_vec/c432_vec.h" //如果有对应Verilog, 可以在aag_to_rtl里面直接生成2个文件 #include "io_generator_vec/c880_vec.h" //如果有对应Verilog, 可以在aag_to_rtl里面直接生成2个文件
//#include "io_generator/ip-cores/combinational_circuits/c_prefix_arbiter_base.h" //#include "io_generator/ip-cores/combinational_circuits/c_prefix_arbiter_base.h"
//#include "io_generator/ip-cores/combinational_circuits_vec/c_prefix_arbiter_base_vec.h" //#include "io_generator/ip-cores/combinational_circuits_vec/c_prefix_arbiter_base_vec.h"
#define INPUT_AIG //io_generator是否可以用uint按位操作进行加速,也即是否包含_vec后缀的另一个io_generator //#define INPUT_AIG //io_generator是否可以用uint按位操作进行加速,也即是否包含_vec后缀的另一个io_generator
#define SINGLE_BITS //io_generator是否包含每一个bit单独的io_generator_o{x} //#define SINGLE_BITS //io_generator是否包含每一个bit单独的io_generator_o{x}
//#define SEARCH_PARTITION //BSD算法搜索partition策略 #define SEARCH_PARTITION //BSD算法搜索partition策略
//#define ACCURACY_FIRST //精度优先算法: 慢且面积冗余大,在精度是瓶颈时使用,不作为默认选项。 #define ACCURACY_FIRST //精度优先算法: 慢且面积冗余大,在精度是瓶颈时使用,不作为默认选项。
extern const int parameter_input_bit_width = PI_WIDTH +5 ; extern const int parameter_input_bit_width = PI_WIDTH +5 ;
int parameter_output_bit_width = PO_WIDTH; int parameter_output_bit_width = PO_WIDTH;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment