By using this site, you agree to our Privacy Policy and our Terms of Use. Close
vivster said:
BlkPaladin said:

Just a correction you are not entirely correct about this. Percision is not how accuratly the chip does the calculation but how big the instruction is, that is when you are dealing with programming. FP16, floating point 16, are floating point instructions that are only 16-bits big maximum. And FP32 are 32 bit max instructions. For some procedures you only need FP16 and if you optimize correctly you can run two instruction concurently depending on the chip, from how nVidia is advertising this chip it seems to be the case. So in some cases and if you don't need 32-bit instructions you can process instructions faster this way.

This is one of the reasons why you don't want to look at just FLOPS, or anything else as is. I seen a person saying that the Xbox One runs at twice the speed if you do it in FP16 which may not be the case since the chip might not be able to do two FP16 instructions at the same time, though it may allow them.

Well, the length of a floating point number IS its precision. Like 3.14159265359 is more precise than 3.14. It's used like that in physics where precision is important and as such you will use the most precise number possible. You can use smaller numbers but the end product while correct will not be as precise.

Precision is just a fancy word for longer numbers.

I covered that in my answer, which I was editing at the time to add more infomation. But the way you orginally worded it make is sound like the calcuations may not come out correctly, and you don't alway want to be percise because in a lot of calcuations needless percision can throw off you results.

In programming which is what chips deal with you may not need to run instruction in FP32, and do it in FP16 instead which speeds up calcuations especially when the chips allow two FP16 instructions to run concurrently, if I remember correctly it is how many registers there are to run an instruction. Some chips use two 16-bit registers to run a 32-bit instruction and can change to doing two 16-bit instructions on the fly when there is optimization for it on the machine level. This allows for some secections of code to run faster. And on the other hand some registers are 32-bit registers only so even if you are putting 16-bit instructions through them they can only do one instruction at a time.