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:
- Are you running a 64-bit operating system (on AMD64 hardware such as
Opteron or Athlon64)? Or are you running a 32-bit operating system?
- Is the operating system Linux or Microsoft Windows?
- Do you have the GNU compilers (g77/gcc) or compatible compilers
(compilers that are interoperable with the GNU compilers) installed?
- Do you have the PGI compilers (pgf77/pgf90/pgcc) installed?
- On a 32-bit Windows machine, do you have Microsoft C, or Compaq Visual
Fortran, or compatible compilers installed?
- Do you have a single processor system or a multiprocessor (SMP) system?
The single processor version of ACML can be run on an SMP machine and
vice versa, but (if you have the right compilers)
it is more efficient to run the version appropriate to the machine.
- If you're on a 32-bit machine, does it support Streaming SIMD
Extension instructions (SSE or SSE2)?
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
|
|