<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re:PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class? in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1419021#M33729</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;A gentle reminder:&lt;/P&gt;&lt;P&gt;As we haven't heard back from you for a while, could you please let us know if there is any update regarding the query or else, kindly let is know if we could close this thread at our end.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Shanmukh.SS&lt;/P&gt;&lt;BR /&gt;</description>
    <pubDate>Mon, 03 Oct 2022 10:21:59 GMT</pubDate>
    <dc:creator>ShanmukhS_Intel</dc:creator>
    <dc:date>2022-10-03T10:21:59Z</dc:date>
    <item>
      <title>PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1407361#M33523</link>
      <description>&lt;P&gt;I am creating a class that wraps the Intel PARDISO solver, to facilitate performing analysis and numerical factorization once and then performing the solve and iterative refinement repeatedly for any right-hand side later.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The goal is to create something equivalent to Matlab's &lt;FONT face="courier new,courier"&gt;decomposition&lt;/FONT&gt;&amp;nbsp;class (&lt;A title="Matlab decomposition" href="https://www.mathworks.com/help/matlab/ref/decomposition.html" target="_self"&gt;which can be seen here&lt;/A&gt;).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In my class, phase 12 of Intel PARDISO is performed during the instantiation of an object of the class, for a given input sparse CSR matrix, passed to the constructor. Then a "solve" method from the object can be called performing phase 33 (or by directly calling the object, using a functor). Phase -1 is performed in the destructor.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I only use &lt;FONT face="courier new,courier"&gt;pardiso_64&lt;/FONT&gt;, so static arrays of &lt;FONT face="courier new,courier"&gt;long long int pt[64]&lt;/FONT&gt; and &lt;FONT face="courier new,courier"&gt;long long int iparm[64]&lt;/FONT&gt; are member variables of each object, along with all of the other simple parameters. The matrix values&amp;nbsp;&lt;FONT face="courier new,courier"&gt;a&lt;/FONT&gt;, &lt;FONT face="courier new,courier"&gt;ia&lt;/FONT&gt; and &lt;FONT face="courier new,courier"&gt;ja&lt;/FONT&gt;, are stored as &lt;FONT face="courier new,courier"&gt;std::vector&lt;/FONT&gt;'s.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now, I would like to implement a &lt;FONT face="courier new,courier"&gt;copy&lt;/FONT&gt; method. I have tried implementing this method by initializing an object of the same type, then deep copying (i.e. copying by value) the attributes from &lt;FONT face="courier new,courier"&gt;*this&lt;/FONT&gt;&amp;nbsp;to the new object and returning it.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But I am having an issue. Suppose I create a first object called &lt;FONT face="courier new,courier"&gt;factor1&lt;/FONT&gt;. Then I create a copy, &lt;FONT face="courier new,courier"&gt;factor2 = factor1.copy()&lt;/FONT&gt;. The problem is that if &lt;FONT face="courier new,courier"&gt;factor2&lt;/FONT&gt; is deleted, then &lt;FONT face="courier new,courier"&gt;factor1&lt;/FONT&gt; can no longer be used, because phase -1 was called in &lt;FONT face="courier new,courier"&gt;factor2&lt;/FONT&gt;'s destructor. Although the member variable &lt;FONT face="courier new,courier"&gt;pt&lt;/FONT&gt; of &lt;FONT face="courier new,courier"&gt;factor2&lt;/FONT&gt; is different than &lt;FONT face="courier new,courier"&gt;factor1&lt;/FONT&gt;, their values are the same, and trying to call phase 33 in &lt;FONT face="courier new,courier"&gt;factor1&lt;/FONT&gt; causes a segfault.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Is there a way around this?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have a feeling the only way to implement this would be to create a reference counter. Then only call phase -1 when all copies and the original object are destroyed. Or maybe just not allow copies anyway...&lt;/P&gt;</description>
      <pubDate>Wed, 10 Aug 2022 12:46:15 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1407361#M33523</guid>
      <dc:creator>BrenoA</dc:creator>
      <dc:date>2022-08-10T12:46:15Z</dc:date>
    </item>
    <item>
      <title>Re:PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1408069#M33527</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Thank you for posting on Intel Communities.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Could you please share a sample reproducer regarding the implementation of the wrapper class, so that we could check it and guide you on the feasibility accordingly?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Shanmukh.SS&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Sat, 13 Aug 2022 16:10:37 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1408069#M33527</guid>
      <dc:creator>ShanmukhS_Intel</dc:creator>
      <dc:date>2022-08-13T16:10:37Z</dc:date>
    </item>
    <item>
      <title>Re: PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1408104#M33528</link>
      <description>&lt;P&gt;Okay! I mostly program in Cython/Python, but I've tried creating a sample project in C++, shown below.&lt;/P&gt;
