Yeppp!
 All Classes Groups Pages
Yeppp! library documentation for FORTRAN programmers

Introduction

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.

File structure

Releases of Yeppp! library contain the following files relevant to FORTRAN programming:

LocationDescription
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.shPOSIX shell script to setup environemnt variables for Yeppp! . Compatible with bash/dash/ksh/zsh on Linux and Mac OS X.

Getting Started

Using Yeppp! with command-line tools on Unix

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

source set-vars.sh <arch>

If your shell does not support source command, use the equivalent command

. set-vars.sh <arch>

<arch> specifies the architecture/ABI for which you want to compile your program. The following values are accepted:

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

make FC=<fortran-compiler>

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.

gfortran HelloWorld.f90 -o HelloWorld -I$YEPROOT/bindings/fortran/modules/$YEPPLATFORM-gfortran/ -lyeppp

and you can use Yeppp! in your codes!