Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] View of /branches/vis15/src/compiler/FIXME.md
ViewVC logotype

View of /branches/vis15/src/compiler/FIXME.md

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4438 - (download) (annotate)
Sat Aug 20 13:30:33 2016 UTC (3 years, 2 months ago) by jhr
File size: 7705 byte(s)
  working on merge: update FIXME list
# FIXME issues
Organized by source directory.  We use the following command to find the FIXMEs:

````
bbfind --gui --name-pattern "*.in" --name-pattern "*.sml" FIXME .
````

High priority items are marked with a "🔥" symbol.

## Compiler issues

### `ast`

No issues.

### `basis`

* add clerp3 and clerp5 operators (`basis-vars.sml`)

* more reductions: min/max on integers, sum on integers and tensors. (`basis-vars.sml`)

### `cfg-ir`

* add additional checking (`check-ir-fn.sml`)
  - redundant bindings in the presence of loops
  - check the types of `SEQ` elements
  - check `EINAPP` bodies
  - check application of user-defined functions
  - check `MAPREDUCE` nodes
  - fix check for rebinding in `FOREACH` nodes (currently disabled)

* handle `EINAPP` nodes in `toString` function (`expr-fn.sml`)

* handle fused `MAPREDUCE` in global-variable promotion (`promote-fn.sml`)

* avoid redundancy of setting bindings for variables (`translate-fn.sml` and `census-fn.sml`)

* delete `APPLY` when function is pure and the result is unused (`unused-elim-fn.sml`)

* delete `MAPREDUCE` when body is pure and the result is unused (`unused-elim-fn.sml`)

### `codegen`

* precedence checking for `mkApply` (`clang.sml`)

* 🔥 need to figure out the representation of dynamic sequences in the generated library API
  (`codegen-util.sml`, `gen-library-interface.sml`, and `output-util.sml`)

* Printing "const" types (`print-as-c.sml`)

### `common`

* Determine kernel continuity from kernel definitions (`kernel.sml`)

### `cxx-util`

* Generate error-handling code that puts the error message in the error buffer and returns
  and error status (`gen-outputs-util.sml`)

* various issues when synthesizing types and operations (`gen-tys-and-ops.sml`)
  - tuple types are not supported
  - 🔥 some dynamic sequence types are not supported (e.g., fixed-size sequences)
  - 🔥 generating printing code for tuples, dynamic sequences, and fixed-size sequences

* printing types needs to be overhauled to correctly handle C++ type syntax (`print-as-cxx.sml`)

* printing support for classes that include protected or private members (`print-as-cxx.sml`)

* many issues in translating Tree IR to C++ (`tree-to-cxx.sml`)
  - 🔥 subscript on sequences of tensors
  - liveness analysis to enable *in situ* dynamic sequence operations
  - add `vload_aligned` and `vpack_aligned` operations
  - refactor common code out of `trAssign` and `trDecl` functions

* 🔥 handle tuple types in `trQType` and `trType` (`type-to-cxx.sml`)

### `driver`

No issues.

### `ein`
 * use the `BorderCtl.ctl` type instead of defining a new type (`ein.sml`)

### `fields`

No issues.

### `global-env`

No issues.

### `high-ir`

No issues.

### `high-opt`

  * code clean up (`eps-util.sml`)
    - documentation
    - avoid use of append to build lists

  * improve efficiency of doRHS by doing one pass of substitutions (`normalize.sml`)

### `high-to-mid`

  * Switch to `maxItem` function once SML/NJ 110.80 is released (`clean-index.sml`)

  * Expand integer powers into multiplications (`high-to-mid.sml`)

  * Need documentation for the `mkLdVoxel` function (`probe-ein.sml`)

  * Improve documentation for the `arrangeBody` function (`probe-ein.sml`)

### `inputs`

No issues.

### `low-ir`

No issues.

### `low-opt`

No issues.

### `low-to-tree`

  * many issues in translating Low IR to Tree IR (`low-to-tree.sml`)
    - add support for output globals in `mkGlobalVar`
    - 🔥 `RealToInt` translation when the argument has multiple pieces
    - 🔥 support for `MAPREDUCE`

