The controversial ideas session. Vertical heterogeneity beats horizontal heterogeneity Vertical == down through memory system, horizontal == across processors. Horizontal is a software nightmare: toolchains, unportable (probably won't converge to standard hetero system). Vertical -- different semantics and properties at different layers of hierarchy. Easier for software: interface is still just load/store but with optimisations. Also easier for hardware: don't need that many gates, easy to verify. Q: TerraMTA did the static multithreading thing. Was it cool? A: Yes. ------------------------ Single-program hardware-software unified stack for accelerated and resilient application execution Moore's law is a thing. SW development is still hard, if you want good performance. Alternative: co-design HW and SW, possibly involving compile-to-circuits type tricks and custom ISAs. Claim that any program can be transformed into equivalent one which mostly does matrix multiplication, so design a multiplication-oriented architecture. MxM in hardware is apparently a good idea, in terms of performance and power efficiency, but not clear why he thinks it's a universal primitive. He's translated a bunch of programs into that form, though. Perf: hardware matrix multiplier is much faster than software matrix multiplier. Q: Debugability? A: Haven't considered it. ------------------------ Heterogenity: why should software care? Vishakha Gupta Intel Existing APIs try to hide this (e.g. CUDA), but slow and inflexible. Answer seems to be some kind of hardware proxy to hide the heterogeneity i.e. make them look homogenous. Q: Do you have infinite watchpoints? A: Maybe in future. ------------------------ Henrik Hoffman Exploiting economic models for self-aware computing CSAIL Balance performance and programmability Performance tends to win. Power also in tension with programmability, also accuracy, security, ... Can also do run-time balancing between these goals e.g. trade off performance vs power at run time. Problem: coordination across components. e.g. OS might want to reduce power, application might want to preserve accuracy. Treat as game theory. Engineer incentives so that everyone ends up in the right place. ------------------------ Dynamic code generation & compilation everywhere Shoaib Kamil Berkeley Lots of different platforms. Change a lot; interaction methods change a lot. Want even richer interfaces. SEJITS: DSLs for everyone. Some things hard to do in libraries, so use an embedded DSL compiler. Have some auto-tuning stuff as a parameter search using machine learning. Happens to be very good for stencil computations in Python . New plan: do it as a service for the benefit for a mobile phone. --------------- Work stealing Looking at interaction between language, OS, and energy efficiency.