Giter VIP home page Giter VIP logo

Comments (3)

silverbacknet avatar silverbacknet commented on July 1, 2024

I'm not sure the difference would even rise above measurement noise on any platform that can support x64, and I doubt it would ever be meaningful, it's so quick already. Most likely the "approximate" part of those instructions was just not noticed, since they're identical in x86 mode. (The RCPPS is outside the loop, so swapping it wouldn't even exist on a profile anyway.)

from opus.

jmvalin avatar jmvalin commented on July 1, 2024

If you want completely deterministic, you probably better stick to fixed point -- and even then I'm not 100% sure. With floating-point every compiler version, compile flag, build option, ... will change the result. Even if you consider a particular binary, there are other CPU-dependent bits of code that will change the results. For example, if the C code computes (a+b)+c and SSE computes a+(b+c), then the results may be different. Similarly, I believe the same a+b*c can give a different result depending on whether it's computed using mul and add, or using a fused multiply-add.

from opus.

TetraSomia avatar TetraSomia commented on July 1, 2024

Thank you for the quick replies!

Indeed using fixed point might be the safest way to go, but I was worried about the performance and quality impact as suggested in the README.

However, our use case really focus on a single DLL, which is compiled once, and runs on both platforms. So from what I understand, the resulting Opus may only vary based on runtime CPU feature detection (using CPUID), and from the "approximate" instructions that I mentioned above (I found those here, but the list might not be exhaustive).

On our CPUs, the SSE/AVX/FMA/... feature set seems equivalent on AMD and Intel, so we are only left with the approx-instructions causing trouble.

So yeah... Our use case might be a bit specific, and not worth the macro πŸ˜„

Anyway, thanks for the insights!

from opus.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.