Я работаю в Visual Studio 2008, и в настройках проекта я вижу опцию «Активировать расширенный набор инструкций», которую я могу установить на Нет, SSE или SSE2
То есть компилятор будет пытаться объединить инструкции вместе, чтобы использовать инструкции SIMD?
Существуют ли правила, которым можно следовать при оптимизации кода, чтобы компилятор мог создавать эффективный ассемблер с использованием этих расширений?
Например, в настоящее время я работаю над raytracer. Шейдер получает некоторый вход и вычисляет из него выходной цвет, например:
PixelData data = RayTracer::gatherPixelData(pixel.x, pixel.y);
Color col = shadePixel(data);
Было бы полезно, например, написать код шейдера так, чтобы он затенял 4 разных пикселя за один вызов команды? как то так:
PixelData data1 = RayTracer::gatherPixelData(pixel1.x, pixel1.y);
...
shadePixels(data1, data2, data3, data4, &col1out, &col2out, &col3out, &col4out);
для обработки нескольких блоков данных одновременно. Это было бы полезно для того, чтобы компилятор использовал инструкции SSE?
спасибо!