Juno build system, labels, and skeleton scheduler
This includes some refactoring and new feature for Juno:
- An improved build system for Juno which can be used in build scripts (see
juno_samples
for examples; matmul currently does not compile but the simple3 example can fully compile and run by just invokingcargo run
from that directory) along with ajuno!
macro for importing Juno code into Rust (there is currently a known issue where the empty product is not being generated by the Hercules RT proc macro and so this needs to be included manually in Rust for the moment) - Labels which are tracked through semantic analysis and code generation to produce a data structure which tracks the set of labels and the associated NodeIDs in the Hercules IR (along with some information on what structure was labeled, i.e. if a label was on a loop we also make note of the header of the loop)
- An initial skeleton of the scheduler, this will likely be completely rewritten but currently provides the ability to specify partitions based on the initial labels.