Hybrid memory + execute mode in cuDSS

Hi, I’ve tried a simple case with both hybrid memory and execute mode on. But the calculation failed. So, is this combination of modes allowed in cuDSS? Or it could be something I missed from your example. Some syncs are needed maybe? Below is how I enable both modes.

... ...    
    // Enable hybrid mode where factors are stored in host memory
    // Note: It must be set before the first call to ANALYSIS step.
    int hybrid_mode = 1;
    cudssConfigSet(solverConfig_, CUDSS_CONFIG_HYBRID_MODE, &hybrid_mode, sizeof(hybrid_mode));

    // Enable Hybrid Execute Mode alowing cuDSS to use both CPU and GPU for kernel executions.
    int hybrid_execute_mode = 1;
    cudssConfigSet(solverConfig_, CUDSS_CONFIG_HYBRID_EXECUTE_MODE, &hybrid_execute_mode, sizeof(hybrid_execute_mode));

    // Symbolic factorization
    cudssExecute(handle_, CUDSS_PHASE_ANALYSIS, solverConfig_, solverData_, matrixA_, sol_, rhs_);
... ...

Hi @417luke318!

This combination is not supported. In the current form of this features, it doesn’t make much sense to combine them:

  • Hybrid memory mode targets cases when there is not enough device memory (usually, for larger systems)
  • Hybrid execute mode targets cases when the GPU cannot be used efficiently and uses host for part/all of factorization/solve (for smaller systems)

We strongly recommend checking the returned status of cuDSS API calls. Also, for extra information when the status is not CUDSS_STATUS_SUCCESS, you can enable logging via an environment variable CUDSS_LOG_LEVEL=5.

Best,
Kirill

Thanks, makes perfect sense!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.