&lt;P&gt;I'm getting an access violation in the destructor in this example.&lt;/P&gt;
&lt;P&gt;In the example below, a factor is created from a CSR matrix. A solution is obtained from a right-hand side with two columns. Then another factor is created by copying the first one. And a second solution is obtained from another right-hand side with two columns.&lt;/P&gt;
&lt;P&gt;I believe the access violation errors occurs when the second factor is attempted to be destroyed, since the pt paramter shares information between them.&lt;/P&gt;
&lt;P&gt;The results are printed out using std::format, thus requiring passing /std:c++20 to MSVC. But by commenting lines 6, 28 to 34 and 43 to 50, of "main.cpp", you can disable this requirement.&lt;/P&gt;
&lt;P&gt;I use Visual Studio 2019 and manually use MKL 2021.3 in x64 mode. Thus, /DMKL_ILP64 is passed to the compiler. And libiomp5md.dll is copied to the debug/release folders (how do I avoid copying them, add the intelOneAPI's version to PATH?).&lt;/P&gt;
&lt;P&gt;Firstly, the header file, "intelParSolver.h":&lt;/P&gt;
&lt;LI-CODE lang="cpp"&gt;#ifndef INTEL_PARDISO_CLASS
#define INTEL_PARDISO_CLASS
#include &amp;lt;vector&amp;gt;
using LLINT = long long int;

class ParSolver {
  public:
    LLINT m_idum;
    LLINT m_pt[64], m_iparm[64];
    LLINT m_maxfct, m_mnum, m_phase, m_error, m_msglvl, m_mtype;
    LLINT m_nrows, m_ncols;
    std::vector&amp;lt;LLINT&amp;gt; m_indices, m_indptr;
    std::vector&amp;lt;double&amp;gt; m_data;
    double m_ddum;

    ParSolver(std::vector&amp;lt;double&amp;gt; data_v, std::vector&amp;lt;LLINT&amp;gt; indices_v,
              std::vector&amp;lt;LLINT&amp;gt; indptr_v, LLINT nrows_v, LLINT ncols_v,
              bool is_symmetric_v, bool enable_maching_scaling_v);

    ~ParSolver();

    ParSolver copy();

    std::vector&amp;lt;double&amp;gt; solve_A(std::vector&amp;lt;double&amp;gt; &amp;amp;rhs,
      const LLINT n_rhs);

    std::vector&amp;lt;double&amp;gt;operator() (std::vector&amp;lt;double&amp;gt; &amp;amp;rhs,
      const LLINT n_rhs);

  private:
    ParSolver(ParSolver *Parent);  // for copying
    void factorize();
};

#endif&lt;/LI-CODE&gt;
&lt;P&gt;Then the implementation, "intelParSolver.cpp":&lt;/P&gt;
&lt;LI-CODE lang="cpp"&gt;#include "intelParSolver.h"
#include "mkl.h"
#include &amp;lt;stdexcept&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;cmath&amp;gt;

ParSolver::ParSolver(std::vector&amp;lt;double&amp;gt; data_v, std::vector&amp;lt;LLINT&amp;gt; indices_v,
    std::vector&amp;lt;LLINT&amp;gt; indptr_v, LLINT nrows_v, LLINT ncols_v,
    bool is_symmetric = false, bool enable_matching_scaling = true) :
    m_data(data_v), m_indices(indices_v), m_indptr(indptr_v), m_nrows(nrows_v),
    m_ncols(ncols_v), m_maxfct(1), m_mnum(1), m_phase(12), m_error(0),
    m_msglvl(0), m_mtype(0), m_idum(0), m_ddum(0.) {

  if (m_nrows != m_ncols) {
    throw std::length_error("The given matrix is not square");
  }

  int i;
  for (i = 0; i &amp;lt; 64; ++i) {
    m_pt[i] = 0;
    m_iparm[i] = 0;
  }

  if (is_symmetric) {
    m_mtype = 1;
  }
  else {
    m_mtype = 11;
  }

  m_iparm[0] = 1; m_iparm[1] = 3; m_iparm[7] = 2;
  m_iparm[9] = (m_mtype == 11) ? 13 : 8;
  if ((m_mtype == 11) || ((m_mtype == 1) &amp;amp;&amp;amp; enable_matching_scaling)) {
    m_iparm[10] = 1;
    m_iparm[12] = 1;
  }
  m_iparm[23] = (m_mtype == 11) ? 10 : 1;
  m_iparm[34] = 1;

  ParSolver::factorize();
}

// for copying
ParSolver::ParSolver(ParSolver *Parent) :
  m_data(Parent-&amp;gt;m_data), m_indices(Parent-&amp;gt;m_indices), m_indptr(Parent-&amp;gt;m_indptr),
  m_nrows(Parent-&amp;gt;m_nrows), m_ncols(Parent-&amp;gt;m_ncols), m_maxfct(Parent-&amp;gt;m_maxfct),
  m_mnum(Parent-&amp;gt;m_mnum), m_phase(Parent-&amp;gt;m_phase), m_error(Parent-&amp;gt;m_error),
  m_msglvl(Parent-&amp;gt;m_msglvl), m_mtype(Parent-&amp;gt;m_mtype), m_idum(Parent-&amp;gt;m_idum),
  m_ddum(Parent-&amp;gt;m_ddum) {
  for (auto i = 0; i &amp;lt; 64; ++i) {
    m_pt[i] = Parent-&amp;gt;m_pt[i];
    m_iparm[i] = Parent-&amp;gt;m_iparm[i];
  }
}

ParSolver::~ParSolver() {
  m_phase = -1;
  pardiso_64(m_pt, &amp;amp;m_maxfct, &amp;amp;m_mnum, &amp;amp;m_mtype, &amp;amp;m_phase, &amp;amp;m_nrows,
    m_data.data(), m_indptr.data(), m_indices.data(), &amp;amp;m_idum, &amp;amp;m_idum,
    m_iparm, &amp;amp;m_msglvl, &amp;amp;m_ddum, &amp;amp;m_ddum, &amp;amp;m_error);
  if (m_error != 0) {
    printf("Error number %lld when terminating the object.", m_error);
  }
}

void ParSolver::factorize() {
  m_phase = 12;
  pardiso_64(m_pt, &amp;amp;m_maxfct, &amp;amp;m_mnum, &amp;amp;m_mtype, &amp;amp;m_phase, &amp;amp;m_nrows,
    m_data.data(), m_indptr.data(), m_indices.data(), &amp;amp;m_idum, &amp;amp;m_idum,
    m_iparm, &amp;amp;m_msglvl, &amp;amp;m_ddum, &amp;amp;m_ddum, &amp;amp;m_error);
  if (m_error != 0) {
    throw std::runtime_error("Error number " + std::to_string(m_error) +
      " in analysis and numerical factorization phase.");
  }
}

std::vector&amp;lt;double&amp;gt; ParSolver::solve_A(std::vector&amp;lt;double&amp;gt; &amp;amp;rhs,
    const LLINT n_rhs=1) {
  double n_rhs_rows = (double) rhs.size()/(double) n_rhs;
  if (std::abs(n_rhs_rows - (double) m_nrows) &amp;gt; 1E-15) {
    throw std::length_error("The number of rows of the rhs (" + 
      std::to_string((int)n_rhs_rows) + ") is not " "equal to the size of the "
      "factored matrix (" + std::to_string(m_nrows) + ").");
  }

  std::vector&amp;lt;double&amp;gt; x = std::vector&amp;lt;double&amp;gt;(rhs.size(), 0.);

  m_phase = 33;
  m_iparm[11] = 0;

  pardiso_64(m_pt, &amp;amp;m_maxfct, &amp;amp;m_mnum, &amp;amp;m_mtype, &amp;amp;m_phase, &amp;amp;m_nrows,
    m_data.data(), m_indptr.data(), m_indices.data(), &amp;amp;m_idum, &amp;amp;n_rhs,
    m_iparm, &amp;amp;m_msglvl, rhs.data(), x.data(), &amp;amp;m_error);
  if (m_error != 0) {
    throw std::runtime_error("Error number " + std::to_string(m_error) +
      " in solution phase.");
  }

  return x;
}

std::vector&amp;lt;double&amp;gt; ParSolver::operator()(std::vector&amp;lt;double&amp;gt;&amp;amp; rhs,
  const LLINT n_rhs=1) {
  return this-&amp;gt;solve_A(rhs, n_rhs);
}

ParSolver ParSolver::copy() {
  return ParSolver(this);
}&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;And now the main function with an example, "main.cpp":&lt;/P&gt;
&lt;LI-CODE lang="cpp"&gt;#include "intelParSolver.h"
#include &amp;lt;vector&amp;gt;
#include "mkl_service.h"
#include "omp.h"
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;format&amp;gt;  // C++20

int main() {
	MKL_Set_Dynamic(0);
	MKL_Set_Num_Threads(4);
	omp_set_dynamic(0);
	omp_set_num_threads(1);

	auto data = std::vector&amp;lt;double&amp;gt;{10., -2., 8., -3., -2., 9., -3., 7.};
	auto indices = std::vector&amp;lt;long long int&amp;gt;{0, 2, 1, 3, 0, 2, 1, 3};
	auto indptr = std::vector&amp;lt;long long int&amp;gt;{ 0, 2, 4, 6, 8 };
	long long int nrows = 4, ncols = 4;
	bool is_symmetric = true, enable_maching_scaling = false;

	auto factor = ParSolver(data, indices, indptr, nrows, ncols,
                          is_symmetric, enable_maching_scaling);

	auto b = std::vector&amp;lt;double&amp;gt;{ 0., 1., 2., 3., 4., 5., 6., 7. };

	long long int nrhs = 2;
	auto x = factor(b, nrhs);

	std::cout &amp;lt;&amp;lt; "Solution matrix:\n";
	for (auto i = 0; i &amp;lt; nrows; ++i) {
		for (auto j = 0; j &amp;lt; nrhs; ++j) {
			std::cout &amp;lt;&amp;lt; std::format(" {:4.3f},", x[i + nrows*j]);
		}
		std::cout &amp;lt;&amp;lt; '\n';
	}

	auto factor2 = factor.copy();

	auto b2 = std::vector&amp;lt;double&amp;gt;(b);
	for (auto&amp;amp; b2i : b2) {
		b2i += 10.;
	}

	auto x2 = factor2(b2, nrhs);
	std::cout &amp;lt;&amp;lt; "\nSolution matrix 2:\n";
	for (auto i = 0; i &amp;lt; nrows; ++i) {
		for (auto j = 0; j &amp;lt; nrhs; ++j) {
			std::cout &amp;lt;&amp;lt; std::format(" {:4.3f},", x2[i + nrows*j]);
		}
		std::cout &amp;lt;&amp;lt; '\n';
	}
	return 0;
}
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;The created matrix is:&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;10., 0.,-2., 0.
 0., 8., 0.,-3.
-2., 0., 9., 0.
 0.,-3., 0., 7.&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;The results are:&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;Solution matrix:
 0.047, 0.558,
 0.340, 1.191,
 0.233, 0.791,
 0.574, 1.511,

Solution matrix 2:
 1.326, 1.837,
 2.468, 3.319,
 1.628, 2.186,
 2.915, 3.851,&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 13 Aug 2022 22:16:55 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1408104#M33528</guid>
      <dc:creator>BrenoA</dc:creator>
      <dc:date>2022-08-13T22:16:55Z</dc:date>
    </item>
    <item>
      <title>Re:PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1409907#M33557</link>
      <description>&lt;P&gt;Hi BrenoA,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Thanks for sharing the reproducer and necessary steps.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;We have tried compiling and running the source code. However, unfortunately, we faced an exception while running it and we are working on the same. We will get back to you soon with an update on this.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Shanmukh.SS&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Mon, 22 Aug 2022 17:24:20 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1409907#M33557</guid>
      <dc:creator>ShanmukhS_Intel</dc:creator>
      <dc:date>2022-08-22T17:24:20Z</dc:date>
    </item>
    <item>
      <title>Re: PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1410405#M33565</link>
      <description>&lt;P&gt;Hello ShanmukhS,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I can try helping you to debug. Could you share the exception/error message, after compiling in debug mode with /Od?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I should warn you that I haven't tested whether the exceptions I throw in the above code work.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best regards,&lt;/P&gt;
&lt;P&gt;Breno&lt;/P&gt;</description>
      <pubDate>Wed, 24 Aug 2022 14:12:20 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1410405#M33565</guid>
      <dc:creator>BrenoA</dc:creator>
      <dc:date>2022-08-24T14:12:20Z</dc:date>
    </item>
    <item>
      <title>Re:PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1412162#M33598</link>
      <description>&lt;P&gt;Hi Breno,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Please find the screenshot for exception raised below.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG src="https://isvc.file.force.com/servlet/rtaImage?refid=0EM4U000002j6WG" /&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Regrets for the delay in response due to a technical issue.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Shanmukh.SS&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Wed, 18 Feb 2026 14:36:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1412162#M33598</guid>
      <dc:creator>ShanmukhS_Intel</dc:creator>
      <dc:date>2026-02-18T14:36:00Z</dc:date>
    </item>
    <item>
      <title>Re: PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1412170#M33599</link>
      <description>&lt;P&gt;Hello Shanmukh,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I cannot load the image! When trying to load it by right-clicking and selecting "Open image in a new tab", I get a "Single Sign-On Error" by salesforce, with the error message:&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;"We can't log you in because of an issue with single sign-on. Contact your Salesforce admin for help."&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Kind regards,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Breno&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 01 Sep 2022 13:28:53 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1412170#M33599</guid>
      <dc:creator>BrenoA</dc:creator>
      <dc:date>2022-09-01T13:28:53Z</dc:date>
    </item>
    <item>
      <title>Re: PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1412791#M33617</link>
      <description>&lt;P&gt;Hi Breno,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regrets for the inconvenience caused.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'm attaching the exception captured screenshot with this thread. Could you please let me know if you are able to open and view it?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best Regards,&lt;/P&gt;
&lt;P&gt;Shanmukh.SS&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 05 Sep 2022 12:48:49 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1412791#M33617</guid>
      <dc:creator>ShanmukhS_Intel</dc:creator>
      <dc:date>2022-09-05T12:48:49Z</dc:date>
    </item>
    <item>
      <title>Re: PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1412847#M33618</link>
      <description>&lt;P&gt;Hello Shanmukh,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Yes, I have been able to open and view it.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Indeed, this is exactly the problem that I am having. If you set a breakpoint in "return 0;" (line 51 of main.cpp) and run in debug mode, no exceptions will be thrown and you will see the desired output.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The exception occurs at the ending of main.cpp, since this is when the objects become out-of-scope and their destructors are called. Specifically, the exception occurs after the destructor of the second object (the "copy", or &lt;FONT color="#808080"&gt;factor2&lt;/FONT&gt;) is called. I believe this happens because a deep copy is not performed, only a shallow copy.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I think that after the first object's destructor is called, some of the arrays (maybe the pt array?) actually shares data with its copy. So calling the second object's destructor is like trying to call pardiso_64 with phase=-1 twice.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you comment out lines 36 to 50 in main.cpp, no exceptions are thrown.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So the question is then, how to perform an actual deep copy of the proposed object? In such a manner that clearing the pardiso handler pt of one object does not influence its copies.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Kind regards,&lt;/P&gt;
&lt;P&gt;Breno&lt;/P&gt;</description>
      <pubDate>Mon, 05 Sep 2022 15:29:29 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1412847#M33618</guid>
      <dc:creator>BrenoA</dc:creator>
      <dc:date>2022-09-05T15:29:29Z</dc:date>
    </item>
    <item>
      <title>Re:PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1414487#M33648</link>
      <description>&lt;P&gt;Hi Breno,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Could you please try compiling and executing the code on Intel oneAPI command prompt and let us know if this works fine? Kindly let us know if you need any details regarding the same.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Best Regards.&lt;/P&gt;&lt;P&gt;Shanmukh.SS&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Tue, 13 Sep 2022 16:30:31 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1414487#M33648</guid>
      <dc:creator>ShanmukhS_Intel</dc:creator>
      <dc:date>2022-09-13T16:30:31Z</dc:date>
    </item>
    <item>
      <title>Re: PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1414503#M33649</link>
      <description>&lt;P&gt;Hello ShanmukhS,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have performed what you asked.&amp;nbsp;As expected, it doesn't do anything, the problem still persists.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To compile and execute the code on Intel oneAPI x64 command prompt, you have to:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;rename "intelParSolver.h" to "intelParSolver.hpp"&lt;/LI&gt;
&lt;LI&gt;change &lt;FONT face="courier new,courier"&gt;#include "intelParSolver.h"&lt;/FONT&gt; to&amp;nbsp;&lt;FONT face="courier new,courier"&gt;#include "intelParSolver.hpp"&lt;/FONT&gt;&amp;nbsp;in both "intelParSolver.cpp" and "main.cpp"&lt;/LI&gt;
&lt;LI&gt;Put the files in a new folder&lt;/LI&gt;
&lt;LI&gt;Open the intelOneApi x64 command prompt and &lt;FONT face="courier new,courier"&gt;cd&lt;/FONT&gt; into the new folder&lt;/LI&gt;
&lt;LI&gt;Compile with "&lt;FONT face="courier new,courier"&gt;icx /Qstd=c++20 /Qxhost /Qiopenmp /DMKL_ILP64 -I"%MKLROOT%\include" intelParSolver.hpp intelParSolver.cpp main.cpp /link mkl_intel_ilp64.lib mkl_intel_thread.lib mkl_core.lib libiomp5md.lib&lt;/FONT&gt;"&lt;/LI&gt;
&lt;LI&gt;Run with "intelParSolver"&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;The only difference is that the command prompt doesn't show the error.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you have trouble visualizing the problem, use the modified attached files.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In the modified file, I change the destructor to the following:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="cpp"&gt;ParSolver::~ParSolver() {
  m_phase = -1;
  pardiso_64(m_pt, &amp;amp;m_maxfct, &amp;amp;m_mnum, &amp;amp;m_mtype, &amp;amp;m_phase, &amp;amp;m_nrows,
    m_data.data(), m_indptr.data(), m_indices.data(), &amp;amp;m_idum, &amp;amp;m_idum,
    m_iparm, &amp;amp;m_msglvl, &amp;amp;m_ddum, &amp;amp;m_ddum, &amp;amp;m_error);
  if (m_error != 0) {
    printf("Error number %lld when terminating the object.\n", m_error);
  }
  printf("Called a desctructor\n");  // NEW LINE ADDED
}&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now the output after running the executable file intelParSolver should be:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;Solution matrix:
 0.047, 0.558,
 0.340, 1.191,
 0.233, 0.791,
 0.574, 1.511,

