This pull request is for the complete implementation of node depth, including a parametrized hardware accelerator.
Command line interface
-a, --auto-size=[FILE]: The calyx generator and odgi data parser support this flag for automatically determining the hardware parameters from a given odgi file. The calyx generator requires the filename to be passed as an argument to this flag, while the data parser infers the dimensions from the odgi graph whose data it is parsing.
-d, --from-data and -i, --from-interp: the data parser can now convert output files from verilator and the calxy interpreter (respectively) to an odgi node depth table.
Files
Key changes:
calyx_depth.py contains the full node depth implementation, based directly on the implementation of computing node depth for a single node in prototype/calyx_depth_simple.py. Run python calyx_depth.py --help for information about its command line interface.
parse_data.py extends prototype/parse_data.py to general calyx input for an entire odgi graph. It can also convert calyx output to match the odgi output format (see updates to the command line interface above).
Testing has been updated in test/turnt.toml and test/subset-paths/turnt.toml.
Testing
Turnt now automatically compares the complete node depth accelerator against odgi and our existing python node depth implementation. To minimize the testing time and maximize testing coverage, a fresh hardware accelerator is generated for each test file and its dimensions are automatically inferred. The calyx interpreter is used for testing since verilog takes a long time to compile.
To fully test the node depth implementation for a single node, I naively copied the testing folder into the prototype (scratch) folder. We will have to modify our testing setup to test both node depth and odgi layout, which would be an opportune time to modify the testing setup for the prototype folder as well.
I have not tested our algorithm on the chromosome 8 dataset because this dataset already takes several hours to run using the original odgi implementation. I believe the other graphs should provide sufficient test coverage, although it would probably be good to add more tests to test/subset-paths.
This pull request is for the complete implementation of node depth, including a parametrized hardware accelerator.
Command line interface
-a, --auto-size=[FILE]
: The calyx generator and odgi data parser support this flag for automatically determining the hardware parameters from a given odgi file. The calyx generator requires the filename to be passed as an argument to this flag, while the data parser infers the dimensions from the odgi graph whose data it is parsing.-d, --from-data
and-i, --from-interp
: the data parser can now convert output files from verilator and the calxy interpreter (respectively) to an odgi node depth table.Files
Key changes:
calyx_depth.py
contains the full node depth implementation, based directly on the implementation of computing node depth for a single node inprototype/calyx_depth_simple.py
. Runpython calyx_depth.py --help
for information about its command line interface.parse_data.py
extendsprototype/parse_data.py
to general calyx input for an entire odgi graph. It can also convert calyx output to match the odgi output format (see updates to the command line interface above).test/turnt.toml
andtest/subset-paths/turnt.toml
.Testing
Turnt now automatically compares the complete node depth accelerator against odgi and our existing python node depth implementation. To minimize the testing time and maximize testing coverage, a fresh hardware accelerator is generated for each test file and its dimensions are automatically inferred. The calyx interpreter is used for testing since verilog takes a long time to compile.
To fully test the node depth implementation for a single node, I naively copied the testing folder into the prototype (scratch) folder. We will have to modify our testing setup to test both node depth and
odgi layout
, which would be an opportune time to modify the testing setup for theprototype
folder as well.I have not tested our algorithm on the chromosome 8 dataset because this dataset already takes several hours to run using the original odgi implementation. I believe the other graphs should provide sufficient test coverage, although it would probably be good to add more tests to
test/subset-paths
.