Skip to content

Conversation

Franc-Z
Copy link

@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
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
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
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