Solution matrix 2:
 1.326, 1.837,
 2.468, 3.319,
 1.628, 2.186,
 2.915, 3.851,
Called a desctructor&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Theoretically, "Called a destructor" should have appeared twice, not only once. And the string "Finished successfully" should have been shown.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It can be seen that, even with a try-catch block in main.cpp, the program terminates prematurely. This probably means some form of segfault is occuring. As explained previously, this means that the new factor is not deep copying the original factor. After the original factor is destroyed, all information is lost in both the original and the copied factor, and pardiso_64 is called with phase=-1 for the same pt array.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This can all be much more easily seen in Visual Studio, as originally posted.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The question, then, is how to "copy" a pt array, without sharing information of the original factor.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards,&lt;/P&gt;
&lt;P&gt;Breno&lt;/P&gt;</description>
      <pubDate>Tue, 13 Sep 2022 18:04:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1414503#M33649</guid>
      <dc:creator>BrenoA</dc:creator>
      <dc:date>2022-09-13T18:04:59Z</dc:date>
    </item>
    <item>
      <title>Re: Re:PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1414506#M33650</link>
      <description>&lt;P&gt;Hello ShanmukhS,&lt;/P&gt;
&lt;P aria-hidden="true"&gt;For some reason, my reply was marked as spam, so I am replying again.&lt;/P&gt;
&lt;P&gt;I have performed what you asked.&amp;nbsp;As expected, it doesn't do anything, the problem still persists.&lt;/P&gt;
&lt;P&gt;To compile and execute the code on Intel oneAPI x64 command prompt, you have to:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;rename "intelParSolver.h" to "intelParSolver.hpp"&lt;/LI&gt;
&lt;LI&gt;change #include "intelParSolver.h" to&amp;nbsp;&lt;FONT face="courier new,courier"&gt;#include "intelParSolver.hpp"&lt;/FONT&gt;&amp;nbsp;in both "intelParSolver.cpp" and "main.cpp"&lt;/LI&gt;
&lt;LI&gt;Put the files in a new folder Open the intelOneApi x64 command prompt and &lt;FONT face="courier new,courier"&gt;cd&lt;/FONT&gt; into the new folder&lt;/LI&gt;
&lt;LI&gt;Compile with "&lt;FONT face="courier new,courier"&gt;icx /Qstd=c++20 /Qxhost /Qiopenmp /DMKL_ILP64 -I"%MKLROOT%\include" intelParSolver.hpp intelParSolver.cpp main.cpp /link mkl_intel_ilp64.lib mkl_intel_thread.lib mkl_core.lib libiomp5md.lib&lt;/FONT&gt;"&lt;/LI&gt;
&lt;LI&gt;Run with "intelParSolver"&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;The only difference is that the command prompt doesn't show the error.&lt;/P&gt;
&lt;P&gt;If you have trouble visualizing the problem, use the modified attached files.&lt;/P&gt;
&lt;P&gt;In the modified file, I change the destructor to the following:&lt;/P&gt;
&lt;LI-CODE lang="cpp"&gt;ParSolver::~ParSolver() {
  m_phase = -1;
  pardiso_64(m_pt, &amp;amp;m_maxfct, &amp;amp;m_mnum, &amp;amp;m_mtype, &amp;amp;m_phase, &amp;amp;m_nrows,
    m_data.data(), m_indptr.data(), m_indices.data(), &amp;amp;m_idum, &amp;amp;m_idum,
    m_iparm, &amp;amp;m_msglvl, &amp;amp;m_ddum, &amp;amp;m_ddum, &amp;amp;m_error);
  if (m_error != 0) {
    printf("Error number %lld when terminating the object.\n", m_error);
  }
  printf("Called a desctructor\n");
}&lt;/LI-CODE&gt;
&lt;P&gt;Now the output after running the executable file intelParSolver should be:&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;Solution matrix:
 0.047, 0.558,
 0.340, 1.191,
 0.233, 0.791,
 0.574, 1.511,

 Solution matrix 2:
 1.326, 1.837,
 2.468, 3.319,
 1.628, 2.186,
 2.915, 3.851, 
