}
void TunableSetting::print() {
+ model_print("Param %s = %u \t range=[%u,%u]", tunableParameterToString( (Tunables)param), selectedValue, lowValue, highValue);
if (hasVar) {
- model_print("VarType1 %" PRIu64 ", ", type1);
+ model_print("\tVarType1 %" PRIu64 ", ", type1);
model_print("VarType2 %" PRIu64 ", ", type2);
}
- model_print("Param %s = %u \t range=[%u,%u]\n", tunableParameterToString( (Tunables)param), selectedValue, lowValue, highValue);
+ model_print("\n");
}
unsigned int tunableSettingHash(TunableSetting *setting) {
SearchTuner::SearchTuner() {
+#ifdef STATICENCGEN
+ graphEncoding =false;
+ naiveEncoding = ELEM_UNASSIGNED;
+#endif
ifstream myfile;
myfile.open (TUNEFILE, ios::in);
if (myfile.is_open()) {
TunableSetting *copy = new TunableSetting(setting);
tuner->settings.add(copy);
}
+#ifdef STATICENCGEN
+ if(naiveEncoding != ELEM_UNASSIGNED){
+ tuner->graphEncoding = graphEncoding;
+ tuner->naiveEncoding = naiveEncoding;
+ }
+#endif
delete iterator;
return tuner;
}
model_print("&&&&&&&&&&&&&&&&&&&&&&&\n");
}
+#ifdef STATICENCGEN
+int SearchTuner::nextStaticTuner() {
+ if(naiveEncoding == ELEM_UNASSIGNED){
+ naiveEncoding = ONEHOT;
+ SetIteratorTunableSetting *iter = settings.iterator();
+ while(iter->hasNext()){
+ TunableSetting *setting = iter->next();
+ if (setting->param == NAIVEENCODER){
+ setting->selectedValue = ONEHOT;
+ } else if(setting->param == ENCODINGGRAPHOPT){
+ setting->selectedValue = false;
+ }
+ }
+ delete iter;
+ return EXIT_FAILURE;
+ }
+ int result=EXIT_FAILURE;
+ if(naiveEncoding == BINARYINDEX && graphEncoding){
+ model_print("Best tuner\n");
+ return EXIT_SUCCESS;
+ }else if (naiveEncoding == BINARYINDEX && !graphEncoding){
+ naiveEncoding = ONEHOT;
+ graphEncoding = true;
+ }else {
+ naiveEncoding = (ElementEncodingType)((int)naiveEncoding + 1);
+ }
+ SetIteratorTunableSetting *iter = settings.iterator();
+ uint count = 0;
+ while(iter->hasNext()){
+ TunableSetting * setting = iter->next();
+ if (setting->param == NAIVEENCODER){
+ setting->selectedValue = naiveEncoding;
+ count++;
+ } else if(setting->param == ENCODINGGRAPHOPT){
+ setting->selectedValue = graphEncoding;
+ count++;
+ }
+ }
+ model_print("Mutating %u settings\n", count);
+ delete iter;
+ return result;
+}
+#endif
+
void SearchTuner::print() {
SetIteratorTunableSetting *iterator = settings.iterator();
while (iterator->hasNext()) {