Site Navigation:

Compilation Flags


You may specify the following CFLAGS and CXXFLAGS in your environment.

-DIPP If this flag is defined, then as much math as possible will be done using Intel's . This is a very fast library that is optimized for Intel chips. Intel has sabotaged the library to slow down on AMD chips. However, you may still find that IPP runs well on AMD chips. The types of computations that will be done with IPP include the Fourier Transforms, which is the major computation in SETI, as well as vector sums, averages, and trig functions. You must link against -lippsmerged -lippvmmerged -lippchmerged -lippcore, and probably other libraries, too. IPP is a challenge to use. Don't email me and ask me how to link against IPP, please. Ask , instead.

If you define -DIPP, you should also define one of the following, if your machine supports SSE:

-DW7 Specifying this flag will cause SSE2 versions of the IPP functions to be used. This is independent of the compiler that you use. However, if you are using gcc, you probably also want to specify -march=pentium4 (or whatever). If you are using icc, you'll want to specify -xW, -xB, -xN, or -xP.
-DA6Specifying this flag causes sse versions of the IPP library to be used. You'll want to compile with either gcc -march=pentium3 (or whatever) or icc -xK.

-DACML If this flag is defined then AMD's will be used for as much math as possible. AMD's library is not as extensive as the IPP library, however it is not sabotaged on AMD chips. If you specify both -DACML and -DIPP, then ACML's library will take precedence in calculations that ACML supports, most notably the Fourier Transform, but IPP will be used in calculations that have no reasonable ACML version. You must link against -lacml -lg2c.

-DUSE_FFTWF If this flag is defined, then the will be used to calculate Fourier Transforms. You must also link against libfftwf.a by placing -lfftwf in your LDFLAGS. Use of this CFLAG takes priority over any other flag.

Please note that you may specify any combination of -DUSE_FFTW, -DACML, and -DIPP. If you specify FFTW, FFTW will be used for Fourier transforms. If you specify FFTW and IPP, for instance, IPP will be used for all other calculations except the ones that FFTW does (only the Fourier Transform). ACML does slightly more than FFTW, but less than IPP. If you specify ACML and IPP, ACML will take priority over IPP. One way to think about it is that FFTW has the highest priority, then ACML, then IPP. If you specify multiple flags, the highest priority library will be used on the problems it knows how to solve. On the other problems, the lower priority libraries will be used (if specified).

-D__SSE3__ This flag specifies that my hand-coded SSE3 assembly language should be used to multiply complex vectors. SSE3 is a relatively new instruction set designed specifically for complex math. The compiler may also generate other SSE3 code if you specify this flag, since it is a standard CFLAG. If you are using gcc, specifying -msse3 has the same effect. This option does not conflict with any other flag, since none of the previous libraries mentioned have a faster routine to multiply complex vectors using SSE3.