From f97262bcf6056245fabc6781968e512b76cc0d6f Mon Sep 17 00:00:00 2001 From: Petr Vesely Date: Fri, 9 Jun 2023 15:52:48 +0100 Subject: [PATCH 1/3] [UR] Assign registry IDs from largest value --- include/ur_api.h | 2 +- scripts/core/registry.yml | 2 +- scripts/generate_ids.py | 17 +++++++++-------- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/include/ur_api.h b/include/ur_api.h index 79b732acdd..02b5f6fa3b 100644 --- a/include/ur_api.h +++ b/include/ur_api.h @@ -4643,7 +4643,7 @@ urEventSetCallback( #if !defined(__GNUC__) #pragma endregion #endif -// Intel'oneAPI' Unified Rutime function registry +// Intel'oneAPI' Unified Runtime function registry #if !defined(__GNUC__) #pragma region registry #endif diff --git a/scripts/core/registry.yml b/scripts/core/registry.yml index 52c58617ce..c01d0e6c6d 100644 --- a/scripts/core/registry.yml +++ b/scripts/core/registry.yml @@ -1,6 +1,6 @@ --- type: header -desc: "Intel$OneApi Unified Rutime function registry" +desc: "Intel$OneApi Unified Runtime function registry" ordinal: "9" --- name: $x_function_t diff --git a/scripts/generate_ids.py b/scripts/generate_ids.py index 2a887a067b..f716863c70 100644 --- a/scripts/generate_ids.py +++ b/scripts/generate_ids.py @@ -10,9 +10,7 @@ import util import yaml -MAX_FUNCS = 1024 # We could go up to UINT32_MAX... ENUM_NAME = '$x_function_t' -valid_ids = set(range(1, MAX_FUNCS)) class quoted(str): pass @@ -25,17 +23,19 @@ def generate_registry(path, specs): etors = dict() for s in specs: - for i, obj in enumerate(s['objects']): + for obj in s['objects']: if obj['type'] == 'function': functions.append(obj['class'][len('$x'):] + obj['name']) - + + # find the function with the largest ID + max_reg_entry = 0 try: existing_registry = list(util.yamlRead(path))[1]['etors'] + max_reg_entry = int(max(existing_registry, key=lambda x: int(x['value']))['value']) for etor in existing_registry: - valid_ids.discard(int(etor['value'])) etors[etor['name']] = etor['value'] except (TypeError, IndexError, KeyError) as e: - print('invalid existing registry, ignoring... ' + str(e)) + raise Exception('invalid existing registry... ' + str(e)) updated = False @@ -45,7 +45,8 @@ def generate_registry(path, specs): id = etors.get(etor_name) if id is None: updated = True - id = valid_ids.pop() + max_reg_entry += 1 + id = max_reg_entry new_registry.append({'name': util.to_snake_case(fname), 'desc': 'Enumerator for $x'+fname, 'value': str(id)}) if updated is False: @@ -56,7 +57,7 @@ def generate_registry(path, specs): ids = new_registry ids = sorted(ids, key=lambda x: int(x['value'])) wrapper = { 'name': ENUM_NAME, 'type': 'enum', 'desc': 'Defines unique stable identifiers for all functions' , 'etors': ids} - header = {'type': 'header', 'desc': quoted('Intel$OneApi Unified Rutime function registry'), 'ordinal': quoted(9)} + header = {'type': 'header', 'desc': quoted('Intel$OneApi Unified Runtime function registry'), 'ordinal': quoted(9)} try: with open(path, 'w') as fout: From 03a41fc33156a84cebbe630dc92f37e17b3e1491 Mon Sep 17 00:00:00 2001 From: Petr Vesely Date: Fri, 9 Jun 2023 16:08:29 +0100 Subject: [PATCH 2/3] [UR] Remove early return from registry generation --- include/ur_api.h | 2 +- scripts/core/registry.yml | 2 +- scripts/generate_ids.py | 9 ++------- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/include/ur_api.h b/include/ur_api.h index 02b5f6fa3b..e1331ee4fc 100644 --- a/include/ur_api.h +++ b/include/ur_api.h @@ -4643,7 +4643,7 @@ urEventSetCallback( #if !defined(__GNUC__) #pragma endregion #endif -// Intel'oneAPI' Unified Runtime function registry +// Intel 'oneAPI' Unified Runtime function registry #if !defined(__GNUC__) #pragma region registry #endif diff --git a/scripts/core/registry.yml b/scripts/core/registry.yml index c01d0e6c6d..2335ab0cea 100644 --- a/scripts/core/registry.yml +++ b/scripts/core/registry.yml @@ -1,6 +1,6 @@ --- type: header -desc: "Intel$OneApi Unified Runtime function registry" +desc: "Intel $OneApi Unified Runtime function registry" ordinal: "9" --- name: $x_function_t diff --git a/scripts/generate_ids.py b/scripts/generate_ids.py index f716863c70..44e0276339 100644 --- a/scripts/generate_ids.py +++ b/scripts/generate_ids.py @@ -37,27 +37,22 @@ def generate_registry(path, specs): except (TypeError, IndexError, KeyError) as e: raise Exception('invalid existing registry... ' + str(e)) - updated = False - new_registry = list() for fname in functions: etor_name = util.to_snake_case(fname) id = etors.get(etor_name) if id is None: - updated = True max_reg_entry += 1 id = max_reg_entry new_registry.append({'name': util.to_snake_case(fname), 'desc': 'Enumerator for $x'+fname, 'value': str(id)}) - if updated is False: - return - print("Updating registry %s"%path) + print("Generating registry %s"%path) ids = new_registry ids = sorted(ids, key=lambda x: int(x['value'])) wrapper = { 'name': ENUM_NAME, 'type': 'enum', 'desc': 'Defines unique stable identifiers for all functions' , 'etors': ids} - header = {'type': 'header', 'desc': quoted('Intel$OneApi Unified Runtime function registry'), 'ordinal': quoted(9)} + header = {'type': 'header', 'desc': quoted('Intel $OneApi Unified Runtime function registry'), 'ordinal': quoted(9)} try: with open(path, 'w') as fout: From e4ae03d85fdef7f14e92c978b336fcea30cba71c Mon Sep 17 00:00:00 2001 From: Petr Vesely Date: Fri, 9 Jun 2023 16:48:24 +0100 Subject: [PATCH 3/3] [UR] Simplify registry generation script --- scripts/generate_ids.py | 54 +++++++++++++---------------------------- 1 file changed, 17 insertions(+), 37 deletions(-) diff --git a/scripts/generate_ids.py b/scripts/generate_ids.py index 44e0276339..16016cd71e 100644 --- a/scripts/generate_ids.py +++ b/scripts/generate_ids.py @@ -19,48 +19,28 @@ def quoted_presenter(dumper, data): return dumper.represent_scalar('tag:yaml.org,2002:str', data, style='"') def generate_registry(path, specs): - functions = list() - etors = dict() - - for s in specs: - for obj in s['objects']: - if obj['type'] == 'function': - functions.append(obj['class'][len('$x'):] + obj['name']) - - # find the function with the largest ID - max_reg_entry = 0 try: existing_registry = list(util.yamlRead(path))[1]['etors'] - max_reg_entry = int(max(existing_registry, key=lambda x: int(x['value']))['value']) - for etor in existing_registry: - etors[etor['name']] = etor['value'] - except (TypeError, IndexError, KeyError) as e: - raise Exception('invalid existing registry... ' + str(e)) - - new_registry = list() - for fname in functions: - etor_name = util.to_snake_case(fname) - id = etors.get(etor_name) - if id is None: - max_reg_entry += 1 - id = max_reg_entry - new_registry.append({'name': util.to_snake_case(fname), 'desc': 'Enumerator for $x'+fname, 'value': str(id)}) - - - print("Generating registry %s"%path) - - ids = new_registry - ids = sorted(ids, key=lambda x: int(x['value'])) - wrapper = { 'name': ENUM_NAME, 'type': 'enum', 'desc': 'Defines unique stable identifiers for all functions' , 'etors': ids} - header = {'type': 'header', 'desc': quoted('Intel $OneApi Unified Runtime function registry'), 'ordinal': quoted(9)} - - try: + existing_etors = {etor["name"]: etor["value"] for etor in existing_registry} + max_etor = int(max(existing_registry, key = lambda x : int(x["value"]))["value"]) + functions = [obj['class'][len('$x'):] + obj['name'] for s in specs for obj in s['objects'] if obj['type'] == 'function'] + registry = list() + for fname in functions: + etor_name = util.to_snake_case(fname) + id = existing_etors.get(etor_name) + if id is None: + max_etor += 1 + id = max_etor + registry.append({'name': util.to_snake_case(fname), 'desc': 'Enumerator for $x'+fname, 'value': str(id)}) + registry = sorted(registry, key=lambda x: int(x['value'])) + wrapper = { 'name': ENUM_NAME, 'type': 'enum', 'desc': 'Defines unique stable identifiers for all functions' , 'etors': registry} + header = {'type': 'header', 'desc': quoted('Intel $OneApi Unified Runtime function registry'), 'ordinal': quoted(9)} with open(path, 'w') as fout: yaml.add_representer(quoted, quoted_presenter) yaml.dump_all([header, wrapper], fout, default_flow_style=False, sort_keys=False, explicit_start=True) - except: - print("error: unable to write %s"%path) - + except BaseException as e: + print("Failed to generate registry.yml... %s", e) + raise e