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 PGI pgf77/pgf90/pgcc acml4.1.0/pgi64
GNU gfortran/gcc or compat. acml4.1.0/gfortran64
PathScale pathf90/pathcc acml4.1.0/pathscale64
Intel Fortran acml4.1.0/ifort64
NAGWare f95 acml4.1.0/nag64
Absoft (use gfortran ACML) acml4.1.0/gfortran64
Multi processor or core PGI pgf77/pgf90/pgcc acml4.1.0/pgi64_mp
GNU gfortran/gcc or compat. acml4.1.0/gfortran64_mp
PathScale pathf90/pathcc acml4.1.0/pathscale64_mp
Intel Fortran acml4.1.0/ifort64_mp
Absoft (use gfortran ACML) acml4.1.0/gfortran64_mp

Linux 32-bit

Number of processors Compilers ACML install directory
Single processor PGI pgf77 / pgf90 / pgcc acml4.1.0/pgi32
GNU gfortran / gcc or compat. acml4.1.0/gfortran32
PathScale pathf90 / pathcc acml4.1.0/pathscale32
Intel Fortran acml4.1.0/ifort32
NAGWare f95 acml4.1.0/nag32
Absoft (use gfortran ACML) acml4.1.0/gfortran32
Multi processor or core PGI pgf77 / pgf90 / pgcc acml4.1.0/pgi32_mp
GNU gfortran / gcc or compat. acml4.1.0/gfortran32_mp
PathScale pathf90 / pathcc acml4.1.0/pathscale32_mp
Intel Fortran acml4.1.0/ifort32_mp
Absoft (use gfortran ACML) acml4.1.0/gfortran32_mp

Microsoft Windows 64-bit

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

Microsoft Windows 32-bit

Number of processors Compilers ACML install directory
Single processor PGI pgf77/pgf90/Microsoft C acml4.1.0/pgi32
Intel Fortran/Microsoft C acml4.1.0/ifort32
Multi processor or core PGI pgf77/pgf90/Microsoft C acml4.1.0/pgi32_mp
Intel Fortran/Microsoft C acml4.1.0/ifort32_mp