<?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 C# mkl_alloc mkl_dcscmv sparse matrix/vector multiply in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/C-mkl-alloc-mkl-dcscmv-sparse-matrix-vector-multiply/m-p/806548#M3468</link>
    <description>I'm trying to usemkl_dcscmv with byte aligned storage. Right now the function returns but doesn't appear to do any work. If I pass in a non-zero result vector it emerges unchanged.&lt;DIV&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;DIV&gt;This is the test class&lt;DIV&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;[csharp] public class mkl_dcscmv
    {
        private mkl_dcscmv() { }
        unsafe public static void Go(string[] args)
        {
            //create 4 arrays for storage of matrix
            UIntPtr valSize = new UIntPtr(6);
            int alignment = 32;

            double* valP = (double*) MKL.mkl_malloc(valSize, alignment).ToPointer();
            int* rowIndexP = (int*)MKL.mkl_malloc(valSize, alignment).ToPointer();

            UIntPtr indexSize = new System.UIntPtr(3);
           
            int* colbP = (int*) MKL.mkl_malloc(indexSize, alignment).ToPointer();
            int* coleP = (int*) MKL.mkl_malloc(indexSize, alignment).ToPointer();

            //create input array
            double* xP = (double*) MKL.mkl_malloc(indexSize, alignment).ToPointer();

            //create result array
            double* resultP = (double*) MKL.mkl_malloc(indexSize, alignment).ToPointer();

            //create matrix description
            char[] matdesc = new char[] { 'G', ' ', ' ', 'C' }; //general, zero based indexing

            //populate the arrays
            double[] val = new double[]{1,3,4,5,7,6};
            int[] rowI = new int[]{1,2,0,2,1,2};
            int[] colb = new int[]{0,2,4};
            int[]cole = new int[]{2,4,6};

            for (int i = 0; i &amp;lt; val.Length; i++)
            {
                *(valP + i) = val&lt;I&gt;;
                *(rowIndexP + i) = rowI&lt;I&gt;;

                Console.WriteLine(*(valP + i) + "\t" + *(rowIndexP + i));
            }

            for (int i = 0; i &amp;lt; colb.Length; i++)
            {
                *(coleP + i) = cole&lt;I&gt;;
                *(colbP + i) = colb&lt;I&gt;;
                *(xP + i ) = 3;
                *(resultP + i) = 0;
                Console.WriteLine(*(coleP + i) + "\t" + *(colbP + i));
            }

            int TransA = CBLAS.TRANSPOSE.NoTrans;
            int rows = 3;
            int cols = 3;
            double alpha = 2.0, beta = 1.0;
            CBLAS.mkl_dcscmv(ref TransA, ref rows, ref cols, ref alpha, matdesc, valP, rowIndexP, colbP, coleP, xP, ref beta, resultP);
            //CBLAS.mkl_dcscmv( TransA,  rows,  cols,  alpha, matdesc, valP, rowIndexP, colbP, coleP, xP,  beta, resultP);

            for (int i = 0; i &amp;lt; rows; i++)
                Console.WriteLine(*(resultP + i));
        }

    }[/csharp] &lt;BR /&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/SPAN&gt;&lt;DIV&gt;Now the support/wrapper classes:&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;[csharp]namespace mkl 
{
    /** CBLAS wrappers */
	unsafe public sealed class CBLAS
	{
		private CBLAS() {}

		/** Constants for CBLAS_ORDER enum, file "mkl_cblas.h" */
		public sealed class ORDER 
		{
			private ORDER() {}
			public static int RowMajor=101;  /* row-major arrays */
			public static int ColMajor=102;  /* column-major arrays */
		}

		/** Constants for CBLAS_TRANSPOSE enum, file "mkl_cblas.h" */
		public sealed class TRANSPOSE 
		{
			private TRANSPOSE() {}
			public static int NoTrans  =111; /* trans='N' */
			public static int Trans    =112; /* trans='T' */
			public static int ConjTrans=113; /* trans='C' */
		}

    &lt;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;    unsafe public static void mkl_dcscmv(ref int TransA, ref int rows, ref int cols, ref double alpha,
            char[] matdescra, double* values, int* rowIndex, int* colb,
            int* cole, double* x, ref double beta, double* y)
        {
            CBLASNative.mkl_dcscmv(ref TransA, ref rows, ref cols, ref alpha,
             matdescra, values, rowIndex, colb,
             cole, x, ref beta, y);
        }
        
	}

	/** CBLAS native declarations */
	[SuppressUnmanagedCodeSecurity]
	unsafe internal sealed class CBLASNative
	{
		private CBLASNative() {}

        [DllImport("mkl_rt", CallingConvention = CallingConvention.Cdecl,
             ExactSpelling = true, SetLastError = false)]
        internal static extern void mkl_dcscmv(
            ref int TransA, ref int rows, ref int cols, ref double alpha,
            [In] char[] matdescra, [In] double* values,
            [In] int* rowIndex, [In] int* colb,
            [In] int* cole, [In] double* x,
            ref double beta, [In, Out] double* y);
 
	}
	public sealed class MKL
	{
        public static UIntPtr mkl_malloc(UIntPtr size, int alignment)
        {
            return MKLNative.MKL_malloc(size, alignment);
        }
        public static void mkl_free(UIntPtr ptr)
        {
            MKLNative.MKL_free(ptr);
        }
	}

	[SuppressUnmanagedCodeSecurity]
	internal sealed class MKLNative 
	{
        [DllImport("mkl_rt", CallingConvention = CallingConvention.Cdecl,
             ExactSpelling = true, SetLastError = false)]
        internal static extern UIntPtr MKL_malloc(UIntPtr size, int alignment);
        [DllImport("mkl_rt", CallingConvention = CallingConvention.Cdecl,
             ExactSpelling = true, SetLastError = false)]
        internal static extern void MKL_free(UIntPtr ptr);
	}
}[/csharp] &lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Sat, 18 Feb 2012 04:38:04 GMT</pubDate>
    <dc:creator>aolney</dc:creator>
    <dc:date>2012-02-18T04:38:04Z</dc:date>
    <item>
      <title>C# mkl_alloc mkl_dcscmv sparse matrix/vector multiply</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/C-mkl-alloc-mkl-dcscmv-sparse-matrix-vector-multiply/m-p/806548#M3468</link>
      <description>I'm trying to usemkl_dcscmv with byte aligned storage. Right now the function returns but doesn't appear to do any work. If I pass in a non-zero result vector it emerges unchanged.&lt;DIV&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;DIV&gt;This is the test class&lt;DIV&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;[csharp] public class mkl_dcscmv
    {
        private mkl_dcscmv() { }
        unsafe public static void Go(string[] args)
        {
            //create 4 arrays for storage of matrix
            UIntPtr valSize = new UIntPtr(6);
            int alignment = 32;

            double* valP = (double*) MKL.mkl_malloc(valSize, alignment).ToPointer();
            int* rowIndexP = (int*)MKL.mkl_malloc(valSize, alignment).ToPointer();

            UIntPtr indexSize = new System.UIntPtr(3);
           
            int* colbP = (int*) MKL.mkl_malloc(indexSize, alignment).ToPointer();
            int* coleP = (int*) MKL.mkl_malloc(indexSize, alignment).ToPointer();

            //create input array
            double* xP = (double*) MKL.mkl_malloc(indexSize, alignment).ToPointer();

            //create result array
            double* resultP = (double*) MKL.mkl_malloc(indexSize, alignment).ToPointer();

            //create matrix description
            char[] matdesc = new char[] { 'G', ' ', ' ', 'C' }; //general, zero based indexing

            //populate the arrays
            double[] val = new double[]{1,3,4,5,7,6};
            int[] rowI = new int[]{1,2,0,2,1,2};
            int[] colb = new int[]{0,2,4};
            int[]cole = new int[]{2,4,6};

            for (int i = 0; i &amp;lt; val.Length; i++)
            {
                *(valP + i) = val&lt;I&gt;;
                *(rowIndexP + i) = rowI&lt;I&gt;;

                Console.WriteLine(*(valP + i) + "\t" + *(rowIndexP + i));
            }

            for (int i = 0; i &amp;lt; colb.Length; i++)
            {
                *(coleP + i) = cole&lt;I&gt;;
                *(colbP + i) = colb&lt;I&gt;;
                *(xP + i ) = 3;
                *(resultP + i) = 0;
                Console.WriteLine(*(coleP + i) + "\t" + *(colbP + i));
            }

            int TransA = CBLAS.TRANSPOSE.NoTrans;
            int rows = 3;
            int cols = 3;
            double alpha = 2.0, beta = 1.0;
            CBLAS.mkl_dcscmv(ref TransA, ref rows, ref cols, ref alpha, matdesc, valP, rowIndexP, colbP, coleP, xP, ref beta, resultP);
            //CBLAS.mkl_dcscmv( TransA,  rows,  cols,  alpha, matdesc, valP, rowIndexP, colbP, coleP, xP,  beta, resultP);

            for (int i = 0; i &amp;lt; rows; i++)
                Console.WriteLine(*(resultP + i));
        }

    }[/csharp] &lt;BR /&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/SPAN&gt;&lt;DIV&gt;Now the support/wrapper classes:&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;[csharp]namespace mkl 
{
    /** CBLAS wrappers */
	unsafe public sealed class CBLAS
	{
		private CBLAS() {}

		/** Constants for CBLAS_ORDER enum, file "mkl_cblas.h" */
		public sealed class ORDER 
		{
			private ORDER() {}
			public static int RowMajor=101;  /* row-major arrays */
			public static int ColMajor=102;  /* column-major arrays */
		}

		/** Constants for CBLAS_TRANSPOSE enum, file "mkl_cblas.h" */
		public sealed class TRANSPOSE 
		{
			private TRANSPOSE() {}
			public static int NoTrans  =111; /* trans='N' */
			public static int Trans    =112; /* trans='T' */
			public static int ConjTrans=113; /* trans='C' */
		}

    &lt;SPAN style="white-space: pre;"&gt;	&lt;/SPAN&gt;    unsafe public static void mkl_dcscmv(ref int TransA, ref int rows, ref int cols, ref double alpha,
            char[] matdescra, double* values, int* rowIndex, int* colb,
            int* cole, double* x, ref double beta, double* y)
        {
            CBLASNative.mkl_dcscmv(ref TransA, ref rows, ref cols, ref alpha,
             matdescra, values, rowIndex, colb,
             cole, x, ref beta, y);
        }
        
	}

	/** CBLAS native declarations */
	[SuppressUnmanagedCodeSecurity]
	unsafe internal sealed class CBLASNative
	{
		private CBLASNative() {}

        [DllImport("mkl_rt", CallingConvention = CallingConvention.Cdecl,
             ExactSpelling = true, SetLastError = false)]
        internal static extern void mkl_dcscmv(
            ref int TransA, ref int rows, ref int cols, ref double alpha,
            [In] char[] matdescra, [In] double* values,
            [In] int* rowIndex, [In] int* colb,
            [In] int* cole, [In] double* x,
            ref double beta, [In, Out] double* y);
 
	}
	public sealed class MKL
	{
        public static UIntPtr mkl_malloc(UIntPtr size, int alignment)
        {
            return MKLNative.MKL_malloc(size, alignment);
        }
        public static void mkl_free(UIntPtr ptr)
        {
            MKLNative.MKL_free(ptr);
        }
	}

	[SuppressUnmanagedCodeSecurity]
	internal sealed class MKLNative 
	{
        [DllImport("mkl_rt", CallingConvention = CallingConvention.Cdecl,
             ExactSpelling = true, SetLastError = false)]
        internal static extern UIntPtr MKL_malloc(UIntPtr size, int alignment);
        [DllImport("mkl_rt", CallingConvention = CallingConvention.Cdecl,
             ExactSpelling = true, SetLastError = false)]
        internal static extern void MKL_free(UIntPtr ptr);
	}
}[/csharp] &lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Sat, 18 Feb 2012 04:38:04 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/C-mkl-alloc-mkl-dcscmv-sparse-matrix-vector-multiply/m-p/806548#M3468</guid>
      <dc:creator>aolney</dc:creator>
      <dc:date>2012-02-18T04:38:04Z</dc:date>
    </item>
    <item>
      <title>C# mkl_alloc mkl_dcscmv sparse matrix/vector multiply</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/C-mkl-alloc-mkl-dcscmv-sparse-matrix-vector-multiply/m-p/806549#M3469</link>
      <description>&lt;DIV id="_mcePaste"&gt;Did you check the plane "C" code with mkl_dcscmv?&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;compiling and executing your exampe, I got:&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;1    1&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;3    2&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;4    0&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;5    2&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;7    1&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;6    2&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;2    0&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;4    2&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;6    4&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;MKL ERROR: Parameter 1 was incorrect on entry to MKL_DCSCMV&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;0&lt;/DIV&gt;0</description>
      <pubDate>Sun, 19 Feb 2012 15:59:43 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/C-mkl-alloc-mkl-dcscmv-sparse-matrix-vector-multiply/m-p/806549#M3469</guid>
      <dc:creator>Gennady_F_Intel</dc:creator>
      <dc:date>2012-02-19T15:59:43Z</dc:date>
    </item>
    <item>
      <title>C# mkl_alloc mkl_dcscmv sparse matrix/vector multiply</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/C-mkl-alloc-mkl-dcscmv-sparse-matrix-vector-multiply/m-p/806550#M3470</link>
      <description>Hi&lt;BR /&gt;&lt;BR /&gt;the cblas sample in &lt;A href="http://software.intel.com/en-us/articles/using-intel-mkl-in-your-c-program/"&gt;http://software.intel.com/en-us/articles/using-intel-mkl-in-your-c-program/&lt;/A&gt;mainly for c interface, so have a cblas wraper. It works fine when call cblas function. but tt seems bring a little pinprick when you call fortran interface function mkl_dcscmv(). &lt;BR /&gt;&lt;BR /&gt;The cblas wrapper is not needed actually, for example, the below code, you will get right result. &lt;BR /&gt;&lt;A href="http://software.intel.com/en-us/forums/showthread.php?t=85690"&gt;http://software.intel.com/en-us/forums/showthread.php?t=85690&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;Best Regards,&lt;BR /&gt;Ying&lt;BR /&gt;&lt;BR /&gt;&lt;P&gt;using System;&lt;BR /&gt;using System.Security;&lt;BR /&gt;using System.Runtime.InteropServices;&lt;BR /&gt;using mkl;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;public class mkl_dcscmv&lt;BR /&gt;{&lt;BR /&gt; private mkl_dcscmv() { }&lt;BR /&gt; unsafe public static void Main(string[] args)&lt;BR /&gt; {&lt;BR /&gt; //create 4 arrays for storage of matrix&lt;BR /&gt; UIntPtr valSize = new UIntPtr(6);&lt;BR /&gt; int alignment = 32;&lt;/P&gt;&lt;P&gt; double* valP = (double*)MKL.mkl_malloc(valSize, alignment).ToPointer();&lt;BR /&gt; int* rowIndexP = (int*)MKL.mkl_malloc(valSize, alignment).ToPointer();&lt;/P&gt;&lt;P&gt; UIntPtr indexSize = new System.UIntPtr(3);&lt;/P&gt;&lt;P&gt; int* colbP = (int*)MKL.mkl_malloc(indexSize, alignment).ToPointer();&lt;BR /&gt; int* coleP = (int*)MKL.mkl_malloc(indexSize, alignment).ToPointer();&lt;/P&gt;&lt;P&gt; //create input array&lt;BR /&gt; double* xP = (double*)MKL.mkl_malloc(indexSize, alignment).ToPointer();&lt;/P&gt;&lt;P&gt; //create result array&lt;BR /&gt; double* resultP = (double*)MKL.mkl_malloc(indexSize, alignment).ToPointer();&lt;/P&gt;&lt;P&gt; //create matrix description&lt;BR /&gt; char[] matdesc = new char[] { 'G', ' ', ' ', 'C' }; //general, zero based indexing&lt;/P&gt;&lt;P&gt; //populate the arrays&lt;BR /&gt; double[] val = new double[] { 1, 3, 4, 5, 7, 6 };&lt;BR /&gt; int[] rowI = new int[] { 1, 2, 0, 2, 1, 2 };&lt;BR /&gt; int[] colb = new int[] { 0, 2, 4 };&lt;BR /&gt; int[] cole = new int[] { 2, 4, 6 };&lt;/P&gt;&lt;P&gt; for (int i = 0; i &amp;lt; val.Length; i++)&lt;BR /&gt; {&lt;BR /&gt; *(valP + i) = val&lt;I&gt;;&lt;BR /&gt; *(rowIndexP + i) = rowI&lt;I&gt;;&lt;/I&gt;&lt;/I&gt;&lt;/P&gt;&lt;P&gt; Console.WriteLine(*(valP + i) + "\t" + *(rowIndexP + i));&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt; for (int i = 0; i &amp;lt; colb.Length; i++)&lt;BR /&gt; {&lt;BR /&gt; *(coleP + i) = cole&lt;I&gt;;&lt;BR /&gt; *(colbP + i) = colb&lt;I&gt;;&lt;BR /&gt; *(xP + i) = 3;&lt;BR /&gt; *(resultP + i) = 0;&lt;BR /&gt; Console.WriteLine(*(coleP + i) + "\t" + *(colbP + i));&lt;BR /&gt; }&lt;/I&gt;&lt;/I&gt;&lt;/P&gt;&lt;P&gt; int TransA = 'N'; // CBLAS.TRANSPOSE.NoTrans;&lt;BR /&gt; int rows = 3;&lt;BR /&gt; int cols = 3;&lt;BR /&gt; double alpha = 2.0, beta = 1.0;&lt;BR /&gt;&lt;STRONG&gt; CBLASNative.mkl_dcscmv(ref TransA, ref rows, ref cols, ref alpha, matdesc, valP, rowIndexP, colbP, coleP, xP, ref beta, resultP);&lt;BR /&gt;&lt;/STRONG&gt; //CBLAS.mkl_dcscmv( TransA, rows, cols, alpha, matdesc, valP, rowIndexP, colbP, coleP, xP, beta, resultP);&lt;/P&gt;&lt;P&gt; for (int i = 0; i &amp;lt; rows; i++)&lt;BR /&gt; Console.WriteLine(*(resultP + i));&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;namespace mkl &lt;BR /&gt;{&lt;BR /&gt; &lt;STRONG&gt;//remove the wrapper;&lt;BR /&gt;&lt;/STRONG&gt;/** CBLAS native declarations */&lt;BR /&gt;[SuppressUnmanagedCodeSecurity]&lt;BR /&gt;unsafe internal sealed class CBLASNative&lt;BR /&gt;{&lt;BR /&gt;private CBLASNative() {}&lt;/P&gt;&lt;P&gt; [DllImport("mkl_rt", CallingConvention = CallingConvention.Cdecl,&lt;BR /&gt; ExactSpelling = true, SetLastError = false)]&lt;BR /&gt; internal static extern void mkl_dcscmv(&lt;BR /&gt; ref int TransA, ref int rows, ref int cols, ref double alpha,&lt;BR /&gt; [In] char[] matdescra, [In] double* values,&lt;BR /&gt; [In] int* rowIndex, [In] int* colb,&lt;BR /&gt; [In] int* cole, [In] double* x,&lt;BR /&gt; ref double beta, [In, Out] double* y);&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;public sealed class MKL&lt;BR /&gt;{&lt;BR /&gt; public static UIntPtr mkl_malloc(UIntPtr size, int alignment)&lt;BR /&gt; {&lt;BR /&gt; return MKLNative.MKL_malloc(size, alignment);&lt;BR /&gt; }&lt;BR /&gt; public static void mkl_free(UIntPtr ptr)&lt;BR /&gt; {&lt;BR /&gt; MKLNative.MKL_free(ptr);&lt;BR /&gt; }&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;[SuppressUnmanagedCodeSecurity]&lt;BR /&gt;internal sealed class MKLNative &lt;BR /&gt;{&lt;BR /&gt; [DllImport("mkl_rt", CallingConvention = CallingConvention.Cdecl,&lt;BR /&gt; ExactSpelling = true, SetLastError = false)]&lt;BR /&gt; internal static extern UIntPtr MKL_malloc(UIntPtr size, int alignment);&lt;BR /&gt; [DllImport("mkl_rt", CallingConvention = CallingConvention.Cdecl,&lt;BR /&gt; ExactSpelling = true, SetLastError = false)]&lt;BR /&gt; internal static extern void MKL_free(UIntPtr ptr);&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;build and run it: &lt;BR /&gt;1 1&lt;BR /&gt;3 2&lt;BR /&gt;4 0&lt;BR /&gt;5 2&lt;BR /&gt;7 1&lt;BR /&gt;6 2&lt;BR /&gt;2 0&lt;BR /&gt;4 2&lt;BR /&gt;6 4&lt;BR /&gt;24&lt;BR /&gt;48&lt;BR /&gt;84&lt;BR /&gt;.... . .&lt;/P&gt;</description>
      <pubDate>Wed, 22 Feb 2012 07:49:26 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/C-mkl-alloc-mkl-dcscmv-sparse-matrix-vector-multiply/m-p/806550#M3470</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2012-02-22T07:49:26Z</dc:date>
    </item>
  </channel>
</rss>

