david-durst / aetherlinghaskellir Goto Github PK
View Code? Open in Web Editor NEWHaskell implementation of Aetherling IR for scheduling dataflow DAGs in hardware by trading off area and throughput.
License: BSD 3-Clause "New" or "Revised" License
Haskell implementation of Aetherling IR for scheduling dataflow DAGs in hardware by trading off area and throughput.
License: BSD 3-Clause "New" or "Revised" License
This will allow for:
The solution for this issue should address the comment #14 (review)
I found one thing that was a little inconvenient about slowDown.
Consider the following:
adder = Add T_Int
adder4 = speedUp 4 adder
adder1 = slowDown 4 adder4
The input type signature of adder and adder1 are not the same
adder : T_Int -> T_Int -> T_Int
adder1 : T_Array 1 T_Int -> T_Array 1 T_Int -> T_Array 1 T_Int
So technically slowdown 4 $ speedup 4 is not the identity. It would be nice if was. However, this would require identification of when map 1 f can be safely replaced with f. However, it's a little nuanced, since consider this case, where f initially begins with a map 1 ...
f = Map 1 (Add T_Int)
f1 = speedup 4 slowDown 4 f
And now f and f1 have the same signature. So speedup 4 slowDown 4 on f is ID, but not on adder.
I suspect the answer is to say that speedup x slowdown x should be the identity if the program is in some canonical form. That form should probably not contain unnecessary map 1 f's.
A running list of questions. I'll add more as I think of them.
Why are the inStrLens Maybe's? It seems like the code is generating a list of stream lengths, wrapping them in Justs, and then unwrapping them.
Wrapping: https://github.com/David-Durst/aetherlingHaskellIR/blob/master/src/Core/Aetherling/Simulator/Simulator.hs#L74
Example of unwrapping:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.