-
Notifications
You must be signed in to change notification settings - Fork 902
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
Add compiled binary operation #8192
Add compiled binary operation #8192
Conversation
solves is_constructible issue with nvcc custom class is not needed since __shared__ issue is fixed with time_point
Codecov Report
@@ Coverage Diff @@
## branch-21.08 #8192 +/- ##
===============================================
Coverage ? 10.67%
===============================================
Files ? 109
Lines ? 18667
Branches ? 0
===============================================
Hits ? 1993
Misses ? 16674
Partials ? 0 Continue to review full report at Codecov.
|
cpp/src/binaryop/compiled/traits.hpp
Outdated
// has common type | ||
template <typename AlwaysVoid, typename... Ts> | ||
struct has_common_type_impl : std::false_type { | ||
}; | ||
|
||
template <typename... Ts> | ||
struct has_common_type_impl<std::void_t<std::common_type_t<Ts...>>, Ts...> : std::true_type { | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
detail
namespace on these.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done. moved few more *_impl
into detail
namespace.
@gpucibot merge |
Add compiled binary operations (instead of jit).
(column_view lhs OP column_view rhs) => output_type
(scalar lhs OP column_view rhs) => output_type
(column_view lhs OP scalar rhs) => output_type
This PR adds compiled binary operations for fixed_width types.
string operations are already compiled.
Partially addresses #7801
Approach:
Each triple dispatcher compilation takes 60 seconds.
So, the device side dispatch is done in 2 ways.
common_type<Out, Lhs, Rhs>
,single device side dispatch with nested individual type dispatch.Each operation compile time will be close to 30 seconds.
Adds ~4 minutes compilation time (ninja -j 12) (1.5 minutes for cu files, util.cpp takes 2.5 minutes)
Identifying common_type is done in host.
Operations functor is defined only for types supported.
and for operation not supported, no operation is done in device code.
- [ ]Coalesce, redirect Userdefined to jit.Unit tests:
It can't test all types. compilation time would be huge.
while, covering all valid combinations of types in all operations, while keeping it minimal.
Benchmark: