Skip to content

Commit

Permalink
conform to daal ABI
Browse files Browse the repository at this point in the history
  • Loading branch information
icfaust committed Mar 2, 2025
1 parent b59671d commit 10cc2df
Showing 1 changed file with 29 additions and 27 deletions.
56 changes: 29 additions & 27 deletions cpp/daal/src/algorithms/kernel_inst_x86.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,35 +20,37 @@
// Defines used for kernel allocation, deallocation and calling kernel methods
//--
*/
#include "services/daal_defines.h"
//useage of DAAL_EXPORT is only to not break ABI. It can be removed in the next major release (2026.0)

#ifndef __KERNEL_INST_X86_H__
#define __KERNEL_INST_X86_H__
#define __KERNEL_INST_X86_H__

#define __DAAL_INSTANTIATE_DISPATCH_IMPL(ContainerTemplate, Mode, ClassName, BaseClassName, GetCpuid, ...) \
DAAL_KERNEL_SSE2_CONTAINER1(ContainerTemplate, __VA_ARGS__) \
DAAL_KERNEL_SSE42_CONTAINER1(ContainerTemplate, __VA_ARGS__) \
DAAL_KERNEL_AVX2_CONTAINER1(ContainerTemplate, __VA_ARGS__) \
DAAL_KERNEL_AVX512_CONTAINER1(ContainerTemplate, __VA_ARGS__) \
namespace interface1 \
{ \
template <> \
ClassName<Mode, ContainerTemplate<__VA_ARGS__, sse2> DAAL_KERNEL_SSE42_CONTAINER(ContainerTemplate, __VA_ARGS__) \
DAAL_KERNEL_AVX2_CONTAINER(ContainerTemplate, __VA_ARGS__) \
DAAL_KERNEL_AVX512_CONTAINER(ContainerTemplate, __VA_ARGS__)>::ClassName(daal::services::Environment::env * daalEnv) \
: BaseClassName(daalEnv), _cntr(nullptr) \
{ \
GetCpuid switch (__DAAL_KERNEL_MIN(DAAL_KERNEL_BUILD_MAX_INSTRUCTION_SET_ID, cpuid)) \
{ \
DAAL_KERNEL_SSE42_CONTAINER_CASE(ContainerTemplate, __VA_ARGS__) \
DAAL_KERNEL_AVX2_CONTAINER_CASE(ContainerTemplate, __VA_ARGS__) \
DAAL_KERNEL_AVX512_CONTAINER_CASE(ContainerTemplate, __VA_ARGS__) \
default: _cntr = (new ContainerTemplate<__VA_ARGS__, sse2>(daalEnv)); break; \
} \
} \
\
template class ClassName<Mode, ContainerTemplate<__VA_ARGS__, sse2> DAAL_KERNEL_SSE42_CONTAINER(ContainerTemplate, __VA_ARGS__) \
DAAL_KERNEL_AVX2_CONTAINER(ContainerTemplate, __VA_ARGS__) \
DAAL_KERNEL_AVX512_CONTAINER(ContainerTemplate, __VA_ARGS__)>; \
}
#define __DAAL_INSTANTIATE_DISPATCH_IMPL(ContainerTemplate, Mode, ClassName, BaseClassName, GetCpuid, ...) \
DAAL_KERNEL_SSE2_CONTAINER1(ContainerTemplate, __VA_ARGS__) \
DAAL_KERNEL_SSE42_CONTAINER1(ContainerTemplate, __VA_ARGS__) \
DAAL_KERNEL_AVX2_CONTAINER1(ContainerTemplate, __VA_ARGS__) \
DAAL_KERNEL_AVX512_CONTAINER1(ContainerTemplate, __VA_ARGS__) \
namespace interface1 \
{ \
template <> \
DAAL_EXPORT ClassName<Mode, ContainerTemplate<__VA_ARGS__, sse2> DAAL_KERNEL_SSE42_CONTAINER(ContainerTemplate, __VA_ARGS__) \
DAAL_KERNEL_AVX2_CONTAINER(ContainerTemplate, __VA_ARGS__) DAAL_KERNEL_AVX512_CONTAINER( \
ContainerTemplate, __VA_ARGS__)>::ClassName(daal::services::Environment::env * daalEnv) \
: BaseClassName(daalEnv), _cntr(nullptr) \
{ \
GetCpuid switch (__DAAL_KERNEL_MIN(DAAL_KERNEL_BUILD_MAX_INSTRUCTION_SET_ID, cpuid)) \
{ \
DAAL_KERNEL_SSE42_CONTAINER_CASE(ContainerTemplate, __VA_ARGS__) \
DAAL_KERNEL_AVX2_CONTAINER_CASE(ContainerTemplate, __VA_ARGS__) \
DAAL_KERNEL_AVX512_CONTAINER_CASE(ContainerTemplate, __VA_ARGS__) \
default: _cntr = (new ContainerTemplate<__VA_ARGS__, sse2>(daalEnv)); break; \
} \
} \
\
template class ClassName<Mode, ContainerTemplate<__VA_ARGS__, sse2> DAAL_KERNEL_SSE42_CONTAINER(ContainerTemplate, __VA_ARGS__) \
DAAL_KERNEL_AVX2_CONTAINER(ContainerTemplate, __VA_ARGS__) \
DAAL_KERNEL_AVX512_CONTAINER(ContainerTemplate, __VA_ARGS__)>; \
}

#endif

0 comments on commit 10cc2df

Please sign in to comment.