Commit message (Collapse) | Author | Age | |
---|---|---|---|
* | Pass around an accumMap (but it's empty still) | Tom Smeding | 3 days |
| | |||
* | Pretty: fix printing of EMaybe | Tom Smeding | 4 days |
| | |||
* | D2[Array] now has a Maybe instead of zero-size for zero | Tom Smeding | 5 days |
| | | | | Remaining problem: 'add' in Compile doesn't use the D2 stuff | ||
* | Commutativity marker on fold1i | Tom Smeding | 11 days |
| | |||
* | Compile EAccum | Tom Smeding | 14 days |
| | |||
* | Much process with accumulator revamp | Tom Smeding | 2025-03-14 |
| | |||
* | WIP revamp accumulator projection type repr | Tom Smeding | 2025-03-14 |
| | | | | | | | I stopped working on this because I realised that having sparse products (and coproducts, prehaps) everywhere is a very bad idea in general, and that we need to fix that first before really being able to do anything else productive with performance. | ||
* | Clean up code organisation a little | Tom Smeding | 2025-03-09 |
| | |||
* | pretty: Print x value for (!) | Tom Smeding | 2025-03-07 |
| | |||
* | pprintExpr | Tom Smeding | 2025-03-07 |
| | |||
* | Compile: Implement EWith (TODO EAccum) | Tom Smeding | 2025-03-05 |
| | | | | That's going to be a mess | ||
* | Fix ppParen in pretty of EWith | Tom Smeding | 2025-03-04 |
| | |||
* | Fix some pretty-printing | Tom Smeding | 2025-03-01 |
| | |||
* | UnMonoid: Properly recurse | Tom Smeding | 2025-02-25 |
| | |||
* | Pretty: Allow colouring exts (currently not) | Tom Smeding | 2025-02-25 |
| | |||
* | Compile: Emit structs in proper order | Tom Smeding | 2025-02-25 |
| | |||
* | Pretty-printer that supports extension fields | Tom Smeding | 2025-01-28 |
| | |||
* | Add ext field to remaining AST constructors | Tom Smeding | 2025-01-27 |
| | |||
* | UnMonoid | Tom Smeding | 2024-12-06 |
| | |||
* | WIP UnMonoid (to be used for compiling to C) | Tom Smeding | 2024-12-06 |
| | |||
* | Working argument accum mode (...) | Tom Smeding | 2024-11-26 |
| | | | | | | | | | | | | | | | The derivative of 'neural' in full accum mode is pretty atrocious now; I think this is because when you have code like this: \(a :: Arr 1 R) -> let b = a in let c = b in sum d then because the argument, as well as both let bindings, bind a value of array type, each will introduce an accumulator, hence resulting in three (!) nested `with` clauses that each just contribute their result back to their parent. This is pointless, and we should fix this. | ||
* | Test GMM; it fails | Tom Smeding | 2024-11-10 |
| | |||
* | Complete GMM implementation | Tom Smeding | 2024-11-10 |
| | |||
* | Some more primitive operators | Tom Smeding | 2024-11-09 |
| | |||
* | WIP maximum/minimum | Tom Smeding | 2024-11-08 |
| | |||
* | Custom derivatives | Tom Smeding | 2024-11-08 |
| | |||
* | WIP custom derivatives | Tom Smeding | 2024-11-08 |
| | |||
* | Remove build1 | Tom Smeding | 2024-11-07 |
| | |||
* | WIP EOneHot | Tom Smeding | 2024-11-04 |
| | |||
* | WIP preserve only subset of D0 bindings in dual (...) | Tom Smeding | 2024-10-27 |
| | | | | | | | | | | | | | | | The point of this is to ensure that when an expression occurs in a Build, then the parts of D0 that are only there to make sharing work out for D1 are not laboriously taped in an array and preserved for D2, only for D2 to ignore them. However, while the subtape machinery is a good first step, this is not everything: the current Build translation makes a Build for the (elementwise) tape and separately a build for the primal. Because the primal _does_ generally need the subtaped-away stuff, we can't just not tape those. TODO: figure out how to resolve this / what the next step is. | ||
* | Fix {} usage in pretty-printing of ELet | Tom Smeding | 2024-10-26 |
| | |||
* | Debugging | Tom Smeding | 2024-10-26 |
| | |||
* | Fix interpreter bug | Tom Smeding | 2024-10-22 |
| | |||
* | Differentiate Replicate | Tom Smeding | 2024-10-22 |
| | |||
* | Tests | Tom Smeding | 2024-10-21 |
| | |||
* | Reverse-by-forward, and checking neural (it's wrong) | Tom Smeding | 2024-10-01 |
| | |||
* | Add some missing cases | Tom Smeding | 2024-09-22 |
| | |||
* | WIP better zero/plus, fixing Accum (...) | Tom Smeding | 2024-09-13 |
| | | | | | | | | | | | | | The accumulator implementation was wrong because it forgot (in accumAdd) to take into account that values may be variably-sized. Furthermore, it was also complexity-inefficient because it did not build up a sparse value. Thus let's go for the Haskell-interpreter-equivalent of what a real, fast, compiled implementation would do: just a tree with mutable variables. In practice one can decide to indeed flatten parts of that tree, i.e. using a tree representation for nested pairs is bad, but that should have been done _before_ execution and for _all_ occurrences of that type fragment, not live at runtime by the accumulator implementation. | ||
* | Towards neural | Tom Smeding | 2024-09-12 |
| | |||
* | Interpreter, some operations | Tom Smeding | 2024-09-12 |
| | |||
* | A simple embedded frontend | Tom Smeding | 2024-09-05 |
| | |||
* | Generic accumulators | Tom Smeding | 2024-09-05 |
| | |||
* | WIP | Tom Smeding | 2024-09-04 |
| | |||
* | Inching towards drev of build | Tom Smeding | 2024-09-03 |
| | |||
* | autoWeak: Handle closed source environments | Tom Smeding | 2024-09-03 |
| | |||
* | accumPromote | Tom Smeding | 2024-09-02 |
| | |||
* | WSwap needs no env singleton | Tom Smeding | 2024-09-02 |
| | |||
* | Code cleanup, and OverloadedLabels for LSeg | Tom Smeding | 2024-09-02 |
| | |||
* | Autoweak! | Tom Smeding | 2024-09-02 |
| | |||
* | WIP autoWeak | Tom Smeding | 2024-09-02 |
| |