Xilinx / fpga24_routing_contest

Runtime-First FPGA Interchange Routing Contest @ FPGA’24
https://xilinx.github.io/fpga24_routing_contest/
Other
31 stars 10 forks source link

RWRoute: Build failed with an exception [Out Of Memory] #13

Closed SakethGajawada closed 1 year ago

SakethGajawada commented 1 year ago

image PFA error while executing the make command. I am using java-11 version. Could someone look into it ? Thanks in Advance.

eddieh-xlnx commented 1 year ago

Hi @SakethGajawada. Thanks for posting! The step it's failing on is actually running RWRoute on the boom_soc benchmark. Can you share the contents of boom_soc_rwroute.phys.log please?

Note that -DjvmArgs="-Xmx32736m ..." tells the JVM it can use ~32GB of heap memory, which can translates to ~40GB RAM required. Does your machine have this much RAM? If not, you can reduce that value for development.

SakethGajawada commented 1 year ago

boom_soc_rwroute.phys.log PFA log file. My machine has 16 GB of RAM. Should I directly change in the Makefile accordingly?

eddieh-xlnx commented 1 year ago

boom_soc_rwroute.phys.log PFA log file. My machine has 16 GB of RAM. Should I directly change in the Makefile accordingly?

Yes, I would try changing it to:

-DjvmArgs="-Xms12g -Xmx12g"

and see if that works?

SakethGajawada commented 1 year ago

Task :run FAILED

FAILURE: Build failed with an exception.

I got this error in the log file. Attaching it for reference. boom_soc_rwroute.phys.log

eddieh-xlnx commented 1 year ago

Hi @SakethGajawada. So sorry you're still having trouble!

This time I can't see your terminal, so I'm not sure if you modified the right line of code. I also apologise I wasn't actually clear about what line that is: https://github.com/Xilinx/fpga24_routing_contest/blob/9000bdb4901105250af3f903d41799c141d6cf28/Makefile#L36-L37 should be changed to:

JVM_HEAP ?= -Xms14g -Xmx14g

to work with boom_soc. I tested it to find that 10g and 12g ran out of memory, but 14g was the minimum I could get boom_soc to finish. I didn't check any of the other benchmarks. (Note that giving JVM 14g of heap memory will likely means it needs a few GB more for non user-visible tasks, which unfortunately means a machine with a total of 16GB will mean you cannot run the baseline RWRoute).

You can run the two smallest benchmarks with the following:

make BENCHMARKS="vtr_mcml rosetta_fd"

In case you're not aware, there's an example of both RWRoute and NXRoute working with GitHub Actions, which you can examine here: https://github.com/Xilinx/fpga24_routing_contest/actions?query=branch%3Amaster GitHub Actions only has 7GB of RAM, so there are some designs that cannot be routed, including boom_soc which you're having trouble with (koios_dla_like_large and ispd_example2 are likewise disabled too) .

SakethGajawada commented 1 year ago

It worked when I tried with the small benchmarks (vtr_mcml, rosetta_fd). It is giving correct wall clock time in the respective log files.

Thankyou.

eddieh-xlnx commented 1 year ago

Glad we got to the bottom of it @SakethGajawada! I tried the other two benchmarks (koios_dla_like_large and ispd_example2) and found that they were also able to complete when given a 14GB heap limit too.

I've updated the website with these details in this PR: #18.

Realistically, this does mean that you'll struggle to run it on a machine with 16GB of memory. Of course, you are welcome (encouraged!) to optimize RWRoute's memory footprint, which may also give performance benefits beyond just fitting into this machine.

I'm going to go ahead and close this issue, along with changing its title. Feel free to continue commenting.