Called a desctructor
&lt;/LI-CODE&gt;
&lt;P&gt;Theoretically, "Called a destructor" should have appeared twice, not only once. And the string "Finished successfully" should have been shown.&lt;/P&gt;
&lt;P&gt;It can be seen that, even with a try-catch block in main.cpp, the program terminates prematurely. This probably means some form of segfault is occuring. As explained previously, this means that the new factor is not deep copying the original factor. After the original factor is destroyed, all information is lost in both the original and the copied factor, and pardiso_64 is called with phase=-1 for the same pt array.&lt;/P&gt;
&lt;P&gt;This can all be much more easily seen in Visual Studio, as originally posted.&lt;/P&gt;
&lt;P&gt;The question, then, is how to "copy" a pt array, without sharing information of the original factor.&lt;/P&gt;
&lt;P&gt;Regards,&lt;/P&gt;
&lt;P&gt;Breno&lt;/P&gt;</description>
      <pubDate>Tue, 13 Sep 2022 18:19:17 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1414506#M33650</guid>
      <dc:creator>BrenoA</dc:creator>
      <dc:date>2022-09-13T18:19:17Z</dc:date>
    </item>
    <item>
      <title>Re:PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1416325#M33690</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Thanks for the details. We are discussing the issue internally. We will get back to you soon with an update.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;shanmukh.SS&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Wed, 21 Sep 2022 17:48:25 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1416325#M33690</guid>
      <dc:creator>ShanmukhS_Intel</dc:creator>
      <dc:date>2022-09-21T17:48:25Z</dc:date>
    </item>
    <item>
      <title>Re: PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1416963#M33699</link>
      <description>&lt;P&gt;Hi!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Unfortunately for me, this issue caught my eye and to clear my conscience, as a former Intel MKL developer I feel the urge to answer the question. It appears to be rather a simple question in fact.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Short answer: no, deep copy is not possible except by a terrible way described below.&lt;/P&gt;
