|
I am a researcher in:
- compilers,
- highlevel synthesis (HLS),
- parallel programming.
I am motivated by two observations:
- I believe compilers are basically tools to express tradeoffs between scheduling and
resources (similar to the time-space pebble-games studied in theoretical computer science).
Thus the target architecture is of secondary importance, the compilation of a given program
should be done by obtaining an optimized point of the (schedulin_time X hardware_configuration) space.
I believe compilers should be implemented in two phases:
1) a source level tradeoff-explorer targeting a virtual tunable hardware architecture (HA);
2) followed by a separate "normal" compiler that schedules and optimizes the code generated by
the tradeoff-explorer targeting some real CPU or a circuit.
I am still far from reaching this goal, though I have developed few systems to explore such
tradeoffs in HLS and few systems that handle source level compilation
(e.g., a system that merges independent programs in source level).
In particular I need to develop a retargeble compiler whose code generation stage generates assembly instructions on-the-fly
thus determining the best HA suitable for the source code it is compiling.
Note that this direction differs than Application Specific Instruction Set Processors
that have a configurable instruction set since we actually intend to
scan all possible HAs.
Though retargeble compilers exists, the propose compiler will really explore all possible hardware configurations
which is differ than allowing the user to modify the HA changing few parameters.
Another attempt I have made in this direction is to show that many of the optimization paths
of a compiler can be expressed as pebble-games, hoping to find a unified algorithmic
specification for compilers.
-
The ability to compute via re-configurations (directing signals through different edges in a graph)
has always fascinated me.
A reconfigurable unit basically computes a boolean function in one parallel step:
set the re-direction of incoming signals at each node and then propagate a signal through the graph.
It took sometime for me to understand that unlike boolean circuits
reconfigurable units are not compositional, i.e., the outputs of a reconfigurable unit can not be
connected to the input of another unit without violating the one-parallel-step assumption.
I believe that a compiler targeting reconfigurable units can overcome this problem.
I would like to study HLS systems that target branching programs instead of boolean circuits.
I believe that (using novel switching technologies) by doing so we can overcome the
ever-growing delays involved with the wires and MUXes that connect the boolean gates in regular circuits.
The trick is that via a HLS compiler it will be possible to synthesize such large size
branching programs bypassing the need to explicitly design their structure.
This goal is closer to be realized I have some breakthroughs in developing
necessary compilation techniques.
|
Email: yosi@cs.haifa.ac.il
Phone: 972-4-8240338
|