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 подскажет развёрнутый ответ в реальном времени.