&lt;P&gt;Longer answer: deep copy can be done through dumping the handle onto the disk pardiso_handle_store() + copying files + pardiso_handle_restore() via&amp;nbsp;&lt;A href="https://www.intel.com/content/www/us/en/develop/documentation/onemkl-developer-reference-c/top/sparse-solver-routines/onemkl-pardiso-parallel-direct-sparse-solver-iface/pardiso-handle-store.html" target="_blank"&gt;https://www.intel.com/content/www/us/en/develop/documentation/onemkl-developer-reference-c/top/sparse-solver-routines/onemkl-pardiso-parallel-direct-sparse-solver-iface/pardiso-handle-store.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;I don't think this is a good solution so I'd think twice before using it.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;General comment: I don't think that deep copying the handle is a reasonable idea, this object is not really meant to be deep-copied except if you have some really complicated workflows.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best,&lt;BR /&gt;Kirill&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 23 Sep 2022 18:32:30 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1416963#M33699</guid>
      <dc:creator>Kirill_V_Intel</dc:creator>
      <dc:date>2022-09-23T18:32:30Z</dc:date>
    </item>
    <item>
      <title>Re: PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1416965#M33700</link>
      <description>&lt;P&gt;Hello Kirill,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you for your answer! Indeed, I have already tried this out and was trying to avoid writing to disk.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In this case, I believe a reference counting scheme could work. Do you know if a smart pointer could be used for this? For example, a&amp;nbsp;&lt;FONT face="courier new,courier" style="background-color: #e0e0e0;" color="#000000"&gt;std::shared_pointer&lt;/FONT&gt;. Though, I do not know how to call the destructor (i.e. phase=-1) only when the reference counter reaches 0. And I do not know if there is a way for the &lt;FONT face="courier new,courier" style="background-color: #e0e0e0;" color="#000000"&gt;copy()&lt;/FONT&gt; method to return the &lt;FONT face="courier new,courier" style="background-color: #e0e0e0;" color="#000000"&gt;std::shared_pointer&lt;/FONT&gt;&amp;nbsp;automatically.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'll have to study a bit.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you again for your insight.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best,&lt;/P&gt;
