It looks like you're using an Ad Blocker.
Please white-list or disable AboveTopSecret.com in your ad-blocking tool.
Thank you.
Some features of ATS will be disabled while you continue to use an ad-blocker.
originally posted by: stormcell
a reply to: gspat
Bitcoin mining involves integer and bitwise calculations so it isn't a problem for them. When you are doing scientific calculations like fluid dynamics and finite-element analysis, the mathematical calculations require that the state of each cell is used to calculate the state of adjacent cells in the next generation using floating-point calculations.
I've encountered that problem with multi-threaded calculations. I was trying to calculate the volume of a 3D blob-thing, so I take all the volumes of the itty-bitty tetrahedrons and add them together in separate threads and then add those results together. Somewere along the line the arithmetic errors cancel out in some places, and add up together in others so the error threshold increases. Depending on the order of addition, the results would be different.
I really didn't want to investigate any further, so the quick fix was to use double precision and pretend it never happened.
The primary sources of floating point errors are alignment and normalization. Alignment is the shifting operation that must occur when adding or subtracting numbers with differing exponents. Normally, the fractional value (significand plus the hidden bit) is greater than or equal to 1. and less than 2. The process of shifting the significand to create this situation is called "normalization". Right shifting operations will provide digits in the result that will no longer fit in the specified format. These bits can be dropped to round the result down[34]:6 , or can be used to round the result up. Some numbers cannot be accurately depicted in an fixed format computer representation and must be rounded. Either case introduces a "rounding error", resulting in a slightly smaller or slightly larger representation of the real number represented. In a single operation, rounding may not introduce a significant error, but collectively, over a large number of operations, the result could be so erroneous so as to be useless.
Similarly, when subtracting similar number, the value must be normalized by shifting the significand left. This introduces useless bits into the right hand side of the significand, called cancellation.[34]:20 This may remove sufficient significant digits so that the represented value is worthless and is called "catastrophic cancellation." Cancellation otherwise still introduces error called "benign cancellation."
Neither rounding error nor cancellation error are recognized nor recorded by standard floating point operations and therefore the results of floating point operations are equivocal.
originally posted by: GetHyped
a reply to: dug88
Rounding error should not differ when performing exactly the same sequence of calculations, as per the issue with the nVidia cards.
originally posted by: GetHyped
a reply to: dug88
Rounding error should not differ when performing exactly the same sequence of calculations, as per the issue with the nVidia cards.
... a simpler repeated loop shows errors with matrix multiplication and division, but only without the newer matrix math functions afaik.
originally posted by: dug88
originally posted by: GetHyped
a reply to: dug88
Rounding error should not differ when performing exactly the same sequence of calculations, as per the issue with the nVidia cards.
Floating point errors are handled differently on. Different CPUs/GPU's handle them differently...nvidia's are obviously just kinda #ty at it.
originally posted by: moebius
a reply to: Aazadan
You are confusing things here. While floating point numbers have limited precision, you will still always get the same limited precision result from the same arithmetic operation.
This bug doesn't have anything to do with rounding. There is some speculation about memory being the issue. My guess it is simply a hardware bug.
www.reddit.com...
... a simpler repeated loop shows errors with matrix multiplication and division, but only without the newer matrix math functions afaik.