Loading...
Searching...
No Matches
Go to the documentation of this file.
68#ifndef __SAF_EXTERNALS_H_INCLUDED__
69#define __SAF_EXTERNALS_H_INCLUDED__
80#if (defined(SAF_USE_INTEL_MKL_LP64) + \
81 defined(SAF_USE_INTEL_MKL_ILP64) + \
82 defined(SAF_USE_OPEN_BLAS_AND_LAPACKE) + \
83 defined(SAF_USE_ATLAS) + \
84 defined(SAF_USE_GSL) + \
85 defined(SAF_USE_APPLE_ACCELERATE_LP64) + \
86 defined(SAF_USE_APPLE_ACCELERATE_ILP64)) != 1
87# error One (and only one) performance library flag should be defined!
97#if defined(SAF_USE_INTEL_MKL_LP64)
113#elif defined(SAF_USE_INTEL_MKL_ILP64)
128#elif defined(SAF_USE_OPEN_BLAS_AND_LAPACKE)
150#elif defined(SAF_USE_ATLAS)
160# include "cblas-atlas.h"
162# warning Note: CLAPACK does not include all LAPACK routines!
164#elif defined(__APPLE__) && defined(SAF_USE_APPLE_ACCELERATE_LP64)
185# include "Accelerate/Accelerate.h"
187#elif defined(__APPLE__) && defined(SAF_USE_APPLE_ACCELERATE_ILP64)
196# if !defined(ACCELERATE_NEW_LAPACK)
197# error ACCELERATE_NEW_LAPACK should also be added to preprocessor definitions
199# if !defined(ACCELERATE_LAPACK_ILP64)
200# error ACCELERATE_LAPACK_ILP64 should also be added to preprocessor definitions
202# include "Accelerate/Accelerate.h"
204#elif defined(SAF_USE_GSL)
212# error Using GNU Scientific Library (GSL) is currently unsupported/incomplete
213# include "gsl_cblas.h"
220# error SAF requires a library (or libraries) which supports CBLAS and LAPACK
228#if defined(SAF_USE_INTEL_IPP)
245#if defined(SAF_USE_FFTW)
262#if defined(SAF_ENABLE_SIMD)
281# if (defined(__AVX__) && defined(__AVX2__)) || defined(__AVX512F__)
286# include <immintrin.h>
288# if defined(__SSE__) && defined(__SSE2__) && defined(__SSE3__)
289# include <xmmintrin.h>
290# include <emmintrin.h>
291# include <pmmintrin.h>
293# error SAF_ENABLE_SIMD requires at least SSE, SSE2 and SSE3 support
297#if defined(SAF_ENABLE_SOFA_READER_MODULE)
319# ifdef SAF_ENABLE_NETCDF
330#if defined(SAF_USE_INTEL_MKL_LP64)
331# define SAF_CURRENT_PERFORMANCE_LIBRARY_STRING "Intel MKL (LP64)"
332#elif defined(SAF_USE_INTEL_MKL_ILP64)
333# define SAF_CURRENT_PERFORMANCE_LIBRARY_STRING "Intel MKL (ILP64)"
334#elif defined(SAF_USE_OPEN_BLAS_AND_LAPACKE)
335# define SAF_CURRENT_PERFORMANCE_LIBRARY_STRING "OpenBLAS with LAPACKE"
336#elif defined(SAF_USE_ATLAS)
337# define SAF_CURRENT_PERFORMANCE_LIBRARY_STRING "ATLAS"
338#elif defined(__APPLE__) && defined(SAF_USE_APPLE_ACCELERATE_LP64)
339# define SAF_CURRENT_PERFORMANCE_LIBRARY_STRING "Apple Accelerate (LP64)"
340#elif defined(__APPLE__) && defined(SAF_USE_APPLE_ACCELERATE_ILP64)
341# define SAF_CURRENT_PERFORMANCE_LIBRARY_STRING "Apple Accelerate (ILP64)"
343# define SAF_CURRENT_PERFORMANCE_LIBRARY_STRING "NONE"
347#if defined(SAF_USE_INTEL_IPP)
348# define SAF_INTEL_IPP_STATUS_STRING "Enabled"
350# define SAF_INTEL_IPP_STATUS_STRING "Disabled"
354#if defined(SAF_USE_FFTW)
355# define SAF_FFTW_STATUS_STRING "Enabled"
357# define SAF_FFTW_STATUS_STRING "Disabled"
361#if defined(SAF_ENABLE_SIMD)
362# define SAF_SIMD_STATUS_STRING "Enabled"
364# if defined(__AVX512F__)
365# define SAF_ENABLED_SIMD_INTRINSICS_STRING "SSE, SSE2, SSE3, AVX, AVX2, AVX512F"
366# elif defined(__AVX__) && defined(__AVX2__)
367# define SAF_ENABLED_SIMD_INTRINSICS_STRING "SSE, SSE2, SSE3, AVX, AVX2"
368# elif defined(__SSE__) && defined(__SSE2__) && defined(__SSE3__)
369# define SAF_ENABLED_SIMD_INTRINSICS_STRING "SSE, SSE2, SSE3"
371# define SAF_ENABLED_SIMD_INTRINSICS_STRING "None"
374# define SAF_SIMD_STATUS_STRING "Disabled"
375# define SAF_ENABLED_SIMD_INTRINSICS_STRING "None"
379#if defined(SAF_ENABLE_NETCDF)
380# define SAF_NETCDF_STATUS_STRING "Enabled"
382# define SAF_NETCDF_STATUS_STRING "Disabled"
386#define SAF_EXTERNALS_CONFIGURATION_STRING \
387 "Current SAF externals configuration: " "\n" \
388 " - Performance library: " SAF_CURRENT_PERFORMANCE_LIBRARY_STRING "\n" \
389 " - Intel IPP status: " SAF_INTEL_IPP_STATUS_STRING "\n" \
390 " - FFTW status: " SAF_FFTW_STATUS_STRING "\n" \
391 " - SIMD status: " SAF_SIMD_STATUS_STRING "\n" \
392 " - Enabled intrinsics: " SAF_ENABLED_SIMD_INTRINSICS_STRING "\n" \
393 " - netCDF status: " SAF_NETCDF_STATUS_STRING "\n"