&lt;P&gt;Breno&lt;/P&gt;</description>
      <pubDate>Fri, 23 Sep 2022 18:52:25 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1416965#M33700</guid>
      <dc:creator>BrenoA</dc:creator>
      <dc:date>2022-09-23T18:52:25Z</dc:date>
    </item>
    <item>
      <title>Re: PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1416967#M33701</link>
      <description>&lt;P&gt;Hi!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Not sure about the very last question, but as for doing a custom operation when the reference counter reaches 0, std::shared_ptr has a "Deleter" per&amp;nbsp;&lt;A href="https://en.cppreference.com/w/cpp/memory/shared_ptr/shared_ptr" target="_blank"&gt;https://en.cppreference.com/w/cpp/memory/shared_ptr/shared_ptr&lt;/A&gt;&amp;nbsp;which should do what you want.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best,&lt;BR /&gt;Kirill&lt;/P&gt;</description>
      <pubDate>Fri, 23 Sep 2022 18:57:34 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1416967#M33701</guid>
      <dc:creator>Kirill_V_Intel</dc:creator>
      <dc:date>2022-09-23T18:57:34Z</dc:date>
    </item>
    <item>
      <title>Re:PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1419021#M33729</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;A gentle reminder:&lt;/P&gt;&lt;P&gt;As we haven't heard back from you for a while, could you please let us know if there is any update regarding the query or else, kindly let is know if we could close this thread at our end.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Shanmukh.SS&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Mon, 03 Oct 2022 10:21:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1419021#M33729</guid>
      <dc:creator>ShanmukhS_Intel</dc:creator>
      <dc:date>2022-10-03T10:21:59Z</dc:date>
    </item>
    <item>
      <title>Re: PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1419025#M33730</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am still trying to implement the solution discussed with Kirill.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And as a gentle reminder, please post what you have discussed internally.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The issue still hasn't been solved.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The kindest regards,&lt;/P&gt;
