diff --git a/cmake/external/gloo.cmake b/cmake/external/gloo.cmake index 8f739adc75a222217fd0973fb6c5d08f2c7fbc25..bac7e34dce25dfd4ec602b38065edd67d54a430e 100755 --- a/cmake/external/gloo.cmake +++ b/cmake/external/gloo.cmake @@ -41,6 +41,7 @@ if(WITH_GPU) ${native_dst}) endif() endif() + if(CMAKE_COMPILER_IS_GNUCC) execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpfullversion -dumpversion OUTPUT_VARIABLE GCC_VERSION) @@ -53,6 +54,9 @@ if(CMAKE_COMPILER_IS_GNUCC) native_dst) set(GLOO_PATCH_COMMAND patch -d ${GLOO_SOURCE_DIR}/gloo/transport/tcp < ${native_dst}) + file(TO_NATIVE_PATH ${PADDLE_SOURCE_DIR}/patches/gloo/types.h.patch + types_header) + set(GLOO_PATCH_COMMAND patch -d ${GLOO_SOURCE_DIR}/gloo/ < ${types_header}) endif() endif() include_directories(${GLOO_INCLUDE_DIR}) diff --git a/patches/gloo/types.h.patch b/patches/gloo/types.h.patch new file mode 100644 index 0000000000000000000000000000000000000000..5d544321cd49586b992c478406ff6351ded1da0a --- /dev/null +++ b/patches/gloo/types.h.patch @@ -0,0 +1,14 @@ +diff --git a/gloo/types.h b/gloo/types.h +index 31e193b..3a8ed74 100755 +--- a/gloo/types.h ++++ b/gloo/types.h +@@ -319,8 +319,7 @@ inline float cpu_half2float(float16 h) { + + unsigned temp = ((sign << 31) | (exponent << 23) | mantissa); + +- void* rp = &temp; +- return *(float*)rp; ++ return (float)temp; + } + + } // namespace gloo