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:
- 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 gfortran/gcc) or compatible compilers
(compilers that are interoperable with the GNU compilers) installed?
- Do you have the PGI compilers (pgf77/pgf90/pgcc) installed?
- Do you have the PathScale compilers (pathf90/pathcc) installed?
- Do you have the NAGWare compiler (f95) installed?
- On a 32-bit Windows machine, do you have Microsoft C, or PGI Visual
Fortran, or Intel 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 and SSE2)?
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
|
|
|