<?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 3D convolution  in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/3D-convolution/m-p/933543#M13892</link>
    <description>&lt;P&gt;I am using MKL's VSL multi-dimensional convolution routines to perform a 3D convolution. As a test, I am using the input function as a 3D gaussian as follows:&lt;/P&gt;

&lt;P&gt;f(x,y,z) = exp(- (x-2)**2) exp(-(y+2)**2) exp(- (z**2))&lt;/P&gt;

&lt;P&gt;and the convolution kernel as&lt;/P&gt;

&lt;P&gt;g(x,y,z) = exp(-(x**2 + y**2 + z**2))&lt;/P&gt;

&lt;P&gt;The resulting function is formally C(x,y,z), also a gaussian. I have some trouble understanding the access of the exact indices of the ouput 3D array. Given below is an output for the non-zero values of the convoluted function C, in the last column, calculated with the following code (forgive the lengthy information).&lt;/P&gt;

&lt;P&gt;&amp;nbsp; 26&amp;nbsp; 26&amp;nbsp; 26&amp;nbsp;&amp;nbsp; 26&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00000018&lt;BR /&gt;
	&amp;nbsp; 27&amp;nbsp; 27&amp;nbsp; 27&amp;nbsp;&amp;nbsp; 27&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00000496&lt;BR /&gt;
	&amp;nbsp; 28&amp;nbsp; 28&amp;nbsp; 28&amp;nbsp;&amp;nbsp; 28&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00008922&lt;BR /&gt;
	&amp;nbsp; 29&amp;nbsp; 29&amp;nbsp; 29&amp;nbsp;&amp;nbsp; 29&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00102816&lt;BR /&gt;
	&amp;nbsp; 30&amp;nbsp; 30&amp;nbsp; 30&amp;nbsp;&amp;nbsp; 30&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00759755&lt;BR /&gt;
	&amp;nbsp; 31&amp;nbsp; 31&amp;nbsp; 31&amp;nbsp;&amp;nbsp; 31&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.03599289&lt;BR /&gt;
	&amp;nbsp; 32&amp;nbsp; 32&amp;nbsp; 32&amp;nbsp;&amp;nbsp; 32&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.10934334&lt;BR /&gt;
	&amp;nbsp; 33&amp;nbsp; 33&amp;nbsp; 33&amp;nbsp;&amp;nbsp; 33&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.21295892&lt;BR /&gt;
	&amp;nbsp; 34&amp;nbsp; 34&amp;nbsp; 34&amp;nbsp;&amp;nbsp; 34&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.26596953&lt;BR /&gt;
	&amp;nbsp; 35&amp;nbsp; 35&amp;nbsp; 35&amp;nbsp;&amp;nbsp; 35&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.21295892&lt;BR /&gt;
	&amp;nbsp; 36&amp;nbsp; 36&amp;nbsp; 36&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.10934334&lt;BR /&gt;
	&amp;nbsp; 37&amp;nbsp; 37&amp;nbsp; 37&amp;nbsp;&amp;nbsp; 37&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.03599289&lt;BR /&gt;
	&amp;nbsp; 38&amp;nbsp; 38&amp;nbsp; 38&amp;nbsp;&amp;nbsp; 38&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00759755&lt;BR /&gt;
	&amp;nbsp; 39&amp;nbsp; 39&amp;nbsp; 39&amp;nbsp;&amp;nbsp; 39&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00102816&lt;BR /&gt;
	&amp;nbsp; 40&amp;nbsp; 40&amp;nbsp; 40&amp;nbsp;&amp;nbsp; 40&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00008922&lt;BR /&gt;
	&amp;nbsp; 41&amp;nbsp; 41&amp;nbsp; 41&amp;nbsp;&amp;nbsp; 41&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00000496&lt;BR /&gt;
	&amp;nbsp; 42&amp;nbsp; 42&amp;nbsp; 42&amp;nbsp;&amp;nbsp; 42&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00000018&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !n is number of points on the 3D grid.&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n=30 &amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rank=3&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cdim=n+n-1&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r1shape(1)=n;r1shape(2)=n;r1shape(3)=n;r2shape=r1shape;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; convshape(1)=cdim;convshape(2)=cdim;convshape(3)=cdim&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r1stride=1; r2stride=1; convstride=1&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; allocate(conv_mkl(cdim,cdim,cdim));conv_mkl=0.d0&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ok=.true.&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; precis=VSL_CONV_PRECISION_SINGLE&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stat=vslconvsetmode(task,mode)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stat=vslconvsetinternalprecision(task,precis)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stat=vsldconvnewtask(task,mode,rank,r1shape,r2shape,convshape)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stat=vsldconvexec(task,r1,r1stride,r2,r2stride,conv_mkl,convstride)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ier=vslconvdeletetask(task)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !normalise this&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; conv_mkl=conv_mkl/sum(conv_mkl)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(stat/=VSL_STATUS_OK) then&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print*,'Error: Bad status : ',stat&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ok=.false.&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(ier/=0) then&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print*,'Failed to destroy task'&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write(*,*)'Successful? ',ok&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=1,cdim&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do j=1,cdim&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do k=1,cdim&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write(23,'(3I4,3I5,F15.8)')i,i-j+3,i-j-k+4,i,j,k,conv_mkl(i,j,k)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end do&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end do&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end do&lt;/P&gt;

