Я использую движок, который позволяет писать SIMD-код, и он работает быстро. Но есть только один блок, в котором есть весь код.
Я понимаю, что этот код запускается независимо для каждой сущности одновременно, но когда изменяется только одна вещь, все равно быстрее вычислять ее независимо? Это идея с SIMD, параллелизмом?
Например:
void simdFunction ()
{
center = mesh.center(); // always the same
vert.pos.x = center.x; // run on each vertex
}
В этом случае центр всегда один и тот же, поэтому будет ли он рассчитываться для каждой вершины на SIMD? Если да, то насколько это эффективно?
В принципе, возможность запускать это параллельно перевешивает затраты на его вычисление независимо от общего смысла программирования SIMD?