summaryrefslogtreecommitdiff
path: root/scripts/database
diff options
context:
space:
mode:
authorcnugteren <web@cedricnugteren.nl>2016-04-11 22:27:44 -0600
committercnugteren <web@cedricnugteren.nl>2016-04-11 22:27:44 -0600
commita61724ece50ab895a67bc15ae3a132d0ecbe61bc (patch)
tree0ea0b3defce32af330d49a4531fd8d5d4db93210 /scripts/database
parent1d3d38a2618c5663bf1549b08805137fd85f2efa (diff)
Fixed the way the defaults are calculated in the database; added warning for non-matching tuner arguments
Diffstat (limited to 'scripts/database')
-rw-r--r--scripts/database/database.py21
1 files changed, 15 insertions, 6 deletions
diff --git a/scripts/database/database.py b/scripts/database/database.py
index b3f919ef..7fd8c4d8 100644
--- a/scripts/database/database.py
+++ b/scripts/database/database.py
@@ -34,9 +34,9 @@ DEVICENAME_DEFAULT = "default"
# Attributes
DEVICETYPE_ATTRIBUTES = ["device_vendor", "device_type"]
DEVICE_ATTRIBUTES = ["device", "device_core_clock", "device_compute_units"]
-KERNEL_ATTRIBUTES = ["precision", "kernel_family",
- "arg_m", "arg_n", "arg_k", "arg_alpha", "arg_beta"]
-ATTRIBUTES = DEVICE_ATTRIBUTES + DEVICETYPE_ATTRIBUTES + KERNEL_ATTRIBUTES
+KERNEL_ATTRIBUTES = ["precision", "kernel_family"]
+ARGUMENT_ATTRIBUTES = ["arg_m", "arg_n", "arg_k", "arg_alpha", "arg_beta"]
+ATTRIBUTES = DEVICE_ATTRIBUTES + DEVICETYPE_ATTRIBUTES + KERNEL_ATTRIBUTES + ARGUMENT_ATTRIBUTES
# OpenCL vendor names and their short name
VENDOR_NAMES = { "device_vendor": {
@@ -98,6 +98,10 @@ def RemoveEntriesByDevice(df, devicename):
def GetEntriesByField(df, field, value):
return df[df[field] == value]
+def UpdateDatabase(df, condition, field, value):
+ df.loc[condition, field] = value
+ return df
+
# Fixes the problem that some vendors use multiple different names
def SanitizeVendorNames(df):
df = df.replace(VENDOR_NAMES)
@@ -120,7 +124,7 @@ def CalculateDefaults(df):
dfdefault = pd.DataFrame()
# Defaults per type/vendor
- groups = df.groupby(DEVICETYPE_ATTRIBUTES+KERNEL_ATTRIBUTES+["kernel"])
+ groups = df.groupby(DEVICETYPE_ATTRIBUTES+KERNEL_ATTRIBUTES+ARGUMENT_ATTRIBUTES+["kernel"])
for name, dfgroup in groups:
default_values = dfgroup.min(axis=0)
default_values["device"] = DEVICENAME_DEFAULT
@@ -129,8 +133,14 @@ def CalculateDefaults(df):
default_values["time"] = 0.0
dfdefault = dfdefault.append(default_values, ignore_index=True)
+ # Checks for mis-matched arguments
+ groups = dfdefault.groupby(DEVICETYPE_ATTRIBUTES+KERNEL_ATTRIBUTES+["kernel"])
+ for name, dfgroup in groups:
+ if len(dfgroup) != 1:
+ print("[WARNING] Entries for a single kernel with multiple argument values")
+
# Defaults in general
- groups = df.groupby(KERNEL_ATTRIBUTES+["kernel"])
+ groups = df.groupby(KERNEL_ATTRIBUTES+ARGUMENT_ATTRIBUTES+["kernel"])
for name, dfgroup in groups:
default_values = dfgroup.min(axis=0)
default_values["device_vendor"] = VENDOR_DEFAULT
@@ -273,7 +283,6 @@ for file_json in glob.glob(glob_json):
new_size = len(database.index)
print("with "+str(new_size-old_size)+" new items")
-
# Stores the modified database back to disk
if len(glob.glob(glob_json)) >= 1:
print("## Storing the database to disk...")