CUDA version of GPL
@cdleary @hzeller would you mind reviewing Rachel's first PR?
You should build your code on a machine without cuda installed and make sure there is no issue
@maliberty You need to approve the scan workflow since Rachel's a first time contributor.
@maliberty You need to approve the scan workflow since Rachel's a first time contributor.
Unfortunately I have to approve it on every push as she is still a first time contributor. I just did so again.
Do you have any measurements of the benefit of this change?
Do you have any measurements of the benefit of this change?
Am doing it.
Hi Matt, I tested the code on my working computer and another cloudtop without a GPU. It can work on both of the computers. But here are some not successful checks. Do you have any ideas on this?https://jenkins.openroad.tools/blue/organizations/jenkins/OpenROAD-Public/detail/PR-2076-head/14/pipeline

Have you looked at gpl incremental02? You can click the details link to see the Jenkins results.
Hello Matt @maliberty , I found a library CUSP, which is used to solve linear systems based on GPU. It is very fast. I have tested it successfully on GPL. Here is the performance:

I think the current direct CUDA solver is done. It is slow but correct. Can you please check it once more and let me know if I have any more places to modify? If there is no problem, my thought is that we close this PR as soon as possible and open a new PR to upload the CUSP version.
Have you looked at gpl incremental02? You can click the details link to see the Jenkins results.
re "my thought is that we close this PR as soon as possible and open a new PR to upload the CUSP version." Is there a reason not to integrate that change into this PR?
re "my thought is that we close this PR as soon as possible and open a new PR to upload the CUSP version." Is there a reason not to integrate that change into this PR?
Yes. I think CUSP gives a big improvement on the performance. It's worth using it as the final version for the GPU solver. But the last update of CUSP is years ago and I am not sure if it will be maintained in the future. The direct CUDA solver is a version not dependent on high-level libraries. One day we can continue to develop our iterative GPU solver on the basis of it.
re "my thought is that we close this PR as soon as possible and open a new PR to upload the CUSP version." Is there a reason not to integrate that change into this PR?
Yes. I think CUSP gives a big improvement on the performance. It's worth using it as the final version for the GPU solver. But the last update of CUSP is years ago and I am not sure if it will be maintained in the future. The direct CUDA solver is a version not dependent on high-level libraries. One day we can continue to develop our iterative GPU solver on the basis of it.
What is the performance of the current version if we don't integrate CUSP? " It is slow but correct."
Much slower. 20 times slower for some experiments. Its existance just provides a frame and some records for the CUDA direct solver. Not useful for users but can be used as a reference for developers.
@maliberty I think this is ready for another review.
Are the runtime from the CUSP solver column now what this PR will produce?
This is the updated one, CUSP solver with preconditioner. The direct CUSP solver is very fast but can't converge well for big chips. The current version can provide a correct result and bring a 30% acceleration.

Are the runtime from the CUSP solver column now what this PR will produce?
Hi Matt, do you have more suggestions or questions for this PR?