### `mid-ir`

No issues.

### `mid-opt`

No issues.

### `mid-to-low`

  * Generalize `imgToArgs` to handle arbitrary dimension images (`field-to-low.sml`)

  * Support IR operators `Clamp`, `MapClamp`, and `Lerp` on higher-order tensor types
    (`mid-to-low.sml`).

  * Generate vector operations instead of scalar operations in more places (`ein-to-low.sml`,
    `ein-to-scalar.sml`, and `ein-to-vector.sml`)

### `mlton`

No issues.

### `nrrd`

No issues.

### `options`

  * Bug in `GetOpt` library workaround can be removed once SML/NJ 110.80 is released

### `parse-tree`

No issues.

### `parser`

No issues.

### `simple`

  * Invariant checking for Simple AST representation (`check-simple.sml`)

  * Pretty-printing for fused map-reduce (`simple-pp.sml`)

  * Distinguish between "Continue" in loops and "Continue" in strand methods
    (`simple.sml`)

### `simplify`

  * Support fusion of reductions (`map-reduce-opt.sml`)

  * Add a logical negate operation on AST expressions to support better if-then-else
    translations (`simplify.sml`)

  * 🔥 Handle `AST.E_ParallelMap` expressions (`simplify.sml`)

  * 🔥 Support for `variance` reductions over strand sets (`simplify.sml`)

  * 🔥 Support for `variance` reductions over sequences (`simplify.sml`)

### `target-cpu`

  * implement the `run_initially` method for the parallel target
    (`fragments/par-run-initially.in`)

  * switch to building an AST once CLang supports `const` functions (`gen-strand.sml`
    and `gen-world.sml`)

  * 🔥 handle create iterations over sequences (`gen-world.sml`)

  * 🔥 residual constants during code generation? (`gen.sml`)

### `translate`

  * Implement zero-tensor in Ein (`translate-basis.sml`)

  * Support for `E_Tuple` and `E_Project` (`translate.sml`)

  * Check possible issues with global initialization and conditionals (`translate.sml`)

  * Check possible issues with strand methods that do not reach the exit node (`translate.sml`)

### `tree-ir`

  * Many issues in checking the Tree IR (`check-tree.sml`)
    - Parameterize the `check` function by the target's vector layout rules and
      check for valid layouts
    - Finish checking for `S_MAssign` statements
    - Check body of map-reduce
    - Checking for `S_LoadNrrd` statements
    - Check user-defined functions

### `tree-opt`

No issues.

### `typechecker`

  * Evaluation of constant tensor slice (`check-const.sml`)

  * Many issues in typechecking expressions (`check-expr.sml`)
    - improved overload resolution
    - resulting differentiation for inner, outer, and colon products
    - check index against shape of tensor for subscripting/slicing
    - check for sequences of non-concrete types (*e.g.*, sequences of fields)
    - non-literal constant string expressions

  * Handle command-line definitions of constants (`check-globals.sml`)

  * Allow strands without outputs, once we have global outputs (`check-strand.sml`)

  * Check for globals and state variables that are not initialized in
    their respective initialization sections (`check-var-uses.sml`)

  * don't report the `pos` state variable as unused when there are spatial queries

  * Check for situation where `initially` method has call to `stabilize` (`check-var-uses.sml`)

  * Unification of differentiation bounds (`unify.sml`)

## Runtime system issues

### `common`

  * figure out a mechanism to pass warnings back up the call chain, instead of printing
    them from library code (`world.cxx`)

### `include/diderot`

  * 🔥 We need to check all of the nrrd-file metadata that the compiler uses when loading
    an image file (`image-inst.hxx`)

  * For programs that do not use `new` or `die`, we can allocate less space for the
    KD-tree partitions (`kdtree-inst.hxx`)

# Questions

#### `ein`

  * QUESTION: should the `int` be `IntInf.int`?  (`ein.sml`)
    - Not sure CC

  * QUESTION: why is this `index_kind` list and not `index_id` list? (`ein.sml`)
    - They are both ints, but one is a variable index
      and the other binds the ranges of the variable indices.

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0