<?xml version="1.0" ?> 
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/">
<channel>
  <title>AMD Developer Forums - Framewave and APL</title> 
  <description></description> 
  <link>http://forums.amd.com/forum/index.cfm?forumid=9</link> 
  <generator>FuseTalk Hosting Executive Plan</generator> 

	<item>
		<title>90 degree rotation</title>
		<link>http://forums.amd.com/forum/messageview.cfm?catid=204&amp;threadid=102342</link> 
		<pubDate>2008-10-31T16:41:17 -05.00</pubDate> 
		<dc:creator>rafajna</dc:creator>
   	    <slash:comments>3</slash:comments> 
		<description><![CDATA[ <p>
<p>Hi,</p>
<p>I am trying to rotate an image 90 degrees using the Rotate function. &nbsp;Here is the code</p>
<p>
<p>if( Rotate == 90 )<span> </span></p>
<p>{</p>
<p><span> </span>::FwiSize roiSize = {width, height};</p>
<p><span> </span>::FwiRect srcR = {0, 0, width, height };</p>
<p><span> </span>::FwiRect dstR = {0, 0, height, width };</p>
<p><span> </span>::fwiRotate_8u_C3R( (Fw8u *)pSrc, roiSize, width * 3, srcR</p>
<p><span> </span>, (Fw8u *)pDst, height * 3, dstR, 90, 0, width, FWI_INTER_CUBIC);</p>
<p><span> </span>int temp = width;</p>
<p><span> </span>width = height;</p>
<p><span> </span>height = temp;</p>
<p>}// end if</p>
<div>However, the resulting image (pDst) &nbsp;is scrambled. &nbsp;Am I using the fwiRotate correctly or is there a problem with that function?</div>
</p>
<p>Thank you.</p>
<div></div>
</p>]]></description>
	</item>

	<item>
		<title>APL is now Framewave</title>
		<link>http://forums.amd.com/forum/messageview.cfm?catid=204&amp;threadid=92516</link> 
		<pubDate>2008-02-20T16:05:28 -05.00</pubDate> 
		<dc:creator>devcentral</dc:creator>
   	    <slash:comments>1</slash:comments> 
		<description><![CDATA[ Framewave, an open-source APL derivative, is a collection of popular low-level software routines beginning with simple arithmetic and extending into rich domains, such as image and signal processing.<br /><br /><a target=_blank class=ftalternatingbarlinklarge href="http://developer.amd.com/tools/libraries/framewave/Pages/default.aspx">The Framewave Project</a>]]></description>
	</item>

	<item>
		<title>APL JPEG vs. IPP JPEG</title>
		<link>http://forums.amd.com/forum/messageview.cfm?catid=204&amp;threadid=92061</link> 
		<pubDate>2008-02-06T15:10:55 -05.00</pubDate> 
		<dc:creator>mrubelmann</dc:creator>
   	    <slash:comments>3</slash:comments> 
		<description><![CDATA[ From the APL documentation, it doesn't look like APL's JPEG functions use multithreading, SSE, etc...  Is that true?  Is more complete functionality on its way soon?  IPP's JPEG support seems very mature and works really well on multicore systems.  Does APL even come close to the same performance?<br /><br />Thanks,<br />Mark]]></description>
	</item>

	<item>
		<title>New APL How-To Articles</title>
		<link>http://forums.amd.com/forum/messageview.cfm?catid=204&amp;threadid=90499</link> 
		<pubDate>2007-12-18T16:50:46 -05.00</pubDate> 
		<dc:creator>devcentral</dc:creator>
   	    <slash:comments>1</slash:comments> 
		<description><![CDATA[ Looking for some practical "how-to's" for implementing the APL? We've gotcha covered with these two new articles for both Windows and Linux developers:<br /><br />&#187;<a target=_blank class=ftalternatingbarlinklarge href="http://developer.amd.com/articles.jsp?id=180&num=1">AMD Performance Library on Linux&#174;: Making the Penguin Fly</a><br /><br />&#187;<a target=_blank class=ftalternatingbarlinklarge href="http://developer.amd.com/articles.jsp?id=179&num=1">Using AMD's Performance Library on Windows&#174;: How To Get Smashing Performance</a>]]></description>
	</item>

	<item>
		<title>Wavelet Support?</title>
		<link>http://forums.amd.com/forum/messageview.cfm?catid=204&amp;threadid=89788</link> 
		<pubDate>2007-11-25T13:42:12 -05.00</pubDate> 
		<dc:creator>daryll</dc:creator>
   	    <slash:comments>2</slash:comments> 
		<description><![CDATA[ Hi Dev Guys,<br />   I see some nice new features in the APL 1.1. Here's a suggestion for 1.2. It would be great to see some wavelet support for JPEG2000 and the new Microsoft/JPEG photo standards. Any chance that can get in for 1.2?]]></description>
	</item>

	<item>
		<title>APL 1.1 is here!</title>
		<link>http://forums.amd.com/forum/messageview.cfm?catid=204&amp;threadid=88125</link> 
		<pubDate>2007-09-19T16:40:46 -05.00</pubDate> 
		<dc:creator>devcentral</dc:creator>
   	    <slash:comments>3</slash:comments> 
		<description><![CDATA[ Just Released: AMD Performance Library (APL) version 1.1 with new video decoding and JPEG support. Check out the APL page for more info:<br /><br /><a target=_blank class=ftalternatingbarlinklarge href="http://developer.amd.com/apl.jsp">http://developer.amd.com/apl.jsp</a>]]></description>
	</item>

	<item>
		<title>APL function is much slower than C version</title>
		<link>http://forums.amd.com/forum/messageview.cfm?catid=204&amp;threadid=87817</link> 
		<pubDate>2007-09-10T20:15:40 -05.00</pubDate> 
		<dc:creator>lha@sci.utah.edu</dc:creator>
   	    <slash:comments>2</slash:comments> 
		<description><![CDATA[ I try a simple program to see how much performance i can gain using apl library over the <br />my C++ version , how ever the result really makes me disappointed the apl version <br />is much slower than C version (about 10 time slower or more) <br /><br />This is the program <br /><br /><br />#include &lt;stdio.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;aplBase.h&gt;<br />#include &lt;aplImage.h&gt;<br />#include &lt;math.h&gt;<br /><br />Apl64u start, end;<br /><br />template &lt;typename T&gt; int test1D(T* src, T* dest, int count){<br />    for (int i=0; i&lt; count; ++i)<br />        if (src<i>!=dest<i>)<br />            return 0;<br />    return 1;<br />};<br /><br />template&lt;typename T&gt; int test2D(T* src, int sStride, T* dst, int dStride,<br />                                int w, int h){<br />    T* pSrc = src,*pDst = dst;<br />    for (int j=0; j&lt; h; ++j){<br />        pSrc =(T*) ((char*) src + j * sStride);<br />        pDst =(T*) ((char*) dst + j * dStride);<br />        for (int i=0; i&lt; w; ++i, ++pSrc, ++pDst)<br />            if (*pSrc != *pDst)<br />                return 0;<br />    }<br />        <br />    return 1;<br />}<br /><br />template &lt; class T&gt; <br />void addImages(T* ia, T* ib, T* result, int width, int height, int stride){<br />    T* pA = ia,*pB = ib, *pR = result;<br />    for (int j=0; j&lt; height; ++j){<br />        pA =(T*) ((char*) ia + j * stride);<br />        pB =(T*) ((char*) ib + j * stride);<br />        pR =(T*) ((char*) result + j * stride);<br />        <br />        for (int i=0; i&lt; width; ++i, ++pA, ++pB, ++pR)<br />            (*pR) = (*pA) + (*pB);<br />    }<br />}<br /><br /><br />void absImage(Apl32f* ia, Apl32f* result, int width, int height, int stride){<br />    Apl32f* pA = ia,*pR = result;<br />    for (int j=0; j&lt; height; ++j){<br />        pA =(Apl32f*) ((char*) ia + j * stride);<br />        pR =(Apl32f*) ((char*) result + j * stride);<br />        for (int i=0; i&lt; width; ++i, ++pA, ++pR)<br />            (*pR) = fabs((*pA));<br />    }<br />}<br /><br /><br />void generateRandomInput(Apl32f* img, int width, int height, int stride){<br /><br />    Apl32f* pImg;<br />    <br />    for (int j=0; j&lt; height; ++j){<br />        pImg = (Apl32f*) ((char*) img + j * stride);<br />        for (int i=0; i&lt; width; ++i, ++pImg)<br />            *pImg = (float) rand() /RAND_MAX;<br />    }<br />}<br />int main(int argc, char *argv[])<br />{<br />    <br />    int width  = 256;<br />    int height = 256;<br />    int stride = 100;<br />    float cTime = 0.f, aplTime = 0.f;<br />    <br />    <br />    Apl32f* srcImg1 = apliMalloc_32f_C1(width, height,&stride);<br />    Apl32f* srcImg2 = apliMalloc_32f_C1(width, height,&stride);<br />    Apl32f* dstImg  = apliMalloc_32f_C1(width, height,&stride);<br />    Apl32f* tmpImg  = apliMalloc_32f_C1(width, height,&stride);<br />    ApliSize size;<br /><br />    size.width = width;<br />    size.height = height;<br /><br />    generateRandomInput(srcImg1, width , height, stride);<br />    generateRandomInput(srcImg2, width , height, stride);<br /><br />    int numIter = 1000;<br /><br />    fprintf(stderr, "Perform APL function \n");<br /><br />    start = aplGetCpuClocks();<br />    for (int i=0; i&lt; 1000; i++)<br />        apliAbs_32f_C1R(srcImg1, stride, tmpImg, stride, size);<br />    end = aplGetCpuClocks();<br />    aplTime = ((double)end - (double) start) /  1000.f;<br /><br />    fprintf(stderr, "Perform C function \n");<br />    <br />    start = aplGetCpuClocks();<br />    for (int i=0; i&lt; numIter; i++)<br />        absImage(srcImg1, dstImg, width , height , stride);<br />    end = aplGetCpuClocks();<br />    cTime = ((double)end - (double) start) /  1000.f;<br /><br /><br />    if (!test2D(tmpImg, stride, dstImg, stride, width , height))<br />        fprintf(stderr, "Wrong result ');<br />     <br /><br />    fprintf(stderr, "C time %g Apl time %g \n", cTime, aplTime);<br />    <br />    addImages(srcImg1, srcImg2, dstImg, width, height, stride);<br /><br />    apliFree(srcImg1);<br />    apliFree(srcImg2);<br />    apliFree(dstImg);<br />    apliFree(tmpImg);<br />    return 0;<br />}<br /><br /><br />My compile options is <br />g++ -c -Wall -O3 -D_REENTRANT -DQT_THREAD_SUPPORT -DNO_DEBUG -march=opteron -m64. I link with the static libray.<br /><br />My machine is Opteron 64 , 8GB memory. I use APL 1.0 linux 64 in Ubunto.<br /><br />Can any one try  it and say what happen. It seems that even Intel IPP still faster on <br />Opteron than AMP APL.<br /><br />Any idea is appreciated.]]></description>
	</item>

	<item>
		<title>What version of the MSVC C run time library should I use when linking to the static version of the APL libraries?</title>
		<link>http://forums.amd.com/forum/messageview.cfm?catid=204&amp;threadid=86268</link> 
		<pubDate>2007-06-26T17:31:41 -05.00</pubDate> 
		<dc:creator>pkamd123</dc:creator>
   	    <slash:comments>2</slash:comments> 
		<description><![CDATA[ You should use the static, multi-threaded version (/MT compiler switch).<br />The static version of the APL library for windows has been compiled with support for the static version of MSVC CRT library.  In order to avoid various linker errors and warnings, you should use the same version of the CRT library in your code that statically links to APL.]]></description>
	</item>

	<item>
		<title>How do I install APL?</title>
		<link>http://forums.amd.com/forum/messageview.cfm?catid=204&amp;threadid=86266</link> 
		<pubDate>2007-06-26T16:39:06 -05.00</pubDate> 
		<dc:creator>prashah</dc:creator>
   	    <slash:comments>3</slash:comments> 
		<description><![CDATA[ There are two steps you need to take in order to install APL on your system:<br />    1) Unzip the downloaded file into the desired folder.<br />    2) Include the APL library file in the compiler's path.]]></description>
	</item>

</channel>
</rss>
