694 lines
9.6 KiB
Markdown
694 lines
9.6 KiB
Markdown
# post.py
|
|
|
|

|
|
|
|
## Overview
|
|
|
|
conversion from tree to python data
|
|
|
|
## API Index
|
|
|
|
- [Class: `LarkToSympy`](#larktosympy)
|
|
- [Class: `ArrayFCodePrinter`](#arrayfcodeprinter)
|
|
- [Class: `SympyOptimizer`](#sympyoptimizer)
|
|
- [Class: `CollectDefinitions`](#collectdefinitions)
|
|
- [Class: `ExpInspector`](#expinspector)
|
|
- [Class: `ExpToLatex`](#exptolatex)
|
|
- [Class: `ExpToCode`](#exptocode)
|
|
- [Function: `make_allocate`](#make_allocate)
|
|
- [Class: `FieldBase`](#fieldbase)
|
|
- [Class: `FieldExporter`](#fieldexporter)
|
|
- [Class: `Field`](#field)
|
|
- [Class: `FluctuationField`](#fluctuationfield)
|
|
- [Class: `PrimaryField`](#primaryfield)
|
|
- [Class: `DerivedField`](#derivedfield)
|
|
- [Class: `AveragedField`](#averagedfield)
|
|
- [Class: `Stage1`](#stage1)
|
|
- [Class: `Stage2`](#stage2)
|
|
- [Class: `Stage3`](#stage3)
|
|
- [Class: `Stage4`](#stage4)
|
|
- [Class: `Stage5`](#stage5)
|
|
- [Class: `Stage6`](#stage6)
|
|
|
|
---
|
|
|
|
## API Reference
|
|
|
|
### [Class] `LarkToSympy(Transformer)`
|
|
|
|
*No description provided.*
|
|
|
|
#### Methods
|
|
|
|
##### `__init__(self, fdict)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `number(self, numeral)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `env(self, name)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `paren(self, val)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `var(self, name)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `fluc(self, name)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `dnx(self, partial, b)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `icall(self, op, val)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `fcall(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `neg(self, val)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `add(self, a, b)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `sub(self, a, b)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `mul(self, a, b)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `div(self, a, b)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `udf(self, a)`
|
|
|
|
*No description provided.*
|
|
|
|
---
|
|
|
|
### [Class] `ArrayFCodePrinter(FCodePrinter)`
|
|
|
|
*No description provided.*
|
|
|
|
#### Methods
|
|
|
|
##### `__init__(self, settings, array_symbols, avg_symbols)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `_print_Float(self, expr)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `_print_Symbol(self, expr)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `_print_Function(self, expr)`
|
|
|
|
*No description provided.*
|
|
|
|
---
|
|
|
|
### [Class] `SympyOptimizer`
|
|
|
|
*No description provided.*
|
|
|
|
#### Methods
|
|
|
|
##### `get_instance(cls, fdict)`
|
|
|
|
**Decorators:** `@classmethod`<br>
|
|
|
|
*No description provided.*
|
|
|
|
##### `__init__(self, fdict)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `set_averaged(self, averaged_dict)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `get_sympy_expr(self, name)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `calculate_flops_and_heavy(self, expr)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `count_3d_loads(self, expr, three_d_arrays)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `optimize_field(self, name, alloc)`
|
|
|
|
*No description provided.*
|
|
|
|
---
|
|
|
|
### [Class] `CollectDefinitions(Visitor)`
|
|
|
|
*No description provided.*
|
|
|
|
#### Methods
|
|
|
|
##### `__init__(self, primary, derived, averaged)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `varlist(self, tree)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `assign_var(self, tree)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `assign_avg_var(self, tree)`
|
|
|
|
*No description provided.*
|
|
|
|
---
|
|
|
|
### [Class] `ExpInspector(Visitor)`
|
|
|
|
*No description provided.*
|
|
|
|
#### Methods
|
|
|
|
##### `__init__(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `inspect(cls, tree)`
|
|
|
|
**Decorators:** `@classmethod`<br>
|
|
|
|
*No description provided.*
|
|
|
|
##### `__call__(self, tree)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `fluc(self, tree)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `var(self, tree)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `dnx(self, tree)`
|
|
|
|
*No description provided.*
|
|
|
|
---
|
|
|
|
### [Class] `ExpToLatex(Transformer)`
|
|
|
|
*No description provided.*
|
|
|
|
#### Methods
|
|
|
|
##### `__init__(self, fdict)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `arithmatic_rooted(self, name)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `parenthise(self, name)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `number(self, numeral)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `env(self, name)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `paren(self, name)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `var(self, name)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `fluc(self, name)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `dnx(self, partial, b)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `icall(self, a, b)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `fcall(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `neg(self, b)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `add(self, a, b)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `sub(self, a, b)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `mul(self, a, b)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `div(self, a, b)`
|
|
|
|
*No description provided.*
|
|
|
|
---
|
|
|
|
### [Class] `ExpToCode(Transformer)`
|
|
|
|
*No description provided.*
|
|
|
|
#### Methods
|
|
|
|
##### `__init__(self, fdict)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `number(self, numeral)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `env(self, name)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `paren(self, name)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `var(self, name)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `fluc(self, name)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `dnx(self, partial, b)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `icall(self, a, b)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `fcall(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `neg(self, b)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `add(self, a, b)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `sub(self, a, b)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `mul(self, a, b)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `div(self, a, b)`
|
|
|
|
*No description provided.*
|
|
|
|
---
|
|
|
|
### [Function] `make_allocate`
|
|
|
|
```python
|
|
function make_allocate(name, shape, init_zero)
|
|
```
|
|
|
|
*No description provided.*
|
|
|
|
---
|
|
|
|
### [Class] `FieldBase(object)`
|
|
|
|
*No description provided.*
|
|
|
|
#### Methods
|
|
|
|
##### `__init__(self, name, fdict)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `depends_on(self, a)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `is_primary(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `not_primary(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `is_fluctuation(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `export_on(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `__repr__(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `checkFluctuation(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `depClosure(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `code_decl(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `code_alloc(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `code_free(self)`
|
|
|
|
*No description provided.*
|
|
|
|
---
|
|
|
|
### [Class] `FieldExporter(object)`
|
|
|
|
*No description provided.*
|
|
|
|
#### Methods
|
|
|
|
##### `__init__(self, name, attr, parent)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `code(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `code_decl(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `code_alloc(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `code_free(self)`
|
|
|
|
*No description provided.*
|
|
|
|
---
|
|
|
|
### [Class] `Field(FieldBase)`
|
|
|
|
*No description provided.*
|
|
|
|
#### Methods
|
|
|
|
##### `__init__(self, name, attr, exp, fdict)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `export_on(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `code(self, alloc)`
|
|
|
|
*No description provided.*
|
|
|
|
---
|
|
|
|
### [Class] `FluctuationField(FieldBase)`
|
|
|
|
*No description provided.*
|
|
|
|
#### Methods
|
|
|
|
##### `__init__(self, w, field, fset, fdict)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `code(self, alloc)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `id(cls, w, field)`
|
|
|
|
**Decorators:** `@classmethod`<br>
|
|
|
|
*No description provided.*
|
|
|
|
---
|
|
|
|
### [Class] `PrimaryField(FieldBase)`
|
|
|
|
*No description provided.*
|
|
|
|
#### Methods
|
|
|
|
##### `__init__(self, name, fdict)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `code(self, alloc)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `code_decl(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `code_alloc(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `code_free(self)`
|
|
|
|
*No description provided.*
|
|
|
|
---
|
|
|
|
### [Class] `DerivedField(FieldBase)`
|
|
|
|
*No description provided.*
|
|
|
|
#### Methods
|
|
|
|
##### `__init__(self, op, v, fdict)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `code(self, alloc)`
|
|
|
|
*No description provided.*
|
|
|
|
---
|
|
|
|
### [Class] `AveragedField(FieldBase)`
|
|
|
|
*No description provided.*
|
|
|
|
#### Methods
|
|
|
|
##### `id(cls, w, tgt)`
|
|
|
|
**Decorators:** `@classmethod`<br>
|
|
|
|
*No description provided.*
|
|
|
|
##### `__init__(self, w, tgt, fdict)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `code(self, alloc)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `code_avg(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `isWeighted(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `pass1(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `pass2(self)`
|
|
|
|
*No description provided.*
|
|
|
|
---
|
|
|
|
### [Class] `Stage1`
|
|
|
|
conversion from tree to python data
|
|
|
|
#### Methods
|
|
|
|
##### `__init__(self, raw_tree)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `__repr__(self)`
|
|
|
|
*No description provided.*
|
|
|
|
---
|
|
|
|
### [Class] `Stage2`
|
|
|
|
expand derivatives and averages
|
|
|
|
#### Methods
|
|
|
|
##### `__init__(self, src)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `__repr__(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `dependency(self)`
|
|
|
|
*No description provided.*
|
|
|
|
---
|
|
|
|
### [Class] `Stage3`
|
|
|
|
calculate execution order
|
|
|
|
#### Methods
|
|
|
|
##### `__init__(self, src)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `__repr__(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `sort_vars(self, dependency, group)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `calc_size(self, ordered, remaining)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `sort_vars_new(self, dependency, group)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `print_program(self)`
|
|
|
|
*No description provided.*
|
|
|
|
---
|
|
|
|
### [Class] `Stage4`
|
|
|
|
analyze liveness and allocate array
|
|
|
|
#### Methods
|
|
|
|
##### `__init__(self, src)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `liveness(self, l1, g)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `allocate_arr(self, l)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `work_array_codes(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `write_avg_codes(self, avglist)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `print_program(self)`
|
|
|
|
*No description provided.*
|
|
|
|
##### `save_ir(self)`
|
|
|
|
*No description provided.*
|
|
|
|
---
|
|
|
|
### [Class] `Stage5`
|
|
|
|
pass1 and pass2 seperation and calculation ordering
|
|
|
|
---
|
|
|
|
### [Class] `Stage6`
|
|
|
|
generate fortran code
|
|
|
|
---
|
|
|