simd single instruction mupltiple data
или как ускорить обработку данных на компьютере
давайте представим: массив из 1000 целых чисел и нам нужно сложить их вместе чтобы узнать сумму. в методологии sisd single instruction single data процессор обойдет весь массив и к каждому элементу применит операции LOAD (получение элемента) -> ADD (сложение) -> STORE (сохранение промежуточного результата). итого учитывая что одна операция = один такт процессора получаем 3 такта на один элемент и 3000 тактов на массив
simd же предлагает немного иной подход
благодаря увеличению памяти для регистра (ячейка куда можно положить значение) вместо одного числа мы можем записывать целые векторы (4 по 32 бит если у нас 128 бит регистр или 8 по 32 если 256) и производить над ними операции ОДНОВРЕМЕННО таким образом вместо массива из 1000 чисел мы получаем массив из 250 векторов (берем вектор по 4 числа) и для каждого применяем те же операции только ADD применяется к каждому элементу вектора. итого 250 векторов и 6 тактов на каждый получается 1500 такта. сокращение затрат процессора при таком подходе 50% это сумасшедшие цифры
опять таки не все массивы можно разбить на векторы, если процессор слабый и имеет маленький регистр или элемент массива занимает слишком много памяти провернуть такое не получится. но при прочих равных для повседневных задач такой подход оказывается гораздо эффективнее. применяется в графике, 3д визуализации, машинном обучении
· 17.12.2025
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён