我在 Visual Studio 2008 中工作,在项目设置中我看到“激活扩展指令集”选项,我可以将其设置为无、SSE 或 SSE2
那么编译器会尝试将指令一起批处理以利用 SIMD 指令吗?
在如何优化代码以使编译器可以使用这些扩展制作高效的汇编程序时,是否有任何规则可以遵循?
例如,目前我正在研究光线追踪器。着色器接受一些输入并根据输入计算输出颜色,如下所示:
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 指令吗?
谢谢!