-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Testing and Benchmarking #1
Comments
For individual operations, e.g.
The algorithms in round to nearest of the paper actually emulate the use of |
also I think testing / benchmarking when using multiple threads would be interesting (to my understanding, one issue of the deprecated setrounding is that it wasn't thread safe) |
cc @lbenet , I think you'll find this very interesting |
I think thread safety is going to be platform dependent; from the LLVM discussion
Some architectures, as AMD and NVIDIA GPU, and the AVX-512 registers implement a static rounding mode Intel® Architecture What worries me the most is that having these two coexistent mechanisms could lead to worrying problems:
|
Hi @lucaferranti, I implemented some Benchmarks (some of them are now run as test by the CI).
The benchmarks are scripts in the benchmark directory, to be called from the command line; there are new testsets in runtest.jl to check the multithreading behavior and the behavior of BLAS. CUDA: It is possible to get the rounding mode by using the llvm.flt.rounds intrinsic, but the llvm.set.rounding intrinsic is not working. |
This is an issue to test and Benchmark setting rounding modes through llvm intrinsics.
At the moment the test set checks that directed rounding is working; the test was successful on Linux, Windows and Mac Os;
the CI package is testing on all of these platforms.
Further tests
llvm_setrounding
behaves with respect to GPU (since it is using llvm intrinsics, this may be well behaved)Benchmarks
mode; I think their algorithm with only rounding to nearest is similar to the one in RoundingEmulator.jl
The text was updated successfully, but these errors were encountered: