diff --git a/apps/benchmarks/UniformGridGPU/simulation_setup/benchmark_configs_RDM.py b/apps/benchmarks/UniformGridGPU/simulation_setup/benchmark_configs_RDM.py index fb34224795eb45f42288e63e14992cc6fb0877ae..82222270efb25c18dc770fb0d6a3b72299d10098 100755 --- a/apps/benchmarks/UniformGridGPU/simulation_setup/benchmark_configs_RDM.py +++ b/apps/benchmarks/UniformGridGPU/simulation_setup/benchmark_configs_RDM.py @@ -189,12 +189,23 @@ class Scenario: result = data sequenceValuesToScalars(result) num_tries = 4 - # check multiple times e.g. may fail when multiple benchmark processes are running table_name = f"runs_{data['stencil']}_{data['streamingPattern']}_{data['collisionSetup']}_{prod(self.blocks)}" table_name = table_name.replace("-", "_") # - not allowed for table name would lead to syntax error + for num_try in range(num_tries): try: - checkAndUpdateSchema(result, table_name, self.db_file_name) + # Check existing columns + conn = sqlite3.connect(self.db_file_name) + c = conn.cursor() + c.execute(f"PRAGMA table_info({table_name})") + existing_columns = [info[1] for info in c.fetchall()] + conn.close() + + # Filter out existing columns + new_columns = {k: v for k, v in result.items() if k not in existing_columns} + + if new_columns: + checkAndUpdateSchema(new_columns, table_name, self.db_file_name, alter_table=True) storeSingle(result, table_name, self.db_file_name) break except sqlite3.OperationalError as e: