Changeset 653


Ignore:
Timestamp:
12/28/17 14:57:54 (6 years ago)
Author:
dubos
Message:

devel/unstructured : streamline loop unrolling

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/Python/src/unstructured/macros.jin

    r650 r653  
    5353-------------------------------------------------------------------------- #} 
    5454 
     55{# NB : degree = number of elements in stencil, for instance number of edges of primal cell #} 
     56{# define the degrees for which a special version of code is generated #} 
     57{% set degree_primal, degree_dual, degree_trisk = (4,5,6), (3,4), (4,10) %} 
    5558 
    5659{# ----------------------- SEQUENCE, FORALL ----------------------- #} 
     
    139142{% if has_primal %} 
    140143SELECT CASE(primal_deg(ij)) 
    141 CASE(4) 
    142 {{ get_edges(thecode, mesh, 4) }} 
    143 {{ vloop(mesh, lrange, flags, code, 4) }} 
    144 CASE(5) 
    145 {{ get_edges(thecode, mesh, 5) }} 
    146 {{ vloop(mesh, lrange, flags, code, 5) }} 
    147 CASE(6) 
    148 {{ get_edges(thecode, mesh, 6) }} 
    149 {{ vloop(mesh, lrange, flags, code, 6) }} 
     144{% for degree in degree_primal %} 
     145CASE({{ degree }}) 
     146{{ get_edges(thecode, mesh, degree) }} 
     147{{ vloop(mesh, lrange, flags, code, degree) }} 
     148{% endfor %} 
    150149CASE DEFAULT 
    151150{{ vloop(mesh, lrange, flags, code) }} 
     
    155154{% if has_dual %} 
    156155SELECT CASE(dual_deg(ij)) 
    157 CASE(3) 
    158 {{ get_edges(thecode, mesh, 3) }} 
    159 {{ get_vertices(thecode,mesh,3) }} 
    160 {{ vloop(mesh, lrange, flags, code, 3) }} 
    161 CASE(4) 
    162 {{ get_edges(thecode, mesh, 4) }} 
    163 {{ get_vertices(thecode,mesh,4) }} 
    164 {{ vloop(mesh, lrange, flags, code, 4) }} 
     156{% for degree in degree_dual %} 
     157CASE({{ degree }}) 
     158{{ get_edges(thecode, mesh, degree) }} 
     159{{ get_vertices(thecode,mesh,degree) }} 
     160{{ vloop(mesh, lrange, flags, code, degree) }} 
     161{% endfor %} 
    165162CASE DEFAULT 
    166163{{ vloop(mesh, lrange, flags, code) }} 
     
    170167{% if has_trisk %} 
    171168SELECT CASE(trisk_deg(edge)) 
    172 CASE(10) 
    173 {{ vloop(mesh, lrange, flags, code, 10) }} 
    174 CASE(4) 
    175 {{ vloop(mesh, lrange, flags, code, 4) }} 
     169{% for degree in degree_trisk %} 
     170CASE({{ degree }}) 
     171{{ vloop(mesh, lrange, flags, code, degree) }} 
     172{% endfor %} 
    176173CASE DEFAULT 
    177174{{ vloop(mesh, lrange, flags, code) }} 
Note: See TracChangeset for help on using the changeset viewer.