Skip to content

Commit cdd7540

Browse files
committed
Adding support for deinitialization.
1 parent abd8de0 commit cdd7540

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

kernel_tuner/utils/directives.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,22 @@ def extract_initialization_code(code: str, langs: Code) -> str:
380380
return ""
381381

382382

383+
def extract_deinitialization_code(code: str, langs: Code) -> str:
384+
"""Extract the deinitialization section from code"""
385+
if is_cxx(langs.language):
386+
start_string = "#pragma tuner deinitialize"
387+
end_string = "#pragma tuner stop"
388+
elif is_fortran(langs.language):
389+
start_string = "!$tuner deinitialize"
390+
end_string = "!$tuner stop"
391+
392+
init_code = extract_code(start_string, end_string, code, langs)
393+
if len(init_code) >= 1:
394+
return "\n".join(init_code.values()) + "\n"
395+
else:
396+
return ""
397+
398+
383399
def format_argument_fortran(p_type: str, p_size: int, p_name: str) -> str:
384400
"""Format the argument for Fortran code"""
385401
argument = ""

test/utils/test_directives.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,13 @@ def test_extract_initialization_code():
326326
assert extract_initialization_code(code_f90, Code(OpenACC(), Fortran())) == "integer :: value\n"
327327

328328

329+
def test_extract_deinitialization_code():
330+
code_cpp = "#pragma tuner deinitialize\nconst int value = 42;\n#pragma tuner stop\n"
331+
code_f90 = "!$tuner deinitialize\ninteger :: value\n!$tuner stop\n"
332+
assert extract_deinitialization_code(code_cpp, Code(OpenACC(), Cxx())) == "const int value = 42;\n"
333+
assert extract_deinitialization_code(code_f90, Code(OpenACC(), Fortran())) == "integer :: value\n"
334+
335+
329336
def test_add_present_openacc():
330337
acc_cxx = Code(OpenACC(), Cxx())
331338
acc_f90 = Code(OpenACC(), Fortran())

0 commit comments

Comments
 (0)