提交 a1d1565f 编写于 作者: H hedaoyuan

add some comments

上级 7e0b51f2
/** /* Copyright (c) 2016 Baidu, Inc. All Rights Reserve.
* TensorAssign.h
* Licensed under the Apache License, Version 2.0 (the "License");
* Author: hedaoyuan (hedaoyuan@baidu.com) you may not use this file except in compliance with the License.
* Created on: 2016-10-08 You may obtain a copy of the License at
*
* Copyright (c) Baidu.com, Inc. All Rights Reserved 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. */
#pragma once #pragma once
...@@ -15,6 +19,10 @@ ...@@ -15,6 +19,10 @@
namespace paddle { namespace paddle {
/**
* \brief Tensor Assign Expression(return by lazyAssign,
* and evaluated by AssignEvaluate)
*/
template<typename LhsType, typename RhsType, class T> template<typename LhsType, typename RhsType, class T>
class TensorAssignOp { class TensorAssignOp {
public: public:
...@@ -91,7 +99,11 @@ void AssignGpuEvaluate2(const int height, const int width, ...@@ -91,7 +99,11 @@ void AssignGpuEvaluate2(const int height, const int width,
} }
#endif #endif
// At least one assignment expression is required /**
* \brief Evaluate one or more TensorAssignOp objects.
*
* \note At least one assignment expression is required
*/
template <typename Assign, typename... AssignOp> template <typename Assign, typename... AssignOp>
void AssignEvaluate(Assign&& assign, AssignOp&& ... args) { void AssignEvaluate(Assign&& assign, AssignOp&& ... args) {
const bool useGpu_ = assign.useGpu(); const bool useGpu_ = assign.useGpu();
......
...@@ -318,12 +318,19 @@ public: ...@@ -318,12 +318,19 @@ public:
return condition(constant(p1), constant(p2)); return condition(constant(p1), constant(p2));
} }
/**
* return a TensorConstant. A TensorConstant object hold a constant value.
*/
const TensorConstant<hppl::unary::constant<T>, const Derived, T> const TensorConstant<hppl::unary::constant<T>, const Derived, T>
constant(T p) const { constant(T p) const {
return TensorConstant<hppl::unary::constant<T>, const Derived, T> return TensorConstant<hppl::unary::constant<T>, const Derived, T>
(hppl::unary::constant<T>(p), derived()); (hppl::unary::constant<T>(p), derived());
} }
/**
* return a TensorAssignOp, and use AssignEvaluate to evaluate one or more
* TensorAssignOp objects.
*/
template<typename ExpressionType> template<typename ExpressionType>
TensorAssignOp<Derived, ExpressionType, T> TensorAssignOp<Derived, ExpressionType, T>
lazyAssign(const ExpressionType& expr) const { lazyAssign(const ExpressionType& expr) const {
......
...@@ -15,9 +15,9 @@ add_simple_unittest(test_perturbation) ...@@ -15,9 +15,9 @@ add_simple_unittest(test_perturbation)
add_simple_unittest(test_CpuGpuVector) add_simple_unittest(test_CpuGpuVector)
add_simple_unittest(test_Allocator) add_simple_unittest(test_Allocator)
if(WITH_GPU) if(WITH_GPU)
CUDA_ADD_EXECUTABLE(test_Tensor test_Tensor.cu)
link_paddle_test(test_Tensor)
if(COMPILER_SUPPORT_CXX11) if(COMPILER_SUPPORT_CXX11)
CUDA_ADD_EXECUTABLE(test_Tensor test_Tensor.cu)
link_paddle_test(test_Tensor)
CUDA_ADD_EXECUTABLE(test_lazyAssign test_lazyAssign.cu) CUDA_ADD_EXECUTABLE(test_lazyAssign test_lazyAssign.cu)
link_paddle_test(test_lazyAssign) link_paddle_test(test_lazyAssign)
endif() endif()
......
/** /* Copyright (c) 2016 Baidu, Inc. All Rights Reserve.
* test_Tensor.cpp
* Licensed under the Apache License, Version 2.0 (the "License");
* Author: hedaoyuan (hedaoyuan@baidu.com) you may not use this file except in compliance with the License.
* Created on: 2016-06-06 You may obtain a copy of the License at
*
* Copyright (c) Baidu.com, Inc. All Rights Reserved 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 <gtest/gtest.h> #include <gtest/gtest.h>
#include "paddle/math/Matrix.h" #include "paddle/math/Matrix.h"
......
...@@ -91,7 +91,11 @@ int VectorCheckErr(const VectorPtr& vector1, const VectorPtr& vector2) { ...@@ -91,7 +91,11 @@ int VectorCheckErr(const VectorPtr& vector1, const VectorPtr& vector2) {
typedef std::function<void(size_t size, bool useGpu)> testMatrixFunc; typedef std::function<void(size_t size, bool useGpu)> testMatrixFunc;
void testCase(testMatrixFunc matrixFunc) { void testCase(testMatrixFunc matrixFunc) {
#ifndef PADDLE_ONLY_CPU
for (auto useGpu : {false, true}) { for (auto useGpu : {false, true}) {
#else
for (auto useGpu : {false}) {
#endif
for (auto size : {1, 32, 64, 128, 512, 1024, 4096, 32768, 65536, 131072, for (auto size : {1, 32, 64, 128, 512, 1024, 4096, 32768, 65536, 131072,
262144, 524288, 1048576, 2097152}) { 262144, 524288, 1048576, 2097152}) {
LOG(INFO) << " size=" << size << " useGpu=" << useGpu; LOG(INFO) << " size=" << size << " useGpu=" << useGpu;
......
/** /* Copyright (c) 2016 Baidu, Inc. All Rights Reserve.
* test_lazyAssign.cpp
* Licensed under the Apache License, Version 2.0 (the "License");
* Author: hedaoyuan (hedaoyuan@baidu.com) you may not use this file except in compliance with the License.
* Created on: 2016-10-15 You may obtain a copy of the License at
*
* Copyright (c) Baidu.com, Inc. All Rights Reserved 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 <gtest/gtest.h> #include <gtest/gtest.h>
#include "paddle/math/Matrix.h" #include "paddle/math/Matrix.h"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册