Next: , Previous: General, Up: General


2.1 Determining the best ACML version for your system

ACML comes in versions for 64-bit and 32-bit processors, running both Linux and Microsoft Windows(R) operating systems. To use the following tables, you will need to know answers to these questions:

The ACML installation includes a binary utility that can help you find an answer to the last question. The utility lies in directory util, and is named cpuid.exe. It interrogates the processor to determine whether SSE and SSE2 instructions exist.

     util/cpuid.exe

Under a Linux operating system, another way of finding out the answer to the last question is to look at the special file /proc/cpuinfo, and see what appears under the “flags” label. Try this command:

     cat /proc/cpuinfo | grep flags

If the list of flags includes the flag “sse” then your machine supports SSE instructions. If it also includes “sse2” then your machine supports SSE2 instructions. If your machine supports these instructions, it is better to use a version of ACML which was built to take advantage of them, for reasons of good performance.

The method of examining /proc/cpuinfo can also be used under Microsoft Windows if you have the Cygwin UNIX-like tools installed (see http://www.cygwin.com/) and run a bash shell. Note that AMD64 machines always support both SSE and SSE2 instructions, under both Linux and Windows. Older (32-bit) AMD chips may support SSE but not SSE2, or neither SSE nor SSE2 instructions. Other manufacturers' hardware may or may not support SSE or SSE2.

If you link to a version of ACML that was built to use SSE or SSE2 instructions, and your machine does not in fact support them, it is likely that your program will halt due to encountering an “illegal instruction” - you may or may not be notified of this by the operating system.

For 32-bit machines, older versions of ACML (ACML 3.1.0 and earlier) came in variants suitable for hardware without SSE/SSE2 instructions (Streaming SIMD Extensions). This is no longer the case, and if you have older 32-bit hardware that does not support SSE/SSE2, and wish to use ACML, you must continue to use an older version.

Once you have answered the questions above, use these tables to decide which version of ACML to link against.

Linux 64-bit

Number of processors Compilers ACML install directory
Single processor GNU g77/gcc or compatible acml3.6.1/gnu64
GNU gfortran/gcc acml3.6.1/gfortran64
PGI pgf77/pgf90/pgcc acml3.6.1/pgi64
PathScale pathf90/pathcc acml3.6.1/pathscale64
NAGWare f95 acml3.6.1/nag64
Intel Fortran acml3.6.1/ifort64
Multi processor PGI pgf77/pgf90/pgcc acml3.6.1/pgi64_mp
PathScale pathf90/pathcc acml3.6.1/pathscale64_mp
GNU gfortran/gcc acml3.6.1/gfortran64_mp
Intel Fortran acml3.6.1/ifort64_mp

Linux 32-bit

Number of processors Compilers ACML install directory
Single GNU g77 / gcc or compat. acml3.6.1/gnu32
GNU gfortran / gcc acml3.6.1/gfortran32
PGI pgf77 / pgf90 / pgcc acml3.6.1/pgi32
PathScale pathf90 / pathcc acml3.6.1/pathscale32
NAGWare f95 acml3.6.1/nag32
Intel Fortran acml3.6.1/ifort32
Multiple PGI pgf77 / pgf90 / pgcc acml3.6.1/pgi32_mp
PathScale pathf90 / pathcc acml3.6.1/pathscale32_mp
GNU gfortran / gcc acml3.6.1/gfortran32_mp
Intel Fortran acml3.6.1/ifort32_mp

Microsoft Windows 64-bit

Number of processors Compilers ACML install directory
Single processor PGI pgf77/pgf90/pgcc/MSC acml3.6.1/win64
Intel Fortran/Microsoft C acml3.6.1/ifort64
Multi processor PGI pgf77/pgf90/pgcc/MSC acml3.6.1/win64_mp
Intel Fortran/Microsoft C acml3.6.1/ifort64_mp

Microsoft Windows 32-bit

Number of processors Compilers ACML install directory
Single GNU g77/gcc acml3.6.1/gnu32
PGI pgf77/pgf90/Microsoft C acml3.6.1/pgi32
Intel Fortran/Microsoft C acml3.6.1/ifort32
Multi PGI pgf77/pgf90/Microsoft C acml3.6.1/pgi32_mp
Intel Fortran/Microsoft C acml3.6.1/ifort32_mp