<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
Hi,<div><br><div><div>On Aug 31, 2007, at 4:04 PM, Roland Schulz wrote:</div><blockquote type="cite"><blockquote type="cite"><font class="Apple-style-span" color="#000000"><br></font> </blockquote><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Am I mistaken, or does it at maximum reduce it by 1/6, because only the</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">FFT in one dimension can be done as real-to-complex? Still I will try to</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">add it and I think it should be easy because the code seems very clean.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">But I think a larger improvement would be to allow also FFTW 3.x because</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">its performance seems to be a lot higher since it uses SSE/Altivec</div></blockquote><div><br></div><div>It is indeed only the first dimension that is real-to-complex, but since the resulting data then only contains half as many points we will cut the execution time in the remaining dimensions by 50% too.</div><div><br class="webkit-block-placeholder"></div><div>However, in practice I think the reduced bandwidth is more important. FFTW really shines when you do a full 3D transform on a single CPU, but as soon as we start the decomposition we'll have to use a series of 1D FFT calls, and then there are several other good implementations too.</div><div><br class="webkit-block-placeholder"></div><div><br></div></div><div><blockquote type="cite"><blockquote type="cite"> </blockquote><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">How do you handle these exceptions? Does every author has to agree? Why</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">do you not cross-license the software as GPL and</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">GPL+desktop-science-exception (or any appropriate existing license), so</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">that the exception is for everyone equally and really only regarding</div></blockquote><div><br></div><div>For the core parts of Gromacs we either have the copyright among the main authors who have written most of it (who have had to agree :-), or we have shared copyright/free distribution rights to non-trivial contributions and modifications. There are some of the analysis tools and other minor stuff we had to rip out, and this was also the reason we implemented support for Intel MKL and FFTPACK as alternatives to FFTW (which is GPL-only, although they seem to be generous with exceptions). If you have a really compelling case you're more than welcome to contact us too :-)</div><div><br class="webkit-block-placeholder"></div><div>In practice we simply want to keep the options open to avoid the situation e.g. Linux is in now with GPL 2 vs. 3. We're in this for the science, but if company X very hypothetically stepped forward and promised to fund $1,000,000 for general Gromacs development provided they got permission to link the library into a commercial GUI application we would at least think about it, in particular if they were to offer the binaries for free to academic researchers. </div><div><br class="webkit-block-placeholder"></div><div>Anyway - none of this should be an issue for the FFTs. We won't need to ask Steve for any exceptions since people unhappy with GPL can just use one of the slower/worse scaling FFT implementations.</div><div><br class="webkit-block-placeholder"></div><div>Cheers,</div><div><br class="webkit-block-placeholder"></div><div>Erik</div><div><br class="webkit-block-placeholder"></div><div><br class="webkit-block-placeholder"></div><div><br></div><div><br></div></div></div></body></html>