&lt;P&gt;Breno&lt;/P&gt;</description>
      <pubDate>Mon, 03 Oct 2022 10:35:57 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1419025#M33730</guid>
      <dc:creator>BrenoA</dc:creator>
      <dc:date>2022-10-03T10:35:57Z</dc:date>
    </item>
    <item>
      <title>Re: PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1420033#M33744</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A gentle reminder:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;I am still trying to implement the solution discussed with Kirill. And as a gentle reminder, please post what you have discussed internally.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;gt;&amp;gt;Sure, Thanks for the update.&amp;nbsp;Regarding the discussion, We have forwarded your query details and our findings to the corresponding team and the developer has reached out to you suggesting workarounds. Hence, we would like to know if there is any update regarding the issue.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best Regards,&lt;/P&gt;
&lt;P&gt;Shanmukh.SS&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 26 Oct 2022 16:49:30 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1420033#M33744</guid>
      <dc:creator>ShanmukhS_Intel</dc:creator>
      <dc:date>2022-10-26T16:49:30Z</dc:date>
    </item>
    <item>
      <title>Re:PARDISO: Is it possible to create a deep copy of the _MKL_DSS_HANDLE_t pt for a class?</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1425222#M33801</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;We assume that your issue is resolved. If you need any additional information, please post a new question as this thread will no longer be monitored by Intel.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Shnmukh.SS&lt;/P&gt;&lt;BR /&gt;</description>
      <pubDate>Wed, 26 Oct 2022 16:44:46 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/PARDISO-Is-it-possible-to-create-a-deep-copy-of-the-MKL-DSS/m-p/1425222#M33801</guid>
      <dc:creator>ShanmukhS_Intel</dc:creator>
      <dc:date>2022-10-26T16:44:46Z</dc:date>
    </item>
  </channel>
</rss>

