【发布时间】:2011-04-30 21:56:33
【问题描述】:
我在 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 指令吗?
谢谢!
【问题讨论】:
标签: c++ compiler-construction simd