Node:BestLibrary, Next:, Previous:General, Up:General



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:

Under a Linux operating system, one 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 cannot determine whether or not your machine handles SSE or SSE2 instructions, you may prefer to assume that it does not. 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.

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 acml2.5.0/gnu64
" PGI pgf77/pgf90/pgcc acml2.5.0/pgi64
Multi processor PGI pgf77/pgf90/pgcc acml2.5.0/pgi64_mp

Linux 32-bit

Number of processors Compilers SSE supported ACML install directory
Single GNU g77/gcc or compatible SSE and SSE2 acml2.5.0/gnu32
" " SSE but no SSE2 acml2.5.0/gnu32_nosse2
" " No SSE or SSE2 acml2.5.0/gnu32_nosse
" PGI pgf77/pgf90/pgcc SSE and SSE2 acml2.5.0/pgi32
" " SSE but no SSE2 acml2.5.0/pgi32_nosse2
" " No SSE or SSE2 acml2.5.0/pgi32_nosse
Multiple PGI pgf77/pgf90/pgcc SSE and SSE2 acml2.5.0/pgi32_mp

Microsoft Windows 64-bit

Number of processors Compilers ACML install directory
Single processor PGI pgf77/pgf90/pgcc acml2.5.0/win64

Microsoft Windows 32-bit

Number of processors Compilers SSE supported ACML install directory
Single processor GNU g77/gcc SSE and SSE2 acml2.5.0/gnu32
" " SSE but no SSE2 acml2.5.0/gnu32_nosse2
" " No SSE or SSE2 acml2.5.0/gnu32_nosse
" PGI pgf77/pgf90/pgcc SSE and SSE2 acml2.5.0/pgi32
" " SSE but no SSE2 acml2.5.0/pgi32_nosse2
" " No SSE or SSE2 acml2.5.0/pgi32_nosse
" CVF/Microsoft C SSE and SSE2 acml2.5.0/win32
Multi processor PGI pgf77/pgf90/pgcc SSE and SSE2 acml2.5.0/pgi32_mp