&lt;P&gt;I find that the value of j and k are always 3 and 1 respectively, even when I change parameters in function f.&amp;nbsp; What is so special about 3 and 1?&lt;/P&gt;

&lt;P&gt;Thanks.&lt;/P&gt;</description>
    <pubDate>Sun, 02 Mar 2014 22:17:42 GMT</pubDate>
    <dc:creator>Jayashree_N_</dc:creator>
    <dc:date>2014-03-02T22:17:42Z</dc:date>
    <item>
      <title>3D convolution</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/3D-convolution/m-p/933543#M13892</link>
      <description>&lt;P&gt;I am using MKL's VSL multi-dimensional convolution routines to perform a 3D convolution. As a test, I am using the input function as a 3D gaussian as follows:&lt;/P&gt;

&lt;P&gt;f(x,y,z) = exp(- (x-2)**2) exp(-(y+2)**2) exp(- (z**2))&lt;/P&gt;

&lt;P&gt;and the convolution kernel as&lt;/P&gt;

&lt;P&gt;g(x,y,z) = exp(-(x**2 + y**2 + z**2))&lt;/P&gt;

&lt;P&gt;The resulting function is formally C(x,y,z), also a gaussian. I have some trouble understanding the access of the exact indices of the ouput 3D array. Given below is an output for the non-zero values of the convoluted function C, in the last column, calculated with the following code (forgive the lengthy information).&lt;/P&gt;

