Giter Club home page Giter Club logo

aetherlinghaskellir's Introduction

Aetherling's Haskell SpaceTime Intermediate Representation

Build Status

To build this part of the project:

  1. Install the latest version of stack
  2. Clone the Aetherling Haskell IR repository
  3. Build the project:
stack build
  1. Look at the examples in src/examplesExe/Main.hs. The output of running this file is at src/examplesExe/Main.output.
  2. Either
    1. Run the produced binary to see all the examples and their space/time requirements. You can find the binary by looking at the output of the build command
    2. Load the package in the Haskell interpreter and try out your own examples. This can be done by running:
    stack ghci
    

Notes:

run with the following to get profiling for debugging and memory analysis:

AetherlingSTIR-Example-exe +RTS -xc

aetherlinghaskellir's People

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

aetherlinghaskellir's Issues

Questions From Simulator

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:

knownStrLens = filter (/=Nothing) inStrLens

Separate Memory Access From Address Generation

This will allow for:

  1. Separate behavior for scatter/gather, strided, and contiguous write/read.
  2. User-specified math on memory operations
  3. Easier parallelization of memory primitives

The solution for this issue should address the comment #14 (review)

feature requestion

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.