POPPUR爱换

标题: 一些常见动作的浮点操作数量 [打印本页]

作者: Edison    时间: 2006-2-1 21:37
标题: 一些常见动作的浮点操作数量
texture interpolation(FP16 on NV G60/G70):
Bilinear interpolation per one component takes 4 multiplies, 3 adds and 2 subs: 9 ops, x4 channels = 36 flops.

blend operation (FP16  on G60/G70/X1000buffer) 12 flops.

vec4 add/mul/sub(?)/div(?): 1flop*4 = 4flops

vec4 mad: 2 flops*4 = 8 flops

nrm:

squareRootOfTheSum = (src0.x*src0.x + src0.y*src0.y + src0.z*src0.z)1/2;
dest.x = src0.x * (1 / squareRootOfTheSum);
dest.y = src0.y * (1 / squareRootOfTheSum);
dest.z = src0.z * (1 / squareRootOfTheSum);
dest.w = src0.w * (1 / squareRootOfTheSum);
"在計算「平方根倒數」的時候,通常是用查表(假設不需要高的精確度),因此,它通常不算成一個浮點咚恪
作者: carl319    时间: 2006-6-26 20:23
提示: 作者被禁止或删除 内容自动屏蔽
作者: vp    时间: 2006-7-16 11:50
去看看定点DSP怎么产生足够精度的小数(比如Ti的一堆数学运算库函数),就知道大部分pc平台的程序员在算法优化方面差距还太远。
作者: RacingPHT    时间: 2006-7-16 15:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: vp    时间: 2006-7-16 18:47
我没有贬低通用库函数,我的意思是在游戏这类对精度要求不高的运算上,可以在某些时候采用定点算法来取代浮点算法。而定点算法的典型应用就是Ti在其定点DSP上写的库函数,可以作为参考。而PC程序员由于几乎不会考虑浮点和定点有什么区别(谁让PC有FPU呢),因此很多人甚至不知道定点小数为何物。定点算法基本等同于整数运算,因此比浮点运算需要的指令周期更少。但是其精度有限,需要更长的位数来保证精度,同时容易出现溢出等问题,因此需要程序员对其精心设计,一般PC程序员是不会干这种脏活累活的,只有定点DSP开发者才会专心于这些算法。
作者: RacingPHT    时间: 2006-7-16 21:48
提示: 作者被禁止或删除 内容自动屏蔽
作者: Illuminati    时间: 2006-8-7 19:33
原帖由 carl319 于 2006-6-26 20:23 发表
reciprocal square roots在游戏中vector normalization的计算很有必要,的确查表可以换来速度提升,这也是一般游戏所采用的方法。但如果看看quake3的源代码,你就会发现carmark确实很强。
给出purdue unversity某 ...


如果用 SSE, 一条汇编 sqrtss 就差不多了
作者: hopetoknow2    时间: 2006-9-4 16:55
标题: 回复 #2 carl319 的帖子
这个反sqrt的技巧在ICC编译器面前就是笑话,轻易就能干掉。 一大悲剧。
作者: hopetoknow2    时间: 2006-9-4 17:03
标题: 回复 #5 vp 的帖子
TI的C62/64浮点库,DSP若要达到float基本精度来计算,是要付出毁灭性的性能倒退的代价。 性能上, 能不能干过被淘汰了好几年的CPU都是大问题,将被轻易摧毁。

一些DSP开发人员, 根本不了解 CPU的性能优化 已经能够深入到什么地步, 或者对DSP性能限制并不了解,太不知深浅了。
作者: ibelieveicandie    时间: 2006-9-20 21:14
回忆起当年ps没有fpu,不得不手写并且维护一个定点库的惨痛经历。
无论如何不想再回到那个时代了,代码维护的噩梦啊。
作者: RacingPHT    时间: 2006-9-20 21:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: RacingPHT    时间: 2006-9-25 11:11
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 POPPUR爱换 (https://we.poppur.com/) Powered by Discuz! X3.4