Hello. In manual.cpp for AlgLib 3.19.0 it's writtren "If one needs a SIMD-capable application with portability guarantees, one has to: •#define AE_CPU=AE_INTEL preprocessor symbol at the global level •compile kernels_fma.cpp with SSE2/AVX2/FMA support enabled at the compiler level ... It is possible to selectively disable a SIMD instruction set of your choice by combining AE_CPU=AE_INTEL #definition with one of the following #defines: •AE_NO_FMA to skip compilation of the FMA-capable kernels •AE_NO_AVX2 to skip compilation of the AVX2/FMA-capable kernels •AE_NO_SSE2 to skip compilation of all SSE2/AVX2/FMA SIMD kernels"
But when i use functions from linalg.h in Visual Studio Express 2015, compiler get many errors like "undefined symbol _ABLASF_KERNEL_SIZE1" and so on. Using compiler switch AE_NO_SSE2 doesnot help to resolve this problem. When i define ALGLIB_NO_FAST_KERNELS to switch off SIMD instruction or _ALGLIB_IMPL_DEFINES to switch them on, example from demo.cpp (4.5.2 Compiling under Windows) execute in both cases. May I use this switchs safely? If not - help me, please, to find right way.
|