Comments (6)
Ran a quick experiment where I modified 11.5 libcu++. Modifications were to fix double cast and comment out isnan checks. This data indicates the isnan checks are still very expensive on performance. 65us vs 110us.
The benchmark is found here: https://github.com/NVIDIA/MatX/blob/main/bench/00_transform/conv.cu
A100 isnan checks, double fix
T | Samples | CPU Time | Noise | GPU Time | Noise | Batch GPU | Batch |
---|---|---|---|---|---|---|---|
cuda::std::__4::complex | 31079x | 120.867 us | 1.40% | 112.339 us | 0.53% | 109.970 us | 31080x |
A100 NO isnan checks, double fix
T | Samples | CPU Time | Noise | GPU Time | Noise | Batch GPU | Batch |
---|---|---|---|---|---|---|---|
cuda::std::__4::complex | 32944x | 76.357 us | 1.45% | 67.539 us | 1.59% | 64.615 us | 32945x |
from libcudacxx.
@griwes @wmaxey @gonzalobg @brycelelbach
Can any of you shine some light on this?
from libcudacxx.
from libcudacxx.
This implementation appears to be inherited from the C99 Standard Annex G
Given that the C++ Standard does not implicitly inherit everything from the C Standard and https://eel.is/c++draft/complex.numbers#general-3 makes no mention of any requirement about anything like this, I am convinced that we can remove this from our implementation and remain conforming to the C++ Standard.
from libcudacxx.
I am wary of changing the current implementation because of non subtle runtime differences it would introduce. Those would only happen in a denormal case but still could potentially silently break user code.
Given that the chance of breaking something is rather slim and users might prefer the performance I would propose to add a feature macro that removes the sanitation of denormals.
Something in the direction LIBCUDACXX_ENABLE_SIMPLIFIED_COMPLEX_OPERATIONS
?
Obviously I would like to tackle this in #338
from libcudacxx.
#338 because editing a comment does not link the issue / PR
from libcudacxx.
Related Issues (20)
- [Question] understanding documentation of cuda::atomic::atomic_thread_fence HOT 2
- CUDA Tuple Structured Binding Declaration Broken HOT 4
- libcu++ should document policy for mixing a custom version with the CUDA Toolkit HOT 2
- `error: "cuda::std::cuda" is ambiguous` when including <cuda/std> HOT 6
- Issue with cuda::atomic_ref::notify_one and wait HOT 1
- Feature request: fp32 multiplication with zero optimization specifier HOT 5
- Copyright in `nv` files HOT 2
- A device variable cannot be marked constexpr (cuda::std::swap / CTK 11.2) HOT 2
- `proclaim_return_type` and `__invoke` should be decorated with `nv_exec_check_disable` HOT 2
- Add `cuda::std::expected`
- Placement new creates performance issues
- libcu++ should not define __host__/__device__/__forceinline__ (or any other runtime macros) HOT 2
- atomic fence questions HOT 2
- Hide if target bits from NVCC/NVRTC
- Function objects in `<functional>` need to be annotated with `nv_exec_check_disable` HOT 1
- Does `cuda::std::complex` have opt-in for simplified complex math HOT 3
- libcu++ should build with gcc-6
- Passing `cuda::proclaim_return_type` to `thrust::make_transform_iterator` gives compilation error HOT 1
- Support fixed-width floating point types
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from libcudacxx.