cuda的模型很简洁,基本上就是针对一大段数据,调用函数并行处理。
但是目前限制很多,如所有gpu上执行的函数都必须内联,这意味着你没法
用模块化或面向对象的设计来分离复杂系统。还有寄存器十分有限,
对Ray tracing来说基本不够用,这让gpu的吞吐量无法很高。
不过,作为一个飞速发展的并行模型来说,未来有很大的潜力。
600 path per pixel
这张图是针对smallpt改造的cuda版本,作为都没有优化的版本来说,gpu的速度
惊人,比cpu版本快几十倍。不过,这是特例,smallpt的结构太简单,一旦加上
复杂的模型,灯光,材质,贴图,gpu未必能超过cpu,这得在以后慢慢试验。
目前只改写了材质系统。