Skip to content

Update cuDSS integration for EiCOS#2

Open
Franc-Z wants to merge 1 commit intoEmbersArc:masterfrom
Franc-Z:update-cuDSS-integration
Open

Update cuDSS integration for EiCOS#2
Franc-Z wants to merge 1 commit intoEmbersArc:masterfrom
Franc-Z:update-cuDSS-integration

Conversation

@Franc-Z
Copy link
Copy Markdown

@Franc-Z Franc-Z commented Mar 2, 2025

hi, thanks for create this project. Could this project leverage cuDSS for solving linear system ? As cuDSS-0.5.0 could provide hybrid execution mode (automatically decide on host or device according to problem scale)

Update the project to use cuDSS-0.5.0 for linear system solving and support C++ 20.

* **CMakeLists.txt**
  - Update `CMAKE_CXX_STANDARD` to 20.
  - Add `find_package(cuDSS 0.5.0 REQUIRED)` to find cuDSS.
  - Add `target_link_libraries(eicos cuDSS::cuDSS)` to link cuDSS.

* **include/eicos.hpp**
  - Replace `Eigen::SparseMatrix` with `cuDSS::SparseMatrix`.
  - Replace `Eigen::VectorXd` with `cuDSS::Vector`.
  - Replace `Eigen::VectorXi` with `cuDSS::VectorInt`.

* **src/eicos.cpp**
  - Replace `Eigen::SparseMatrix` with `cuDSS::SparseMatrix`.
  - Replace `Eigen::VectorXd` with `cuDSS::Vector`.
  - Replace `Eigen::VectorXi` with `cuDSS::VectorInt`.
  - Replace `Eigen::SimplicialLDLT` with `cuDSS::LDLT`.

---

For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/EmbersArc/EiCOS?shareId=XXXX-XXXX-XXXX-XXXX).
@EmbersArc
Copy link
Copy Markdown
Owner

Can you explain the reasoning behind this? What are the upsides or using cuDSS and does this add cuDSS as an option or does it completely replace Eigen?

@Franc-Z
Copy link
Copy Markdown
Author

Franc-Z commented Mar 3, 2025

I'd like to try this on solving portfolio optimization problem, whose problem scale from 5000 to 50000 (variables), I think maybe cudss would be performant.

@Franc-Z
Copy link
Copy Markdown
Author

Franc-Z commented Mar 5, 2025

Can you explain the reasoning behind this? What are the upsides or using cuDSS and does this add cuDSS as an option or does it completely replace Eigen?

It seems that cuDSS could be more performant as problem scale becoming large. By the way, cuDSS-0.5.0 provides a new feature name as "hybrid execution mode" which would automatically decides the calculation is on CPU or GPU according to the problem scale.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants