incomp-flame-post/docs/post.md

694 lines
9.6 KiB
Markdown

# post.py
![Language](https://img.shields.io/badge/Language-Python Source-green?style=for-the-badge)
## 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
---