From 0f3a0d9a948fdd8481a5f7751a255ecd9ed4d37a Mon Sep 17 00:00:00 2001 From: Alexey Chernov <4ernov@gmail.com> Date: Mon, 20 Jan 2020 01:21:22 +0300 Subject: [PATCH 3/3] Remove conversion ambiguity in ternary operators It fails to compile with recent versions of Clang (namely, version 10 used behind HCC compiler when being built with ROCm support) with the `conditional expression is ambiguous` error. --- caffe2/operators/relu_op.cu | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/caffe2/operators/relu_op.cu b/caffe2/operators/relu_op.cu index f6edf7105e..ab49540fc9 100644 --- a/caffe2/operators/relu_op.cu +++ b/caffe2/operators/relu_op.cu @@ -51,7 +51,7 @@ __global__ void ReluCUDAKernel(const int N, const half2* X, half2* Y) { #else const float2 xx = __half22float2(X[i]); Y[i] = - __floats2half2_rn(xx.x > 0.0f ? xx.x : 0.0f, xx.y > 0.0f ? xx.y : 0.0f); + __floats2half2_rn(xx.x > 0.0f ? float(xx.x) : 0.0f, xx.y > 0.0f ? float(xx.y) : 0.0f); #endif } } @@ -101,7 +101,7 @@ __global__ void ReluGradientCUDAKernel( const float2 dy = __half22float2(dY[i]); const float2 yy = __half22float2(Y[i]); dX[i] = - __floats2half2_rn(yy.x > 0.0f ? dy.x : 0.0f, yy.y > 0.0f ? dy.y : 0.0f); + __floats2half2_rn(yy.x > 0.0f ? float(dy.x) : 0.0f, yy.y > 0.0f ? float(dy.y) : 0.0f); #endif } } -- 2.24.1