From 080ff0c83200a229fb032cd03d4d900b634b1b02 Mon Sep 17 00:00:00 2001 From: Kexin Zhao Date: Thu, 16 Nov 2017 16:28:33 -0800 Subject: [PATCH] two tests for cpu and gpu separately --- paddle/math/tests/CMakeLists.txt | 6 ++-- paddle/math/tests/test_float16.cpp | 47 ++++++++++++++++++++++++++++++ paddle/math/tests/test_float16.cu | 32 +------------------- 3 files changed, 50 insertions(+), 35 deletions(-) create mode 100644 paddle/math/tests/test_float16.cpp diff --git a/paddle/math/tests/CMakeLists.txt b/paddle/math/tests/CMakeLists.txt index dc06f99090..c131544515 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 0000000000..8d4279b413 --- /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 40bc54f5b4..6c0a1c351c 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 -- GitLab