Skip to content
Snippets Groups Projects
Commit 41aaa1d7 authored by Michael Kuron's avatar Michael Kuron :mortar_board:
Browse files

pystencils: re-allow use of arbitrary field names in sweeps

Previously, anything that wasn’t velocity, src, src_tmp, pdfs, pdfs_tmp resulted in invalid code

This was a regression introduced in a1614152
parent 16df5598
Branches
Tags
No related merge requests found
...@@ -170,8 +170,8 @@ def generate_block_data_to_field_extraction(ctx, kernel_info, parameters_to_igno ...@@ -170,8 +170,8 @@ def generate_block_data_to_field_extraction(ctx, kernel_info, parameters_to_igno
return result return result
def generate_refs_for_kernel_parameters(kernel_info, prefix, parameters_to_ignore): def generate_refs_for_kernel_parameters(kernel_info, prefix, parameters_to_ignore=(), ignore_fields=False):
symbols = {p.field_name for p in kernel_info.parameters if p.is_field_pointer} symbols = {p.field_name for p in kernel_info.parameters if p.is_field_pointer and not ignore_fields}
symbols.update(p.symbol.name for p in kernel_info.parameters if not p.is_field_parameter) symbols.update(p.symbol.name for p in kernel_info.parameters if not p.is_field_parameter)
symbols.difference_update(parameters_to_ignore) symbols.difference_update(parameters_to_ignore)
return "\n".join("auto & %s = %s%s_;" % (s, prefix, s) for s in symbols) return "\n".join("auto & %s = %s%s_;" % (s, prefix, s) for s in symbols)
......
...@@ -58,7 +58,7 @@ namespace {{namespace}} { ...@@ -58,7 +58,7 @@ namespace {{namespace}} {
void {{class_name}}::operator()( IBlock * block{%if target is equalto 'gpu'%} , cudaStream_t stream{% endif %} ) void {{class_name}}::operator()( IBlock * block{%if target is equalto 'gpu'%} , cudaStream_t stream{% endif %} )
{ {
{{kernel|generate_block_data_to_field_extraction|indent(4)}} {{kernel|generate_block_data_to_field_extraction|indent(4)}}
{{kernel|generate_refs_for_kernel_parameters(prefix='this->', parameters_to_ignore=['velocity', 'src', 'src_tmp', 'pdfs', 'pdfs_tmp'])|indent(4) }} {{kernel|generate_refs_for_kernel_parameters(prefix='this->', ignore_fields=True)|indent(4) }}
{{kernel|generate_call(stream='stream')|indent(4)}} {{kernel|generate_call(stream='stream')|indent(4)}}
{{kernel|generate_swaps|indent(4)}} {{kernel|generate_swaps|indent(4)}}
} }
...@@ -78,7 +78,7 @@ void {{class_name}}::runOnCellInterval( const shared_ptr<StructuredBlockStorage> ...@@ -78,7 +78,7 @@ void {{class_name}}::runOnCellInterval( const shared_ptr<StructuredBlockStorage>
return; return;
{{kernel|generate_block_data_to_field_extraction|indent(4)}} {{kernel|generate_block_data_to_field_extraction|indent(4)}}
{{kernel|generate_refs_for_kernel_parameters(prefix='this->', parameters_to_ignore=['velocity', 'src', 'src_tmp', 'pdfs', 'pdfs_tmp'])|indent(4) }} {{kernel|generate_refs_for_kernel_parameters(prefix='this->', ignore_fields=True)|indent(4) }}
{{kernel|generate_call(stream='stream', cell_interval='ci')|indent(4)}} {{kernel|generate_call(stream='stream', cell_interval='ci')|indent(4)}}
{{kernel|generate_swaps|indent(4)}} {{kernel|generate_swaps|indent(4)}}
} }
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment