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:
|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:
x86to set variables for x86 (32-bit x86) target
x86_64to set variables for x86-64 (64-bit x86) target
k1omto set variables for Xeon Phi target (Linux only)
armelto set variables for ARM Soft-Float EABI target (Linux only)
armhfto 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
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
$FCNAME is the filename of the FORTRAN compiler specified in
FC variable (e.g. for
FC=/usr/bin/gfortran-4.8 we have
To build your FORTRAN project with Yeppp! use additional compilation flags (FFLAGS)
-I$YEPROOT/bindings/fortran/modules/$YEPPLATFORM-$FCNAME/ and additional linker flag
and you can use Yeppp! in your codes!