&lt;P&gt;&amp;nbsp; 26&amp;nbsp; 26&amp;nbsp; 26&amp;nbsp;&amp;nbsp; 26&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00000018&lt;BR /&gt;
	&amp;nbsp; 27&amp;nbsp; 27&amp;nbsp; 27&amp;nbsp;&amp;nbsp; 27&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00000496&lt;BR /&gt;
	&amp;nbsp; 28&amp;nbsp; 28&amp;nbsp; 28&amp;nbsp;&amp;nbsp; 28&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00008922&lt;BR /&gt;
	&amp;nbsp; 29&amp;nbsp; 29&amp;nbsp; 29&amp;nbsp;&amp;nbsp; 29&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00102816&lt;BR /&gt;
	&amp;nbsp; 30&amp;nbsp; 30&amp;nbsp; 30&amp;nbsp;&amp;nbsp; 30&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00759755&lt;BR /&gt;
	&amp;nbsp; 31&amp;nbsp; 31&amp;nbsp; 31&amp;nbsp;&amp;nbsp; 31&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.03599289&lt;BR /&gt;
	&amp;nbsp; 32&amp;nbsp; 32&amp;nbsp; 32&amp;nbsp;&amp;nbsp; 32&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.10934334&lt;BR /&gt;
	&amp;nbsp; 33&amp;nbsp; 33&amp;nbsp; 33&amp;nbsp;&amp;nbsp; 33&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.21295892&lt;BR /&gt;
	&amp;nbsp; 34&amp;nbsp; 34&amp;nbsp; 34&amp;nbsp;&amp;nbsp; 34&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.26596953&lt;BR /&gt;
	&amp;nbsp; 35&amp;nbsp; 35&amp;nbsp; 35&amp;nbsp;&amp;nbsp; 35&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.21295892&lt;BR /&gt;
	&amp;nbsp; 36&amp;nbsp; 36&amp;nbsp; 36&amp;nbsp;&amp;nbsp; 36&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.10934334&lt;BR /&gt;
	&amp;nbsp; 37&amp;nbsp; 37&amp;nbsp; 37&amp;nbsp;&amp;nbsp; 37&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.03599289&lt;BR /&gt;
	&amp;nbsp; 38&amp;nbsp; 38&amp;nbsp; 38&amp;nbsp;&amp;nbsp; 38&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00759755&lt;BR /&gt;
	&amp;nbsp; 39&amp;nbsp; 39&amp;nbsp; 39&amp;nbsp;&amp;nbsp; 39&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00102816&lt;BR /&gt;
	&amp;nbsp; 40&amp;nbsp; 40&amp;nbsp; 40&amp;nbsp;&amp;nbsp; 40&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00008922&lt;BR /&gt;
	&amp;nbsp; 41&amp;nbsp; 41&amp;nbsp; 41&amp;nbsp;&amp;nbsp; 41&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00000496&lt;BR /&gt;
	&amp;nbsp; 42&amp;nbsp; 42&amp;nbsp; 42&amp;nbsp;&amp;nbsp; 42&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.00000018&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !n is number of points on the 3D grid.&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n=30 &amp;nbsp;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rank=3&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cdim=n+n-1&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r1shape(1)=n;r1shape(2)=n;r1shape(3)=n;r2shape=r1shape;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; convshape(1)=cdim;convshape(2)=cdim;convshape(3)=cdim&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r1stride=1; r2stride=1; convstride=1&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; allocate(conv_mkl(cdim,cdim,cdim));conv_mkl=0.d0&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ok=.true.&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; precis=VSL_CONV_PRECISION_SINGLE&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stat=vslconvsetmode(task,mode)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stat=vslconvsetinternalprecision(task,precis)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stat=vsldconvnewtask(task,mode,rank,r1shape,r2shape,convshape)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stat=vsldconvexec(task,r1,r1stride,r2,r2stride,conv_mkl,convstride)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ier=vslconvdeletetask(task)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !normalise this&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; conv_mkl=conv_mkl/sum(conv_mkl)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(stat/=VSL_STATUS_OK) then&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print*,'Error: Bad status : ',stat&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ok=.false.&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(ier/=0) then&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print*,'Failed to destroy task'&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write(*,*)'Successful? ',ok&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=1,cdim&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do j=1,cdim&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do k=1,cdim&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write(23,'(3I4,3I5,F15.8)')i,i-j+3,i-j-k+4,i,j,k,conv_mkl(i,j,k)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end do&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end do&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end do&lt;/P&gt;

&lt;P&gt;I find that the value of j and k are always 3 and 1 respectively, even when I change parameters in function f.&amp;nbsp; What is so special about 3 and 1?&lt;/P&gt;

&lt;P&gt;Thanks.&lt;/P&gt;</description>
      <pubDate>Sun, 02 Mar 2014 22:17:42 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/3D-convolution/m-p/933543#M13892</guid>
      <dc:creator>Jayashree_N_</dc:creator>
      <dc:date>2014-03-02T22:17:42Z</dc:date>
    </item>
    <item>
      <title>Please take a look at the</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/3D-convolution/m-p/933544#M13893</link>
      <description>&lt;P&gt;Please take a look at the "Data Allocation" section in the MKL reference manual that describes in great details about multi-dimensional input and output data vectors in convolution routines: &lt;A href="http://software.intel.com/en-us/node/470762" target="_blank"&gt;http://software.intel.com/en-us/node/470762&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 03 Mar 2014 20:21:07 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/3D-convolution/m-p/933544#M13893</guid>
      <dc:creator>Zhang_Z_Intel</dc:creator>
      <dc:date>2014-03-03T20:21:07Z</dc:date>
    </item>
  </channel>
</rss>

