diff --git a/paddle/math/tests/CMakeLists.txt b/paddle/math/tests/CMakeLists.txt index dc06f990905459d5b63d21596b3e8d2aae603fef..c131544515e9b97bf1f089115850f05715361c7e 100644 --- a/paddle/math/tests/CMakeLists.txt +++ b/paddle/math/tests/CMakeLists.txt @@ -18,21 +18,19 @@ add_simple_unittest(test_CpuGpuVector) add_simple_unittest(test_Allocator) if(WITH_GPU) + nv_test(test_float16_gpu SRCS test_float16.cu) CUDA_ADD_EXECUTABLE(test_Tensor test_Tensor.cu) link_paddle_test(test_Tensor) CUDA_ADD_EXECUTABLE(test_lazyAssign test_lazyAssign.cu) link_paddle_test(test_lazyAssign) - CUDA_ADD_EXECUTABLE(test_float16 test_float16.cu) - link_paddle_test(test_float16) else() compile_cu_as_cpp(test_Tensor.cu) add_unittest(test_Tensor test_Tensor.cu) compile_cu_as_cpp(test_lazyAssign.cu) add_unittest(test_lazyAssign test_lazyAssign.cu) - compile_cu_as_cpp(test_float16.cu) - add_unittest(test_float16 test_float16.cu) endif(WITH_GPU) +cc_test(test_float16 SRCS test_float16.cpp) add_simple_unittest(test_FPException) add_simple_unittest(test_GpuProfiler) add_simple_unittest(test_BaseMatrix) diff --git a/paddle/math/tests/test_float16.cpp b/paddle/math/tests/test_float16.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8d4279b4135d612970cb509f9e5df160805c6075 --- /dev/null +++ b/paddle/math/tests/test_float16.cpp @@ -0,0 +1,47 @@ +/* Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserve. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. */ + +#include +#include "paddle/math/float16.h" + +namespace paddle { + +TEST(float16, conversion_cpu) { + // Conversion to and from Eigen::half + EXPECT_EQ(float16(Eigen::half(float16(1.0f))).x, 0x3c00); + EXPECT_EQ(float16(Eigen::half(float16(0.5f))).x, 0x3800); + EXPECT_EQ(float16(Eigen::half(float16(0.33333f))).x, 0x3555); + EXPECT_EQ(float16(Eigen::half(float16(0.0f))).x, 0x0000); + EXPECT_EQ(float16(Eigen::half(float16(-0.0f))).x, 0x8000); + EXPECT_EQ(float16(Eigen::half(float16(65504.0f))).x, 0x7bff); + EXPECT_EQ(float16(Eigen::half(float16(65536.0f))).x, 0x7c00); + + // Conversion from float + EXPECT_EQ(float16(1.0f).x, 0x3c00); + EXPECT_EQ(float16(0.5f).x, 0x3800); + EXPECT_EQ(float16(0.33333f).x, 0x3555); + EXPECT_EQ(float16(0.0f).x, 0x0000); + EXPECT_EQ(float16(-0.0f).x, 0x8000); + EXPECT_EQ(float16(65504.0f).x, 0x7bff); + EXPECT_EQ(float16(65536.0f).x, 0x7c00); + + // Conversion from double + + // Conversion from int + + // Conversion from bool +} + +TEST(float16, arithmetic_cpu) { EXPECT_EQ(float(float16(2) + float16(2)), 4); } + +TEST(float16, comparison_cpu) { EXPECT_TRUE(float16(1.0f) > float16(0.5f)); } + +} // namespace paddle diff --git a/paddle/math/tests/test_float16.cu b/paddle/math/tests/test_float16.cu index 40bc54f5b46e0111d10566e5978d338d90e24150..6c0a1c351ca38124ceea760d5d1d301f664c547c 100644 --- a/paddle/math/tests/test_float16.cu +++ b/paddle/math/tests/test_float16.cu @@ -39,40 +39,10 @@ TEST(float16, conversion_gpu) { // Conversion from bool } +#endif TEST(float16, arithmetic_gpu) { EXPECT_EQ(float(float16(2) + float16(2)), 4); } TEST(float16, comparison_gpu) { EXPECT_TRUE(float16(1.0f) > float16(0.5f)); } -#endif - -TEST(float16, conversion_cpu) { - // Conversion to and from Eigen::half - EXPECT_EQ(float16(Eigen::half(float16(1.0f))).x, 0x3c00); - EXPECT_EQ(float16(Eigen::half(float16(0.5f))).x, 0x3800); - EXPECT_EQ(float16(Eigen::half(float16(0.33333f))).x, 0x3555); - EXPECT_EQ(float16(Eigen::half(float16(0.0f))).x, 0x0000); - EXPECT_EQ(float16(Eigen::half(float16(-0.0f))).x, 0x8000); - EXPECT_EQ(float16(Eigen::half(float16(65504.0f))).x, 0x7bff); - EXPECT_EQ(float16(Eigen::half(float16(65536.0f))).x, 0x7c00); - - // Conversion from float - EXPECT_EQ(float16(1.0f).x, 0x3c00); - EXPECT_EQ(float16(0.5f).x, 0x3800); - EXPECT_EQ(float16(0.33333f).x, 0x3555); - EXPECT_EQ(float16(0.0f).x, 0x0000); - EXPECT_EQ(float16(-0.0f).x, 0x8000); - EXPECT_EQ(float16(65504.0f).x, 0x7bff); - EXPECT_EQ(float16(65536.0f).x, 0x7c00); - - // Conversion from double - - // Conversion from int - - // Conversion from bool -} - -TEST(float16, arithmetic_cpu) { EXPECT_EQ(float(float16(2) + float16(2)), 4); } - -TEST(float16, comparison_cpu) { EXPECT_TRUE(float16(1.0f) > float16(0.5f)); } } // namespace paddle