Skip to content
Snippets Groups Projects
Commit 8ade7acd authored by Amira Abdel-Rahman's avatar Amira Abdel-Rahman
Browse files

modified documentation

parent 19acc26d
No related branches found
No related tags found
No related merge requests found
...@@ -5,20 +5,29 @@ ...@@ -5,20 +5,29 @@
## Description ## Description
Repository for DICE design tools explorations.
The Physical Computing Design tool is an integrated design tool for the design, simulation, optimization and fabrication of reconfigurable computing systems.
Topics include:
- Programming strategies for spacial computing Traditional electronics design workflows follow a three stage sequential linear process that starts with the design of the system, then the analysis and simulation, and finally the fabrication and testing of these systems. Very often these stages are executed independently from each other, using different tools and sometimes different teams, making it very hard to translate the feedback from the simulation or testing stages into viable design amendments. This results in the design workflow, which is an inherently iterative process, being be a very tedious and inefficient process.
- Data flow programming and [Distributed Deep Neural Networks](https://gitlab.cba.mit.edu/amiraa/ddnn)
- Physics Simulation Therefore, we present an integrated, closed loop physical computing design tool where one can design, simulate, optimize and fabricate reconfigurable computing systems.
- Trusted Systems
- Reconfiguration strategies for DICE pieces The following steps explain in detail the proposed design workflow:
- CAM tools and path planing:
- Desktop (external) assembler 1. **Design**: The first step is to place the DICE nodes and visualize the 3D assembly of the computing system.
- Swarm assembly and manipulation 2. **Programming**: Next, one should select each node and specify the node details (code/program, processor, connected neighbors, starting state.. etc).
3. **Analysis**: While placing multiple parts (an assembly), an analysis of the whole computation graph is automatically generated in realtime (average computation per frame, communication bottlenecks, connectivity graph, hierarchal graph), and custom code for application specific analysis could be added. Based this analysis, design recommendation are generated and displayed. For example, using another type of processor, adding extra nodes to divide the computation of overloaded nodes into two, finding more efficient routing for data transfer.
4. **Optimization**: If one wants to further optimize the reconfigurable computing system, the performance projection graph tool visualizes how each hardware and software decision/variable is affecting the projected performance (energy use, speed, cost). There, one describes each input variable as a distribution (normal, categorical..) and a probabilistic programming model is used to infer what is the optimal hardware configuration for the given software workflow.
5. **Simulation**: The simulation window has a visualization of the state and output of the DICE computation. This is either the output of the simulation of DICE computation on the computer before assembling and building the system or later visualizing the data sent back from the DICE system.
6. **Fabrication**: In parallel to the previous steps, the assembly realtime control window makes it very easily to control the assembler and fabricate, program, test the designed systems in realtime and to get feedback and amend the system accordingly.
This novel integrated design workflow paves the way for the design of discrete integrated circuits but also reconfigurable computing systems that can change and evolve while execution as needed.
---- ----
## Demo Links ## Progress
### Demo Links
- **"Physical Computing Interface"** - **"Physical Computing Interface"**
- [Assembler Control Demo](https://amiraa.pages.cba.mit.edu/physical-computing-design-tools/01_Code/physical_computing_interface/index.html) - [Assembler Control Demo](https://amiraa.pages.cba.mit.edu/physical-computing-design-tools/01_Code/physical_computing_interface/index.html)
...@@ -28,31 +37,11 @@ Topics include: ...@@ -28,31 +37,11 @@ Topics include:
- [Distributed Deep Neural Networks](https://gitlab.cba.mit.edu/amiraa/ddnn) - [Distributed Deep Neural Networks](https://gitlab.cba.mit.edu/amiraa/ddnn)
- UR10 voxel Assembly [demo.](https://amiraa.pages.cba.mit.edu/physical-computing-design-tools/01_Code/physical_computing_interface/assembly/standAloneAssembly.html) - UR10 voxel Assembly [demo.](https://amiraa.pages.cba.mit.edu/physical-computing-design-tools/01_Code/physical_computing_interface/assembly/standAloneAssembly.html)
----
## Progress
### Demo Videos ### Demo Videos
![](02_Presentation/191202_demo.mp4) ![](02_Presentation/191202_demo.mp4)
![](02_Presentation/assemblerFirstTrial.mp4) ![](02_Presentation/assemblerFirstTrial.mp4)
---
### Applications
- The most effieceint applications for dice are those who need reconfiguration white running, examples:
- probabilistic programming (Gamalon)
- more computing power while assembling voxels
- Neural Networks?
#### Voxel Simulation
![](02_Presentation/200114_simulation.PNG)
#### Convolutional Neural Networks
![](02_Presentation/200508_CNN.png)
----
### Capabilities and Updates ### Capabilities and Updates
- Design - Design
...@@ -68,14 +57,37 @@ Topics include: ...@@ -68,14 +57,37 @@ Topics include:
- Asynchronous code propagation (distributed max example) - Asynchronous code propagation (distributed max example)
- Simple test case find max value distributed - Simple test case find max value distributed
- Min cut max flow concept study neighborhood - Min cut max flow concept study neighborhood
- Hardware optimization
- see section below.
- Improved UI and integration - Improved UI and integration
- Radial menu - Radial menu
- Json propagation - Json propagation
- Highlight selected node - Highlight selected node
- switch windows
- Applications
- voxel design tools
- Convolutional neural networks
---
## Applications
- The most efficient applications for dice are those who need reconfiguration white running, examples:
- probabilistic programming (Gamalon)
- more computing power while assembling voxels
- Neural Networks?
### 1- Voxel Simulation
![](02_Presentation/200114_simulation.PNG)
### 2- Convolutional Neural Networks
![](02_Presentation/200508_CNN.png)
--- ---
### Hardware Architecture Inference ## Hardware Architecture Inference
#### Probabilistic Programming #### Probabilistic Programming
...@@ -151,53 +163,74 @@ expectation(dist) ...@@ -151,53 +163,74 @@ expectation(dist)
``` ```
Until now I have a dummy computation model. Next steps would be to get a complex computational graph and for each part infer the best hardware architecture for it. Moreover, if the computation graph changes through time one can also alter the hardware architecture to respond to these changes. Until now I have a dummy computation model. Next steps would be to get a complex computational graph and for each part infer the best hardware architecture for it. Moreover, if the computation graph changes through time one can also alter the hardware architecture to respond to these changes.
---
## Desired Milestones
- [ ] Assembly
- [ ] Swarm construction
- [ ] Computation
- [ ] Morphing code
- [ ] Real simulation/message passing analysis
- [ ] Computation Optimization
- [ ] Restructuring code and automatically divide into distributed
- [ ] show alternatives and bottlenecks
- [ ] Auto compilation/export to dice modules
- [ ] Simulation portal
- [ ] Case Studies
- [ ] Neural networks
- [ ] Bayesian optimization
- [ ] Distributed optimization
- [ ] Voxel design
- [ ] Scaling
- [ ] stress testing scaling
--- ---
## TODOS: ## TODO and Next Steps:
- [x] Grid Systems - [ ] **Documentation**:
- [ ] Documentation
- [ ] in depth documentation of how to do everything - [ ] in depth documentation of how to do everything
- [ ] Reset Grid/button - [ ] readme page:
- [ ] Assembly - [ ] change make it multiple pages
- [ ] fix errors - [ ] **General workflow/UI**:
- [ ] Add real Dice info - [ ] closure and prototypes for everything
- [ ] computation delay and communaction cost - [ ] Switch windows
- [ ] CAD? - [ ] modularize current windows
- [ ] Select - [ ] programmatically call and add windows to UI
- [ ] improve selected visualization - [ ] add destroy function for each closure
- [ ] when selecting group show bounding box - [ ] Global selection
- [ ] expose global variables
- [ ] when none of the nodes is selected you can edit the globals
- [ ] grids (destroy all three js and create a new one)
- [ ] voxel size
- [ ] history of add and remove?
- [ ] Hierarchy - [ ] Hierarchy
- [ ] place multiple voxels - [ ] place multiple voxels
- [ ] change code of mutiple voxels - [ ] change code of multiple voxels
- [ ] select multiple dice pieces - [ ] select multiple dice pieces
- [ ] create groups - [ ] create groups
- [ ] Bugs: - [ ] Scaling
- [ ] change grid like Jiri's - [ ] stress testing scaling
- [ ] fix assembler
- [ ] when remove node pix pickup list - [ ] **Assembly**:
- [ ] get the pickup list from occupancy - [ ] general
- [ ] fix errors
- [ ] UR arm
- [ ] real life connection
- [ ] code (from python? or just call python scripts??)
- [ ] meso dice
- [ ] work with zach on it
- [ ] swarm assembly
- [ ] bill-e assembly of the computation elements
- [ ] structural robotics
- [ ] Jiri assembler
- [ ] cad? visualize
- [ ] fix grid
- [ ] **Computation and optimization**:
- [ ] load c++ or other code
- [ ] automatically computation delay and communication cost
- [ ] Optimization strategy
- [ ] simple show bottlenecks in computation or communication
- [ ] alternatives and suggestions
- [ ] local suggestions to divide the computation into two nodes?
- [ ] shape discovery
- [ ] add window of probabilistic search parameters
- [ ] Restructuring code and automatically divide into distributed
- [ ] **Applications/Demonstrations**:
- [ ] AI
- [ ] Convolutional Neural networks
- [ ] highlight bottleneck and communication delay
- [ ] Probabilistic Programming
- [ ] add window optimization
- [ ] Distributed optimization/belief propagation
- [ ] Bayesian optimization
- [ ] Voxel Design
- [ ] add a walking robot
- [ ] Morphing computing systems examples
- [ ] Voxel land
- [ ] a big structure getting assembled assembled while getting bigger
- [ ] computation getting bigger
- [ ] dynamic physics simulation
- [ ] when from one part to another so does the placement of the computing systems
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment