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 C/C++ programming:
Location | Description |
---|---|
binaries/windows/amd64/ | Pre-built Yeppp! DLL, import library, and debug information files for x64 (64-bit) Windows |
binaries/windows/x86/ | Pre-built Yeppp! DLL, import library, and debug information files for x86 (32-bit) Windows |
binaries/android/armeabi/ | Pre-built Yeppp! shared object and debug symbols for Android ("armeabi" ABI) |
binaries/android/armeabi-v7a/ | Pre-built Yeppp! shared object and debug symbols for Android ("armeabi-v7a" ABI) |
binaries/android/x86/ | Pre-built Yeppp! shared object and debug symbols for Android ("x86" ABI) |
binaries/android/mips/ | Pre-built Yeppp! shared object and debug symbols for Android ("mips" ABI) |
binaries/android/yeppp/Android.mk | Description of Yeppp! library as an import module for Android NDK |
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 |
library/headers/ | Yeppp! headers for C and C++ compilers |
library/sources/ | Yeppp! source code |
examples/c/ | Examples of calling Yeppp! functions in C code |
docs/c/ | Yeppp! documentation for C and C++ programmers |
SetVars.cmd | Windows batch script to setup environment variables for Yeppp! |
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. On Windows we recommend that you use the MSI installer for Yeppp! SDK. The installer will install the library components, and also set YEPROOT environment variable.
Open the Visual C++ project where you want to use Yeppp! . Choose Project->Properties in the main menu. A project properties window will appear on the screen.
Choose "All configurations" and "All platforms" in the combo boxes on the top of the window.
Expand the "C/C++" option group, and open "General" subgroup of options. Add $(YEPROOT)\library\headers
to Additional Include Directories list. This will tell the compiler where it can find the header files for Yeppp! library. The $(YEPROOT) environment variable specifies the directory where Yeppp! SDK is installed. This variable is set by Yeppp! SDK installer.
Similarly, expand the "Linker" option group, and open "General" subgroup of options. Add $(YEPROOT)\binaries\windows\
to Additional Library Directories list, so the linker will know where to search for Yeppp! import library (yeppp.lib). The path will expand to $(YEPROOT)\binaries\windows\x86
for 32-bit (x86) builds, and to $(YEPROOT)\binaries\windows\amd64
when targeting 64-bit (x64 AKA amd64) platform.
Now switch to "Input" subgroup of Linker options. Add yeppp.lib
to Additional Dependencies list. This file provides the linker with information about the functions in Yeppp! library.
Finally, you need to let Windows know where to find Yeppp! DLL. The easy way to achieve it is to copy yeppp.dll (which should match your target platform) to your output directory.
Now you are ready to use Yeppp!
Download the recent release of Yeppp! from the official website. On Windows we recommend that you use the MSI installer for Yeppp! SDK. The installer will install the library components, and also set YEPROOT environment variable.
Open the Visual Studio Command Prompt for your target platform (x86 or x64). With Yeppp! we provide a shell script to set up environment variables. In the Visual Studio Command Prompt execute the command
where <arch>
specifies the architecture for which you want to compile your program. The following values are accepted:
x86
to set variables for x86 (32-bit x86) target x64
to set variables for x86-64 (64-bit x86 aka AMD64 aka x64) target You can also omit the <arch> parameter. This case the setup script will auto-detect the OS architecture and set the environment variable accordingly.
The SetVars.bat script modifies environment variables INCLUDE and LIB which tell the compilers where to search for Yeppp! headers and import library. It also sets environment variables to let the system find Yeppp! when you execute a program which makes use of this library.
Now just add yeppp.lib
option when linking your program, e.g.
and you are ready to use Yeppp! in your codes!
Download the recent release of Yeppp! from the official website. On Windows we recommend that you use the MSI installer for Yeppp! SDK. Make sure that you mark "Android NDK Integration" feature for installation, and that the installation directory does not contain any spaces. The installer will install the library components, and also set YEPROOT environment variable.
Yeppp! integrates with Android NDK as an import module. To enable Yeppp! in your Android NDK project, first open the Android.mk in a text editor. Addyeppp
to the list of required shared libraries:
In the end of Android.mk file add the line
(note that there is no space before yeppp
).
Now open a Command Prompt window and execute command
(you may still specify the <arch> parameter as described in the previous section, but it is not necessary for building Android programs).
The SetVars.bat script adjusts environment variable NDK_MODULE_PATH which is used by Android NDK build system to find import module desciptions.
Now you can use this Command Prompt window to build your Yeppp! -powered Android NDK projects via the standard ndk-build script.
Download and unpack 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 modifies environment variables CPATH and LIBRARY_PATH which tell the compilers where to search for Yeppp! headers and binaries. However, when doing cross-compilation the linker ignores LIBRARY_PATH variable, so you will need to manually specify the search directory for Yeppp! binaries by adding -L to LDFLAGS. It also sets environment variables to let the dynamic linker find Yeppp! when you execute a program which makes use of this library.
Now just add -lyeppp
option when linking your program, e.g.
and you can use Yeppp! in your codes!
Download and unpack the recent release of Yeppp! from the official website.
Yeppp! integrates with Android NDK as an import module. To enable Yeppp! in your Android NDK project, open the Android.mk in a text editor and addyeppp
to the list of required shared libraries:
In the end of Android.mk file add the line
(note that there is no space before yeppp
).
Open a terminal window where you plan to build your program and execute command
If your shell does not support source
command, use the equivalent command
(you may still specify the <arch> parameter as described in the previous section, but it is not necessary for building Android programs).
The set-vars.sh script adjusts environment variable NDK_MODULE_PATH which is used by Android NDK build system to find import module desciptions.
Now you can use this terminal window to build your Yeppp! -powered Android NDK projects via the standard ndk-build script.