Skip to content
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

complex workaround does not work for TensorFlow #8

Closed
iotamudelta opened this issue Jun 13, 2018 · 1 comment
Closed

complex workaround does not work for TensorFlow #8

iotamudelta opened this issue Jun 13, 2018 · 1 comment
Labels

Comments

@iotamudelta
Copy link
Contributor

The complex workaround branch does not work for complex reduction kernel in TensorFlow. Using it in the TF make system and enabling either reduction_ops_gpu_complex64 or complex128 ends with compilation errors like

In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:80:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_segmented_reduce.hpp:81:16: error: no matching constructor for initialization of 'std::complex<float>'
    ResultType result;
               ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:58:5: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce<256, 8, tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    segmented_reduce<BlockSize, ItemsPerThread>(
    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:121:25: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_kernel<256, 8, tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
        HIP_KERNEL_NAME(segmented_reduce_kernel<block_size, items_per_thread>),
                        ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:248:20: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_impl<tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    return detail::segmented_reduce_impl(
                   ^
./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/device_segmented_reduce.hpp:55:27: note: in instantiation of function template specialization 'rocprim::segmented_reduce<tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> >' requested here
        return ::rocprim::segmented_reduce(
                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:754:52: note: in instantiation of function template specialization 'hipcub::DeviceSegmentedReduce::Reduce<tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> >' requested here
    auto success = gpuprim::DeviceSegmentedReduce::Reduce(
                                                   ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:870:5: note: in instantiation of function template specialization 'tensorflow::functor::Launch3DXZReduction<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> *, std::complex<float> *>' requested here
    Launch3DXZReduction(ctx, out, in, in_dim0, in_dim1, in_dim2, op, init,
    ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:896:5: note: in instantiation of function template specialization 'tensorflow::functor::ReduceImpl<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> *, std::complex<float> *, Eigen::array<long, 1> >' requested here
    ReduceImpl<T, Sum<T>, T*, T*, ReductionAxes>(
    ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:75:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_reduce.hpp:110:17: error: no matching constructor for initialization of 'output_type [4]'
    output_type values[ItemsPerThread];
                ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:58:5: note: in instantiation of function template specialization 'rocprim::detail::block_reduce_kernel_impl<256, 4, true, std::complex<float>, std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    block_reduce_kernel_impl<BlockSize, ItemsPerThread, WithInitialValue, ResultType>(
    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:181:37: note: in instantiation of function template specialization 'rocprim::detail::block_reduce_kernel<256, 4, true, std::complex<float>, std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
            HIP_KERNEL_NAME(detail::block_reduce_kernel<
                                    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:302:20: note: in instantiation of function template specialization 'rocprim::detail::reduce_impl<256, 4, true, std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    return detail::reduce_impl<block_size, items_per_thread, true>(
                   ^
./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/device_reduce.hpp:91:27: note: in instantiation of function template specialization 'rocprim::reduce<std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
        return ::rocprim::reduce(
                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:556:43: note: in instantiation of function template specialization 'hipcub::DeviceReduce::Reduce<std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> >' requested here
    auto success = gpuprim::DeviceReduce::Reduce(
                                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:858:5: note: in instantiation of function template specialization 'tensorflow::functor::LaunchScalarReduction<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float> *>' requested here
    LaunchScalarReduction(ctx, out, in, in_size, op, init, cu_stream);
    ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:931:5: note: in instantiation of function template specialization 'tensorflow::functor::ReduceImpl<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float> *, Eigen::array<long, 1> >' requested here
    ReduceImpl<T, Sum<T>, TransformOutputIterator<T, T, DividesBy<T>>, T*,
    ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:75:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_reduce.hpp:111:17: error: no matching constructor for initialization of 'output_type' (aka 'std::complex<float>')
    output_type output_value;
                ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:80:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_segmented_reduce.hpp:81:16: error: no matching constructor for initialization of 'std::complex<float>'
    ResultType result;
               ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:58:5: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce<256, 8, std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    segmented_reduce<BlockSize, ItemsPerThread>(
    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:121:25: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_kernel<256, 8, std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
        HIP_KERNEL_NAME(segmented_reduce_kernel<block_size, items_per_thread>),
                        ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:248:20: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_impl<std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    return detail::segmented_reduce_impl(
                   ^
./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/device_segmented_reduce.hpp:55:27: note: in instantiation of function template specialization 'rocprim::segmented_reduce<std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> >' requested here
        return ::rocprim::segmented_reduce(
                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:596:52: note: in instantiation of function template specialization 'hipcub::DeviceSegmentedReduce::Reduce<std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> >' requested here
    auto success = gpuprim::DeviceSegmentedReduce::Reduce(
                                                   ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:861:5: note: in instantiation of function template specialization 'tensorflow::functor::LaunchRowReduction<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float> *>' requested here
    LaunchRowReduction(ctx, out, in, in_dim0, in_dim1, op, init, cu_stream);
    ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:931:5: note: in instantiation of function template specialization 'tensorflow::functor::ReduceImpl<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float> *, Eigen::array<long, 1> >' requested here
    ReduceImpl<T, Sum<T>, TransformOutputIterator<T, T, DividesBy<T>>, T*,
    ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:80:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_segmented_reduce.hpp:81:16: error: no matching constructor for initialization of 'std::complex<float>'
    ResultType result;
               ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:58:5: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce<256, 8, tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    segmented_reduce<BlockSize, ItemsPerThread>(
    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:121:25: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_kernel<256, 8, tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
        HIP_KERNEL_NAME(segmented_reduce_kernel<block_size, items_per_thread>),
                        ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:248:20: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_impl<tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    return detail::segmented_reduce_impl(
                   ^
./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/device_segmented_reduce.hpp:55:27: note: in instantiation of function template specialization 'rocprim::segmented_reduce<tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> >' requested here
        return ::rocprim::segmented_reduce(
                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:754:52: note: in instantiation of function template specialization 'hipcub::DeviceSegmentedReduce::Reduce<tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> >' requested here
    auto success = gpuprim::DeviceSegmentedReduce::Reduce(
                                                   ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:870:5: note: in instantiation of function template specialization 'tensorflow::functor::Launch3DXZReduction<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float> *>' requested here
    Launch3DXZReduction(ctx, out, in, in_dim0, in_dim1, in_dim2, op, init,
    ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:931:5: note: in instantiation of function template specialization 'tensorflow::functor::ReduceImpl<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float> *, Eigen::array<long, 1> >' requested here
    ReduceImpl<T, Sum<T>, TransformOutputIterator<T, T, DividesBy<T>>, T*,
    ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:75:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_reduce.hpp:110:17: error: no matching constructor for initialization of 'output_type [4]'
    output_type values[ItemsPerThread];
                ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:58:5: note: in instantiation of function template specialization 'rocprim::detail::block_reduce_kernel_impl<256, 4, false, std::complex<float>, std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
    block_reduce_kernel_impl<BlockSize, ItemsPerThread, WithInitialValue, ResultType>(
    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:147:37: note: in instantiation of function template specialization 'rocprim::detail::block_reduce_kernel<256, 4, false, std::complex<float>, std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
            HIP_KERNEL_NAME(detail::block_reduce_kernel<
                                    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:302:20: note: in instantiation of function template specialization 'rocprim::detail::reduce_impl<256, 4, true, std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
    return detail::reduce_impl<block_size, items_per_thread, true>(
                   ^
./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/device_reduce.hpp:91:27: note: in instantiation of function template specialization 'rocprim::reduce<std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
        return ::rocprim::reduce(
                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:556:43: note: in instantiation of function template specialization 'hipcub::DeviceReduce::Reduce<std::complex<float> *, std::complex<float> *, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> >' requested here
    auto success = gpuprim::DeviceReduce::Reduce(
                                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:858:5: note: in instantiation of function template specialization 'tensorflow::functor::LaunchScalarReduction<std::complex<float>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> *, std::complex<float> *>' requested here
    LaunchScalarReduction(ctx, out, in, in_size, op, init, cu_stream);
    ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:1036:5: note: in instantiation of function template specialization 'tensorflow::functor::ReduceImpl<std::complex<float>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> *, std::complex<float> *, Eigen::array<long, 1> >' requested here
    ReduceImpl<T, Prod<T>, T*, T*, ReductionAxes>(
    ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:75:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_reduce.hpp:111:17: error: no matching constructor for initialization of 'output_type' (aka 'std::complex<float>')
    output_type output_value;
                ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:75:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_reduce.hpp:110:17: error: no matching constructor for initialization of 'output_type [4]'
    output_type values[ItemsPerThread];
                ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:58:5: note: in instantiation of function template specialization 'rocprim::detail::block_reduce_kernel_impl<256, 4, true, std::complex<float>, std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
    block_reduce_kernel_impl<BlockSize, ItemsPerThread, WithInitialValue, ResultType>(
    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:181:37: note: in instantiation of function template specialization 'rocprim::detail::block_reduce_kernel<256, 4, true, std::complex<float>, std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
            HIP_KERNEL_NAME(detail::block_reduce_kernel<
                                    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:302:20: note: in instantiation of function template specialization 'rocprim::detail::reduce_impl<256, 4, true, std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
    return detail::reduce_impl<block_size, items_per_thread, true>(
                   ^
./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/device_reduce.hpp:91:27: note: in instantiation of function template specialization 'rocprim::reduce<std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
        return ::rocprim::reduce(
                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:556:43: note: in instantiation of function template specialization 'hipcub::DeviceReduce::Reduce<std::complex<float> *, std::complex<float> *, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> >' requested here
    auto success = gpuprim::DeviceReduce::Reduce(
                                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:858:5: note: in instantiation of function template specialization 'tensorflow::functor::LaunchScalarReduction<std::complex<float>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> *, std::complex<float> *>' requested here
    LaunchScalarReduction(ctx, out, in, in_size, op, init, cu_stream);
    ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:1036:5: note: in instantiation of function template specialization 'tensorflow::functor::ReduceImpl<std::complex<float>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> *, std::complex<float> *, Eigen::array<long, 1> >' requested here
    ReduceImpl<T, Prod<T>, T*, T*, ReductionAxes>(
    ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:75:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_reduce.hpp:111:17: error: no matching constructor for initialization of 'output_type' (aka 'std::complex<float>')
    output_type output_value;
                ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:80:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_segmented_reduce.hpp:81:16: error: no matching constructor for initialization of 'std::complex<float>'
    ResultType result;
               ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:58:5: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce<256, 8, std::complex<float> *, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
    segmented_reduce<BlockSize, ItemsPerThread>(
    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:121:25: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_kernel<256, 8, std::complex<float> *, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
        HIP_KERNEL_NAME(segmented_reduce_kernel<block_size, items_per_thread>),
                        ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:248:20: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_impl<std::complex<float> *, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
    return detail::segmented_reduce_impl(
                   ^
./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/device_segmented_reduce.hpp:55:27: note: in instantiation of function template specialization 'rocprim::segmented_reduce<std::complex<float> *, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> >' requested here
        return ::rocprim::segmented_reduce(
                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:596:52: note: in instantiation of function template specialization 'hipcub::DeviceSegmentedReduce::Reduce<std::complex<float> *, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> >' requested here
    auto success = gpuprim::DeviceSegmentedReduce::Reduce(
                                                   ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:861:5: note: in instantiation of function template specialization 'tensorflow::functor::LaunchRowReduction<std::complex<float>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> *, std::complex<float> *>' requested here
    LaunchRowReduction(ctx, out, in, in_dim0, in_dim1, op, init, cu_stream);
    ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:1036:5: note: in instantiation of function template specialization 'tensorflow::functor::ReduceImpl<std::complex<float>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> *, std::complex<float> *, Eigen::array<long, 1> >' requested here
    ReduceImpl<T, Prod<T>, T*, T*, ReductionAxes>(
    ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:80:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_segmented_reduce.hpp:81:16: error: no matching constructor for initialization of 'std::complex<float>'
    ResultType result;
               ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:58:5: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce<256, 8, tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
    segmented_reduce<BlockSize, ItemsPerThread>(
    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:121:25: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_kernel<256, 8, tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
        HIP_KERNEL_NAME(segmented_reduce_kernel<block_size, items_per_thread>),
                        ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:248:20: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_impl<tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
    return detail::segmented_reduce_impl(
                   ^
./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/device_segmented_reduce.hpp:55:27: note: in instantiation of function template specialization 'rocprim::segmented_reduce<tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> >' requested here
        return ::rocprim::segmented_reduce(
                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:754:52: note: in instantiation of function template specialization 'hipcub::DeviceSegmentedReduce::Reduce<tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> >' requested here
    auto success = gpuprim::DeviceSegmentedReduce::Reduce(
                                                   ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:870:5: note: in instantiation of function template specialization 'tensorflow::functor::Launch3DXZReduction<std::complex<float>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> *, std::complex<float> *>' requested here
    Launch3DXZReduction(ctx, out, in, in_dim0, in_dim1, in_dim2, op, init,
    ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:1036:5: note: in instantiation of function template specialization 'tensorflow::functor::ReduceImpl<std::complex<float>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> *, std::complex<float> *, Eigen::array<long, 1> >' requested here
    ReduceImpl<T, Prod<T>, T*, T*, ReductionAxes>(
    ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
1 warning and 16 errors generated.
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:20:
In file included from ./third_party/eigen3/unsupported/Eigen/CXX11/Tensor:1:
In file included from external/eigen_archive/unsupported/Eigen/CXX11/Tensor:14:
In file included from external/eigen_archive/unsupported/Eigen/CXX11/../../../Eigen/Core:69:
In file included from /opt/rocm/include/hip/math_functions.h:32:
In file included from /opt/rocm/include/hip/hcc_detail/math_functions.h:31:
In file included from /opt/rocm/include/hip/hip_runtime.h:53:
/opt/rocm/include/hip/hip_common.h:30:9: warning: '__HIP_PLATFORM_HCC__' macro redefined [-Wmacro-redefined]
#define __HIP_PLATFORM_HCC__
        ^
<command line>:20:9: note: previous definition is here
#define __HIP_PLATFORM_HCC__ 1
        ^
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:75:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_reduce.hpp:110:17: error: no matching constructor for initialization of 'output_type [4]'
    output_type values[ItemsPerThread];
                ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:58:5: note: in instantiation of function template specialization 'rocprim::detail::block_reduce_kernel_impl<256, 4, false, std::complex<float>, std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    block_reduce_kernel_impl<BlockSize, ItemsPerThread, WithInitialValue, ResultType>(
    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:147:37: note: in instantiation of function template specialization 'rocprim::detail::block_reduce_kernel<256, 4, false, std::complex<float>, std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
            HIP_KERNEL_NAME(detail::block_reduce_kernel<
                                    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:302:20: note: in instantiation of function template specialization 'rocprim::detail::reduce_impl<256, 4, true, std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    return detail::reduce_impl<block_size, items_per_thread, true>(
                   ^
./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/device_reduce.hpp:91:27: note: in instantiation of function template specialization 'rocprim::reduce<std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
        return ::rocprim::reduce(
                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:556:43: note: in instantiation of function template specialization 'hipcub::DeviceReduce::Reduce<std::complex<float> *, std::complex<float> *, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> >' requested here
    auto success = gpuprim::DeviceReduce::Reduce(
                                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:858:5: note: in instantiation of function template specialization 'tensorflow::functor::LaunchScalarReduction<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> *, std::complex<float> *>' requested here
    LaunchScalarReduction(ctx, out, in, in_size, op, init, cu_stream);
    ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:896:5: note: in instantiation of function template specialization 'tensorflow::functor::ReduceImpl<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> *, std::complex<float> *, Eigen::array<long, 1> >' requested here
    ReduceImpl<T, Sum<T>, T*, T*, ReductionAxes>(
    ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:75:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_reduce.hpp:111:17: error: no matching constructor for initialization of 'output_type' (aka 'std::complex<float>')
    output_type output_value;
                ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:75:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_reduce.hpp:110:17: error: no matching constructor for initialization of 'output_type [4]'
    output_type values[ItemsPerThread];
                ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:58:5: note: in instantiation of function template specialization 'rocprim::detail::block_reduce_kernel_impl<256, 4, true, std::complex<float>, std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    block_reduce_kernel_impl<BlockSize, ItemsPerThread, WithInitialValue, ResultType>(
    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:181:37: note: in instantiation of function template specialization 'rocprim::detail::block_reduce_kernel<256, 4, true, std::complex<float>, std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
            HIP_KERNEL_NAME(detail::block_reduce_kernel<
                                    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:302:20: note: in instantiation of function template specialization 'rocprim::detail::reduce_impl<256, 4, true, std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    return detail::reduce_impl<block_size, items_per_thread, true>(
                   ^
./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/device_reduce.hpp:91:27: note: in instantiation of function template specialization 'rocprim::reduce<std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
        return ::rocprim::reduce(
                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:556:43: note: in instantiation of function template specialization 'hipcub::DeviceReduce::Reduce<std::complex<float> *, std::complex<float> *, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> >' requested here
    auto success = gpuprim::DeviceReduce::Reduce(
                                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:858:5: note: in instantiation of function template specialization 'tensorflow::functor::LaunchScalarReduction<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> *, std::complex<float> *>' requested here
    LaunchScalarReduction(ctx, out, in, in_size, op, init, cu_stream);
    ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:896:5: note: in instantiation of function template specialization 'tensorflow::functor::ReduceImpl<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> *, std::complex<float> *, Eigen::array<long, 1> >' requested here
    ReduceImpl<T, Sum<T>, T*, T*, ReductionAxes>(
    ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:75:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_reduce.hpp:111:17: error: no matching constructor for initialization of 'output_type' (aka 'std::complex<float>')
    output_type output_value;
                ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:80:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_segmented_reduce.hpp:81:16: error: no matching constructor for initialization of 'std::complex<float>'
    ResultType result;
               ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:58:5: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce<256, 8, std::complex<float> *, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    segmented_reduce<BlockSize, ItemsPerThread>(
    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:121:25: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_kernel<256, 8, std::complex<float> *, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
        HIP_KERNEL_NAME(segmented_reduce_kernel<block_size, items_per_thread>),
                        ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:248:20: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_impl<std::complex<float> *, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    return detail::segmented_reduce_impl(
                   ^
./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/device_segmented_reduce.hpp:55:27: note: in instantiation of function template specialization 'rocprim::segmented_reduce<std::complex<float> *, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> >' requested here
        return ::rocprim::segmented_reduce(
                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:596:52: note: in instantiation of function template specialization 'hipcub::DeviceSegmentedReduce::Reduce<std::complex<float> *, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> >' requested here
    auto success = gpuprim::DeviceSegmentedReduce::Reduce(
                                                   ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:861:5: note: in instantiation of function template specialization 'tensorflow::functor::LaunchRowReduction<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> *, std::complex<float> *>' requested here
    LaunchRowReduction(ctx, out, in, in_dim0, in_dim1, op, init, cu_stream);
    ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:896:5: note: in instantiation of function template specialization 'tensorflow::functor::ReduceImpl<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> *, std::complex<float> *, Eigen::array<long, 1> >' requested here
    ReduceImpl<T, Sum<T>, T*, T*, ReductionAxes>(
    ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:80:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_segmented_reduce.hpp:81:16: error: no matching constructor for initialization of 'std::complex<float>'
    ResultType result;
               ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:58:5: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce<256, 8, tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    segmented_reduce<BlockSize, ItemsPerThread>(
    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:121:25: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_kernel<256, 8, tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
        HIP_KERNEL_NAME(segmented_reduce_kernel<block_size, items_per_thread>),
                        ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:248:20: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_impl<tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    return detail::segmented_reduce_impl(
                   ^
./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/device_segmented_reduce.hpp:55:27: note: in instantiation of function template specialization 'rocprim::segmented_reduce<tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> >' requested here
        return ::rocprim::segmented_reduce(
                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:754:52: note: in instantiation of function template specialization 'hipcub::DeviceSegmentedReduce::Reduce<tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> >' requested here
    auto success = gpuprim::DeviceSegmentedReduce::Reduce(
                                                   ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:870:5: note: in instantiation of function template specialization 'tensorflow::functor::Launch3DXZReduction<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> *, std::complex<float> *>' requested here
    Launch3DXZReduction(ctx, out, in, in_dim0, in_dim1, in_dim2, op, init,
    ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:896:5: note: in instantiation of function template specialization 'tensorflow::functor::ReduceImpl<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> *, std::complex<float> *, Eigen::array<long, 1> >' requested here
    ReduceImpl<T, Sum<T>, T*, T*, ReductionAxes>(
    ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:75:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_reduce.hpp:110:17: error: no matching constructor for initialization of 'output_type [4]'
    output_type values[ItemsPerThread];
                ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:58:5: note: in instantiation of function template specialization 'rocprim::detail::block_reduce_kernel_impl<256, 4, true, std::complex<float>, std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    block_reduce_kernel_impl<BlockSize, ItemsPerThread, WithInitialValue, ResultType>(
    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:181:37: note: in instantiation of function template specialization 'rocprim::detail::block_reduce_kernel<256, 4, true, std::complex<float>, std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
            HIP_KERNEL_NAME(detail::block_reduce_kernel<
                                    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:302:20: note: in instantiation of function template specialization 'rocprim::detail::reduce_impl<256, 4, true, std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    return detail::reduce_impl<block_size, items_per_thread, true>(
                   ^
./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/device_reduce.hpp:91:27: note: in instantiation of function template specialization 'rocprim::reduce<std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
        return ::rocprim::reduce(
                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:556:43: note: in instantiation of function template specialization 'hipcub::DeviceReduce::Reduce<std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> >' requested here
    auto success = gpuprim::DeviceReduce::Reduce(
                                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:858:5: note: in instantiation of function template specialization 'tensorflow::functor::LaunchScalarReduction<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float> *>' requested here
    LaunchScalarReduction(ctx, out, in, in_size, op, init, cu_stream);
    ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:931:5: note: in instantiation of function template specialization 'tensorflow::functor::ReduceImpl<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float> *, Eigen::array<long, 1> >' requested here
    ReduceImpl<T, Sum<T>, TransformOutputIterator<T, T, DividesBy<T>>, T*,
    ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:75:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_reduce.hpp:111:17: error: no matching constructor for initialization of 'output_type' (aka 'std::complex<float>')
    output_type output_value;
                ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:80:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_segmented_reduce.hpp:81:16: error: no matching constructor for initialization of 'std::complex<float>'
    ResultType result;
               ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:58:5: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce<256, 8, std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    segmented_reduce<BlockSize, ItemsPerThread>(
    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:121:25: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_kernel<256, 8, std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
        HIP_KERNEL_NAME(segmented_reduce_kernel<block_size, items_per_thread>),
                        ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:248:20: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_impl<std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    return detail::segmented_reduce_impl(
                   ^
./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/device_segmented_reduce.hpp:55:27: note: in instantiation of function template specialization 'rocprim::segmented_reduce<std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> >' requested here
        return ::rocprim::segmented_reduce(
                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:596:52: note: in instantiation of function template specialization 'hipcub::DeviceSegmentedReduce::Reduce<std::complex<float> *, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> >' requested here
    auto success = gpuprim::DeviceSegmentedReduce::Reduce(
                                                   ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:861:5: note: in instantiation of function template specialization 'tensorflow::functor::LaunchRowReduction<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float> *>' requested here
    LaunchRowReduction(ctx, out, in, in_dim0, in_dim1, op, init, cu_stream);
    ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:931:5: note: in instantiation of function template specialization 'tensorflow::functor::ReduceImpl<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float> *, Eigen::array<long, 1> >' requested here
    ReduceImpl<T, Sum<T>, TransformOutputIterator<T, T, DividesBy<T>>, T*,
    ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:80:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_segmented_reduce.hpp:81:16: error: no matching constructor for initialization of 'std::complex<float>'
    ResultType result;
               ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:58:5: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce<256, 8, tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    segmented_reduce<BlockSize, ItemsPerThread>(
    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:121:25: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_kernel<256, 8, tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
        HIP_KERNEL_NAME(segmented_reduce_kernel<block_size, items_per_thread>),
                        ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:248:20: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_impl<tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Sum<std::complex<float> > >' requested here
    return detail::segmented_reduce_impl(
                   ^
./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/device_segmented_reduce.hpp:55:27: note: in instantiation of function template specialization 'rocprim::segmented_reduce<tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> >' requested here
        return ::rocprim::segmented_reduce(
                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:754:52: note: in instantiation of function template specialization 'hipcub::DeviceSegmentedReduce::Reduce<tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Sum<std::complex<float> >, std::complex<float> >' requested here
    auto success = gpuprim::DeviceSegmentedReduce::Reduce(
                                                   ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:870:5: note: in instantiation of function template specialization 'tensorflow::functor::Launch3DXZReduction<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float> *>' requested here
    Launch3DXZReduction(ctx, out, in, in_dim0, in_dim1, in_dim2, op, init,
    ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:931:5: note: in instantiation of function template specialization 'tensorflow::functor::ReduceImpl<std::complex<float>, tensorflow::functor::Sum<std::complex<float> >, tensorflow::TransformOutputIterator<std::complex<float>, std::complex<float>, tensorflow::functor::DividesBy<std::complex<float>, std::complex<float> >, long>, std::complex<float> *, Eigen::array<long, 1> >' requested here
    ReduceImpl<T, Sum<T>, TransformOutputIterator<T, T, DividesBy<T>>, T*,
    ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:75:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_reduce.hpp:110:17: error: no matching constructor for initialization of 'output_type [4]'
    output_type values[ItemsPerThread];
                ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:58:5: note: in instantiation of function template specialization 'rocprim::detail::block_reduce_kernel_impl<256, 4, false, std::complex<float>, std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
    block_reduce_kernel_impl<BlockSize, ItemsPerThread, WithInitialValue, ResultType>(
    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:147:37: note: in instantiation of function template specialization 'rocprim::detail::block_reduce_kernel<256, 4, false, std::complex<float>, std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
            HIP_KERNEL_NAME(detail::block_reduce_kernel<
                                    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:302:20: note: in instantiation of function template specialization 'rocprim::detail::reduce_impl<256, 4, true, std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
    return detail::reduce_impl<block_size, items_per_thread, true>(
                   ^
./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/device_reduce.hpp:91:27: note: in instantiation of function template specialization 'rocprim::reduce<std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
        return ::rocprim::reduce(
                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:556:43: note: in instantiation of function template specialization 'hipcub::DeviceReduce::Reduce<std::complex<float> *, std::complex<float> *, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> >' requested here
    auto success = gpuprim::DeviceReduce::Reduce(
                                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:858:5: note: in instantiation of function template specialization 'tensorflow::functor::LaunchScalarReduction<std::complex<float>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> *, std::complex<float> *>' requested here
    LaunchScalarReduction(ctx, out, in, in_size, op, init, cu_stream);
    ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:1036:5: note: in instantiation of function template specialization 'tensorflow::functor::ReduceImpl<std::complex<float>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> *, std::complex<float> *, Eigen::array<long, 1> >' requested here
    ReduceImpl<T, Prod<T>, T*, T*, ReductionAxes>(
    ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:75:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_reduce.hpp:111:17: error: no matching constructor for initialization of 'output_type' (aka 'std::complex<float>')
    output_type output_value;
                ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:75:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_reduce.hpp:110:17: error: no matching constructor for initialization of 'output_type [4]'
    output_type values[ItemsPerThread];
                ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:58:5: note: in instantiation of function template specialization 'rocprim::detail::block_reduce_kernel_impl<256, 4, true, std::complex<float>, std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
    block_reduce_kernel_impl<BlockSize, ItemsPerThread, WithInitialValue, ResultType>(
    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:181:37: note: in instantiation of function template specialization 'rocprim::detail::block_reduce_kernel<256, 4, true, std::complex<float>, std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
            HIP_KERNEL_NAME(detail::block_reduce_kernel<
                                    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:302:20: note: in instantiation of function template specialization 'rocprim::detail::reduce_impl<256, 4, true, std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
    return detail::reduce_impl<block_size, items_per_thread, true>(
                   ^
./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/device_reduce.hpp:91:27: note: in instantiation of function template specialization 'rocprim::reduce<std::complex<float> *, std::complex<float> *, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
        return ::rocprim::reduce(
                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:556:43: note: in instantiation of function template specialization 'hipcub::DeviceReduce::Reduce<std::complex<float> *, std::complex<float> *, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> >' requested here
    auto success = gpuprim::DeviceReduce::Reduce(
                                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:858:5: note: in instantiation of function template specialization 'tensorflow::functor::LaunchScalarReduction<std::complex<float>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> *, std::complex<float> *>' requested here
    LaunchScalarReduction(ctx, out, in, in_size, op, init, cu_stream);
    ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:1036:5: note: in instantiation of function template specialization 'tensorflow::functor::ReduceImpl<std::complex<float>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> *, std::complex<float> *, Eigen::array<long, 1> >' requested here
    ReduceImpl<T, Prod<T>, T*, T*, ReductionAxes>(
    ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:75:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_reduce.hpp:111:17: error: no matching constructor for initialization of 'output_type' (aka 'std::complex<float>')
    output_type output_value;
                ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:80:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_segmented_reduce.hpp:81:16: error: no matching constructor for initialization of 'std::complex<float>'
    ResultType result;
               ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:58:5: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce<256, 8, std::complex<float> *, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
    segmented_reduce<BlockSize, ItemsPerThread>(
    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:121:25: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_kernel<256, 8, std::complex<float> *, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
        HIP_KERNEL_NAME(segmented_reduce_kernel<block_size, items_per_thread>),
                        ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:248:20: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_impl<std::complex<float> *, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
    return detail::segmented_reduce_impl(
                   ^
./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/device_segmented_reduce.hpp:55:27: note: in instantiation of function template specialization 'rocprim::segmented_reduce<std::complex<float> *, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> >' requested here
        return ::rocprim::segmented_reduce(
                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:596:52: note: in instantiation of function template specialization 'hipcub::DeviceSegmentedReduce::Reduce<std::complex<float> *, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> >' requested here
    auto success = gpuprim::DeviceSegmentedReduce::Reduce(
                                                   ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:861:5: note: in instantiation of function template specialization 'tensorflow::functor::LaunchRowReduction<std::complex<float>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> *, std::complex<float> *>' requested here
    LaunchRowReduction(ctx, out, in, in_dim0, in_dim1, op, init, cu_stream);
    ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:1036:5: note: in instantiation of function template specialization 'tensorflow::functor::ReduceImpl<std::complex<float>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> *, std::complex<float> *, Eigen::array<long, 1> >' requested here
    ReduceImpl<T, Prod<T>, T*, T*, ReductionAxes>(
    ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
In file included from tensorflow/core/kernels/reduction_ops_gpu_complex64.cu.cc:20:
In file included from ./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/hipcub.hpp:29:
In file included from ./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/../../config.hpp:38:
In file included from external/rocprim_archive/rocprim/include/rocprim/rocprim.hpp:80:
In file included from external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:31:
external/rocprim_archive/rocprim/include/rocprim/device/detail/device_segmented_reduce.hpp:81:16: error: no matching constructor for initialization of 'std::complex<float>'
    ResultType result;
               ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:58:5: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce<256, 8, tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
    segmented_reduce<BlockSize, ItemsPerThread>(
    ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:121:25: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_kernel<256, 8, tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
        HIP_KERNEL_NAME(segmented_reduce_kernel<block_size, items_per_thread>),
                        ^
external/rocprim_archive/rocprim/include/rocprim/device/device_segmented_reduce_hip.hpp:248:20: note: in instantiation of function template specialization 'rocprim::detail::segmented_reduce_impl<tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, std::complex<float>, tensorflow::functor::Prod<std::complex<float> > >' requested here
    return detail::segmented_reduce_impl(
                   ^
./external/rocprim_archive/hipcub/include/hipcub/rocprim/device/device_segmented_reduce.hpp:55:27: note: in instantiation of function template specialization 'rocprim::segmented_reduce<tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> >' requested here
        return ::rocprim::segmented_reduce(
                          ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:754:52: note: in instantiation of function template specialization 'hipcub::DeviceSegmentedReduce::Reduce<tensorflow::PermutationInputIterator<std::complex<float>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::GatherOp, int>, long>, std::complex<float> *, rocprim::transform_iterator<rocprim::counting_iterator<int, long>, tensorflow::functor::RowOffset, int>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> >' requested here
    auto success = gpuprim::DeviceSegmentedReduce::Reduce(
                                                   ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:870:5: note: in instantiation of function template specialization 'tensorflow::functor::Launch3DXZReduction<std::complex<float>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> *, std::complex<float> *>' requested here
    Launch3DXZReduction(ctx, out, in, in_dim0, in_dim1, in_dim2, op, init,
    ^
./tensorflow/core/kernels/reduction_gpu_kernels.cu.h:1036:5: note: in instantiation of function template specialization 'tensorflow::functor::ReduceImpl<std::complex<float>, tensorflow::functor::Prod<std::complex<float> >, std::complex<float> *, std::complex<float> *, Eigen::array<long, 1> >' requested here
    ReduceImpl<T, Prod<T>, T*, T*, ReductionAxes>(
    ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
    struct complex<float>
           ^
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 0 were provided
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/complex:1053:12: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
1 warning and 16 errors generated.
Died at /opt/rocm/bin/hipcc line 496.

@jszuppe
Copy link
Contributor

jszuppe commented Jun 13, 2018

I don't know if there's anything we can/should do about it in rocPRIM since std::complex<> is just not supported on device (that's independent from rocPRIM). no matching constructor error is there because std::complex<> doesn't have default constructor with __device__ attribute. Why it works on nvcc is not entirely clear to me. For example, see https://llvm.org/docs/CompileCudaWithLLVM.html#std-complex.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants