}
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() {
+}
+
+SearchTuner::SearchTuner(const char *filename) {
ifstream myfile;
- myfile.open (TUNEFILE, ios::in);
+ myfile.open (filename, ios::in);
if (myfile.is_open()) {
bool hasVar;
VarType type1;
delete iterator;
}
+void SearchTuner::setTunable(TunableParam param, TunableDesc *descriptor, uint value) {
+ TunableSetting *result = new TunableSetting(param);
+ result->setDecision(descriptor->lowValue, descriptor->highValue, descriptor->defaultValue, value);
+ settings.add(result);
+ usedSettings.add(result);
+}
+
+void SearchTuner::setVarTunable(VarType vartype, TunableParam param, TunableDesc *descriptor, uint value) {
+ setVarTunable(vartype, 0, param, descriptor, value);
+}
+
+void SearchTuner::setVarTunable(VarType vartype1, VarType vartype2, TunableParam param, TunableDesc *descriptor, uint value) {
+ TunableSetting *result = new TunableSetting(vartype1, vartype2, param);
+ result->setDecision(descriptor->lowValue, descriptor->highValue, descriptor->defaultValue, value);
+ settings.add(result);
+ usedSettings.add(result);
+}
+
int SearchTuner::getTunable(TunableParam param, TunableDesc *descriptor) {
TunableSetting setting(param);
TunableSetting *result = usedSettings.get(&setting);
}
-void SearchTuner::serialize() {
+void SearchTuner::serialize(const char *filename) {
ofstream myfile;
- myfile.open (TUNEFILE, ios::out | ios::trunc);
+ myfile.open (filename, ios::out | ios::trunc);
SetIteratorTunableSetting *iterator = settings.iterator();
while (iterator->hasNext()) {
TunableSetting *setting = iterator->next();