Hardintrinsics

Что такое intrinsic-функции?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Intrinsic — функции, которые компилятор заменяет на конкретные инструкции CPU (обычно SIMD). В отличие от inline asm, компилятор понимает зависимости и может оптимизировать вокруг.

#include <immintrin.h>   // все Intel intrinsic

// SSE: сложить 4 float за одну инструкцию
__m128 a = _mm_set_ps(1, 2, 3, 4);
__m128 b = _mm_set_ps(5, 6, 7, 8);
__m128 sum = _mm_add_ps(a, b);   // одна инструкция addps

// AVX: 8 double одновременно
__m256d va = _mm256_set1_pd(2.0);

// Не-SIMD: timestamp counter, bit scan
uint64_t t = __rdtsc();
unsigned long idx;
_BitScanForward(&idx, mask);

Заголовки: <xmmintrin.h> (SSE), <immintrin.h> (все Intel), <arm_neon.h> (ARM). Для портабельного SIMD — библиотеки xsimd, highway.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.