Yeppp! is a high-performance SIMD-optimized mathematical library for x86, ARM, and MIPS processors on Windows, Android, Mac OS X, and GNU/Linux systems. Yeppp! functions are presented in several versions with optimizations for different processor microarchitectures. During initialization Yeppp! library detects the processor it is running on, and chooses the optimal function implementations.
Additionally, the library provides information about the CPU, such as processor vendor and microarchitecture, and an OS- and hardware-independent interface to processor cycle counters, and high-resolution timers.
Releases of Yeppp! library contain the following files relevant to FORTRAN programming:
Location | Description |
---|---|
binaries/linux/i586/ | Pre-built Yeppp! shared object and debug symbols for GNU/Linux on x86 architecture |
binaries/linux/x86_64/ | Pre-built Yeppp! shared object and debug symbols for GNU/Linux on x86-64 (aka AMD64, x64, or Intel64) architecture |
binaries/linux/k1om/ | Pre-built Yeppp! shared object and debug symbols for GNU/Linux on k1om (Xeon Phi) architecture |
binaries/linux/armel/ | Pre-built Yeppp! shared object and debug symbols for GNU/Linux on ARM architecture with armel ABI (ARM EABI Little-Endian Soft-Float) |
binaries/linux/armhf/ | Pre-built Yeppp! shared object and debug symbols for GNU/Linux on ARM architecture with armhf ABI (ARM EABI Little-Endian Hard-Float) |
binaries/macosx/x86/ | Pre-built Yeppp! dynamic library and debug symbols for Mac OS X on x86 architecture |
binaries/macosx/x86_64/ | Pre-built Yeppp! dynamic library and debug symbols for Mac OS X on x86-64 (aka AMD64, x64, or Intel64) architecture |
bindings/fortran/sources/ | Yeppp! bindings for FORTRAN |
examples/fortran/ | Examples of calling Yeppp! functions in FORTRAN code |
docs/fortran/ | Yeppp! documentation for FORTRAN programmers |
set-vars.sh | POSIX shell script to setup environemnt variables for Yeppp! . Compatible with bash/dash/ksh/zsh on Linux and Mac OS X. |
Download the recent release of Yeppp! from the official website.
Open a terminal window where you plan to build your program. With Yeppp! we provide a shell script to set up environment variables. Navigate to Yeppp! directory and execute command
If your shell does not support source
command, use the equivalent command
<arch>
specifies the architecture/ABI for which you want to compile your program. The following values are accepted:
x86
to set variables for x86 (32-bit x86) target x86_64
to set variables for x86-64 (64-bit x86) target k1om
to set variables for Xeon Phi target (Linux only) armel
to set variables for ARM Soft-Float EABI target (Linux only) armhf
to set variables for ARM Hard-Float EABI target (Linux only) You can also omit the <arch> parameter. This case the setup script will auto-detect the host architecture and set the environment variable accordingly.
The set-vars.sh script sets environment variables to let the dynamic linker find Yeppp! when you execute a program which makes use of this library. Additionally, the script sets environment variable $YEPROOT to contain the path to Yeppp! installation directory, and $YEPBINARIES variable to contain the path to platform-specific Yeppp! binaries, and $YEPPLATFORM variable to contain the internal Yeppp! name of the platform (e.g. x64-linux-sysv-default).
Now navigate to $YEPROOT/bindings/fortran
. Run the command
where FC
is the fortran compiler you plan to use, and you may use FFLAGS
to specify additional parameters. This will precompile Yeppp! interface modules to $YEPROOT/bindigns/fortran/modules/$YEPPLATFORM-$FCNAME
where $FCNAME
is the filename of the FORTRAN compiler specified in FC
variable (e.g. for FC=/usr/bin/gfortran-4.8
we have FCNAME=gfortran-4.8
).
To build your FORTRAN project with Yeppp! use additional compilation flags (FFLAGS) -I$YEPROOT/bindings/fortran/modules/$YEPPLATFORM-$FCNAME/
and additional linker flag -lyeppp
, e.g.
and you can use Yeppp! in your codes!