diff --git a/paddle/fluid/framework/attribute.h b/paddle/fluid/framework/attribute.h index 15486bbb1580aa..5f8a768cd65dd7 100644 --- a/paddle/fluid/framework/attribute.h +++ b/paddle/fluid/framework/attribute.h @@ -34,9 +34,9 @@ limitations under the License. */ namespace paddle { namespace framework { -paddle::any GetAttrValue(const Attribute& attr); +TEST_API paddle::any GetAttrValue(const Attribute& attr); -Attribute GetAttrValue(const proto::OpDesc::Attr& attr_desc); +TEST_API Attribute GetAttrValue(const proto::OpDesc::Attr& attr_desc); Attribute GetAttrValue(const proto::VarDesc::Attr& attr_desc); @@ -350,9 +350,10 @@ class AttrReader { }; paddle::experimental::Scalar MakeScalarFromProto(const proto::Scalar& v); -proto::Scalar MakeScalarProto(const paddle::experimental::Scalar& v); -paddle::experimental::Scalar MakeScalarFromAttribute(const Attribute& v); -std::vector MakeScalarsFromAttribute( +TEST_API proto::Scalar MakeScalarProto(const paddle::experimental::Scalar& v); +TEST_API paddle::experimental::Scalar MakeScalarFromAttribute( + const Attribute& v); +TEST_API std::vector MakeScalarsFromAttribute( const Attribute& v); void CanonicalizeScalarAttrs(const proto::OpProto& op_proto, AttributeMap* attrs); diff --git a/paddle/fluid/framework/data_layout_transform.h b/paddle/fluid/framework/data_layout_transform.h index 1b5639d5be9810..b9b4b7a8308b4e 100644 --- a/paddle/fluid/framework/data_layout_transform.h +++ b/paddle/fluid/framework/data_layout_transform.h @@ -47,11 +47,11 @@ struct CastDataLayout { std::vector GetAxis(const DataLayout& from, const DataLayout& to); -void TransDataLayout(const phi::KernelKey& kernel_type_for_var, - const phi::KernelKey& expected_kernel_type, - const phi::DenseTensor& in, - phi::DenseTensor* out, - const phi::Place& place); +TEST_API void TransDataLayout(const phi::KernelKey& kernel_type_for_var, + const phi::KernelKey& expected_kernel_type, + const phi::DenseTensor& in, + phi::DenseTensor* out, + const phi::Place& place); void TransDataLayout(phi::DataLayout from_layout, phi::DataLayout to_layout, diff --git a/paddle/fluid/framework/data_type.h b/paddle/fluid/framework/data_type.h index d2344fb68d3e46..b5fa02eeb2bc83 100644 --- a/paddle/fluid/framework/data_type.h +++ b/paddle/fluid/framework/data_type.h @@ -29,7 +29,7 @@ namespace paddle { namespace framework { TEST_API std::string DataTypeToString(const proto::VarType::Type type); -extern size_t SizeOfType(proto::VarType::Type type); +TEST_API extern size_t SizeOfType(proto::VarType::Type type); template struct IsComplex : public std::false_type {}; @@ -123,7 +123,7 @@ _ForEachDataType_(DefineDataTypeTrait); #undef DefineDataTypeTrait -extern proto::VarType::Type ToDataType(std::type_index type); +TEST_API extern proto::VarType::Type ToDataType(std::type_index type); extern std::type_index ToTypeIndex(proto::VarType::Type type); template diff --git a/paddle/fluid/framework/data_type_transform.h b/paddle/fluid/framework/data_type_transform.h index 2ec193b675097d..aa25fb3653013f 100644 --- a/paddle/fluid/framework/data_type_transform.h +++ b/paddle/fluid/framework/data_type_transform.h @@ -28,10 +28,10 @@ class OpKernelType; using KernelTypePair = std::pair; -void TransDataType(const phi::KernelKey& kernel_type_for_var, - const phi::KernelKey& expected_kernel_type, - const phi::DenseTensor& in, - phi::DenseTensor* out); +TEST_API void TransDataType(const phi::KernelKey& kernel_type_for_var, + const phi::KernelKey& expected_kernel_type, + const phi::DenseTensor& in, + phi::DenseTensor* out); void TransDataType(const phi::DenseTensor& in, const paddle::framework::proto::VarType::Type& type, phi::DenseTensor* out); diff --git a/paddle/fluid/framework/device_worker.h b/paddle/fluid/framework/device_worker.h index d7714808ff08ac..34975a43567350 100644 --- a/paddle/fluid/framework/device_worker.h +++ b/paddle/fluid/framework/device_worker.h @@ -60,20 +60,21 @@ class Scope; namespace paddle { namespace framework { -std::string PrintLodTensor(phi::DenseTensor* tensor, - int64_t start, - int64_t end, - char separator = ',', - bool need_leading_separator = false); -void PrintLodTensor(phi::DenseTensor* tensor, - int64_t start, - int64_t end, - std::string& output_str, // NOLINT - char separator = ',', - bool need_leading_separator = false, - int num_decimals = 9); -std::pair GetTensorBound(phi::DenseTensor* tensor, int index); -bool CheckValidOutput(phi::DenseTensor* tensor, size_t batch_size); +TEST_API std::string PrintLodTensor(phi::DenseTensor* tensor, + int64_t start, + int64_t end, + char separator = ',', + bool need_leading_separator = false); +TEST_API void PrintLodTensor(phi::DenseTensor* tensor, + int64_t start, + int64_t end, + std::string& output_str, // NOLINT + char separator = ',', + bool need_leading_separator = false, + int num_decimals = 9); +TEST_API std::pair GetTensorBound(phi::DenseTensor* tensor, + int index); +TEST_API bool CheckValidOutput(phi::DenseTensor* tensor, size_t batch_size); class FleetWrapper; diff --git a/paddle/fluid/framework/dlpack_tensor.h b/paddle/fluid/framework/dlpack_tensor.h index 943ee88b67695b..f39d91b84ee3d5 100644 --- a/paddle/fluid/framework/dlpack_tensor.h +++ b/paddle/fluid/framework/dlpack_tensor.h @@ -28,7 +28,8 @@ class DLPackTensor { std::remove_reference::type; // int64_t // lanes is only used in CPU to enable vectorization - explicit DLPackTensor(const phi::DenseTensor& tensor, LaneType lanes = 1); + TEST_API explicit DLPackTensor(const phi::DenseTensor& tensor, + LaneType lanes = 1); inline operator const ::DLTensor&() const { return t_; } diff --git a/paddle/fluid/framework/lod_tensor.h b/paddle/fluid/framework/lod_tensor.h index 9df50b69f3421a..51ab6d32d3fcc7 100644 --- a/paddle/fluid/framework/lod_tensor.h +++ b/paddle/fluid/framework/lod_tensor.h @@ -27,17 +27,19 @@ limitations under the License. */ #include "paddle/fluid/platform/place.h" #include "paddle/phi/core/dense_tensor.h" #include "paddle/phi/core/mixed_vector.h" +#include "paddle/utils/test_macros.h" namespace paddle { namespace framework { // Split phi::DenseTensor and copy to each place specified in places. -std::vector SplitLoDTensor( +TEST_API std::vector SplitLoDTensor( const phi::DenseTensor& src, const std::vector places); -void MergeLoDTensor(phi::DenseTensor* target, - const std::vector& lod_tensors, - platform::Place dst_place); +TEST_API void MergeLoDTensor( + phi::DenseTensor* target, + const std::vector& lod_tensors, + platform::Place dst_place); /* * LoD is short for Level of Details. @@ -65,7 +67,7 @@ LoD SliceInLevel(const LoD& in, /* * Transform an LoD from relative offsets to absolute offsets. */ -LoD ToAbsOffset(const LoD& in); +TEST_API LoD ToAbsOffset(const LoD& in); TEST_API bool operator==(const LoD& a, const LoD& b); @@ -85,7 +87,7 @@ TEST_API bool operator==(const LoD& a, const LoD& b); * tensor_height>0. */ -bool CheckLoD(const LoD& in, int tensor_height = -1); +TEST_API bool CheckLoD(const LoD& in, int tensor_height = -1); /* * Check whether this absolute lod's format is valid. * @@ -99,7 +101,7 @@ bool CheckLoD(const LoD& in, int tensor_height = -1); * same(the height of underlying tensor) or `tensor_height` if * tensor_height>0. */ -bool CheckAbsLoD(const LoD& in, int tensor_height = -1); +TEST_API bool CheckAbsLoD(const LoD& in, int tensor_height = -1); /* * Expand the `source` to fit the LoD of `lod`. For example, a `source` @@ -162,7 +164,7 @@ phi::DenseTensor LodExpand(const phi::DenseTensor& source, // Returns: // LoD = [[1, 4], [2, 4, 2, 3, 2]] // pair = {11, 24} -std::pair> GetSubLoDAndAbsoluteOffset( +TEST_API std::pair> GetSubLoDAndAbsoluteOffset( const LoD& lod, size_t start_idx, size_t end_idx, size_t start_level); /* @@ -182,7 +184,7 @@ void DeserializeFromStream(std::istream& is, const size_t& seek, const std::vector& shape); -LoD ConvertToOffsetBasedLoD(const LoD& length_lod); +TEST_API LoD ConvertToOffsetBasedLoD(const LoD& length_lod); void SerializeToStream(std::ostream& os, const phi::DenseTensor& tensor); diff --git a/paddle/fluid/framework/reader.h b/paddle/fluid/framework/reader.h index f926829dc9bd47..8aef207f5da326 100644 --- a/paddle/fluid/framework/reader.h +++ b/paddle/fluid/framework/reader.h @@ -48,15 +48,15 @@ class ReaderBase { "and need_check_feed")); } - virtual void ReadNext(paddle::framework::LoDTensorArray* out); + TEST_API virtual void ReadNext(paddle::framework::LoDTensorArray* out); - virtual void Shutdown(); + TEST_API virtual void Shutdown(); - virtual void Start(); + TEST_API virtual void Start(); // Return the readers which are the end of decorating chain. Basically // they are readers just before read op. - std::unordered_set GetEndPoints(); + TEST_API std::unordered_set GetEndPoints(); // Returns the shapes of the fed variables const std::vector& Shapes() const { return shapes_; } @@ -70,7 +70,7 @@ class ReaderBase { // This function returns whether you have the check shape for this Reader. const std::vector& NeedCheckFeed() const { return need_check_feed_; } - virtual ~ReaderBase(); + TEST_API virtual ~ReaderBase(); protected: virtual void ReadNextImpl(paddle::framework::LoDTensorArray* out UNUSED) {} @@ -98,7 +98,7 @@ class ReaderBase { friend class DecoratedReader; // These methods can be only invoked inside DecoratedReader to record the // decorating chain. - void InsertDecoratedReader( + TEST_API void InsertDecoratedReader( const std::shared_ptr& decorated_reader); // A set of which readers that decorated this reader. std::vector> decorated_readers_; @@ -121,7 +121,7 @@ class DecoratedReader : public ReaderBase, reader_->InsertDecoratedReader(shared_from_this()); } - ~DecoratedReader(); + TEST_API ~DecoratedReader(); const std::shared_ptr& UnderlyingReader() const { return reader_; diff --git a/paddle/fluid/framework/tensor_util.h b/paddle/fluid/framework/tensor_util.h index 96f3d71c132aff..927216ccd115e2 100644 --- a/paddle/fluid/framework/tensor_util.h +++ b/paddle/fluid/framework/tensor_util.h @@ -53,12 +53,12 @@ class PrintOptions { PrintOptions() {} }; -void TensorToStream(std::ostream& os, - const phi::DenseTensor& tensor, - const platform::DeviceContext& dev_ctx); -void TensorFromStream(std::istream& is, - phi::DenseTensor* tensor, - const platform::DeviceContext& dev_ctx); +TEST_API void TensorToStream(std::ostream& os, + const phi::DenseTensor& tensor, + const platform::DeviceContext& dev_ctx); +TEST_API void TensorFromStream(std::istream& is, + phi::DenseTensor* tensor, + const platform::DeviceContext& dev_ctx); void TensorFromStream(std::istream& is, phi::DenseTensor* tensor, const platform::DeviceContext& dev_ctx, @@ -107,7 +107,8 @@ void TesnorToVector(const phi::DenseTensor& src, std::vector* dst); // convert dlpack's DLTensor to tensor -void TensorFromDLPack(const ::DLTensor& dl_tensor, phi::DenseTensor* dst); +TEST_API void TensorFromDLPack(const ::DLTensor& dl_tensor, + phi::DenseTensor* dst); void TensorFromDLPack(const DLManagedTensor* src, phi::DenseTensor* dst); // diff --git a/paddle/fluid/framework/var_type_traits.h b/paddle/fluid/framework/var_type_traits.h index 9bffd125a3f3da..3751118915e9a9 100644 --- a/paddle/fluid/framework/var_type_traits.h +++ b/paddle/fluid/framework/var_type_traits.h @@ -97,8 +97,8 @@ namespace paddle { namespace framework { TEST_API const char *ToTypeName(int var_id); -const std::type_index &VarTraitIdToTypeIndex(int var_id); -int TypeIndexToVarTraitId(const std::type_index &type); +TEST_API const std::type_index &VarTraitIdToTypeIndex(int var_id); +TEST_API int TypeIndexToVarTraitId(const std::type_index &type); namespace detail { diff --git a/paddle/fluid/memory/memcpy.h b/paddle/fluid/memory/memcpy.h index c8d9208c482199..3897fbe10cea30 100644 --- a/paddle/fluid/memory/memcpy.h +++ b/paddle/fluid/memory/memcpy.h @@ -31,7 +31,7 @@ namespace memory { * */ template -void Copy(DstPlace, void* dst, SrcPlace, const void* src, size_t num); +TEST_API void Copy(DstPlace, void* dst, SrcPlace, const void* src, size_t num); /** * \brief Copy memory from one place to another place. diff --git a/paddle/phi/common/scalar.h b/paddle/phi/common/scalar.h index 12de9149a96af6..4c7c5320e4f2be 100644 --- a/paddle/phi/common/scalar.h +++ b/paddle/phi/common/scalar.h @@ -356,9 +356,9 @@ void CopyScalar(const ScalarBase& src, ScalarBase* dst) { } using Scalar = paddle::experimental::ScalarBase; -bool operator==(const Scalar& lhs, const Scalar& rhs); +TEST_API bool operator==(const Scalar& lhs, const Scalar& rhs); -std::ostream& operator<<(std::ostream& os, const Scalar& s); +TEST_API std::ostream& operator<<(std::ostream& os, const Scalar& s); template std::vector ExtractPlainVector( diff --git a/paddle/phi/core/compat/convert_utils.h b/paddle/phi/core/compat/convert_utils.h index 632b7a6d17ef27..320338fbc8edd7 100644 --- a/paddle/phi/core/compat/convert_utils.h +++ b/paddle/phi/core/compat/convert_utils.h @@ -29,7 +29,7 @@ namespace phi { const std::string& TransToPhiKernelName(const std::string& fluid_op_name); const std::string& TransToFluidOpName(const std::string& phi_kernel_name); -Backend TransToPhiBackend(const phi::Place& place); +TEST_API Backend TransToPhiBackend(const phi::Place& place); phi::Place TransToPhiPlace(const Backend& backend, bool set_device_id = true); #ifdef PADDLE_WITH_DNNL diff --git a/paddle/phi/core/lod_utils.h b/paddle/phi/core/lod_utils.h index a366f82c0ddf31..fdfe65f223827b 100644 --- a/paddle/phi/core/lod_utils.h +++ b/paddle/phi/core/lod_utils.h @@ -16,6 +16,8 @@ #include #include +#include "paddle/utils/test_macros.h" + namespace phi { using LoD = std::vector>; @@ -24,7 +26,7 @@ using LoD = std::vector>; */ LoD ToAbsOffset(const LoD& in); -void AppendLoD(LoD* lod, const LoD& lod_length); +TEST_API void AppendLoD(LoD* lod, const LoD& lod_length); /* * Convert between length-based LoD and offset-based LoD. @@ -36,6 +38,6 @@ void AppendLoD(LoD* lod, const LoD& lod_length); * If offset_lod = [[0, 2, 3],[0, 3, 5, 9]] * then length_lod = [[2, 1], [3, 2, 4]] */ -LoD ConvertToLengthBasedLoD(const LoD& offset_lod); +TEST_API LoD ConvertToLengthBasedLoD(const LoD& offset_lod); } // namespace phi diff --git a/paddle/phi/core/tensor_utils.h b/paddle/phi/core/tensor_utils.h index 4d9b50d34f8f5e..5d82fdfce976cd 100644 --- a/paddle/phi/core/tensor_utils.h +++ b/paddle/phi/core/tensor_utils.h @@ -134,7 +134,8 @@ void TensorToVector(const phi::DenseTensor& src, const phi::DeviceContext& ctx, std::vector* dst); -phi::DenseTensor ReshapeToMatrix(const phi::DenseTensor& src, int num_col_dims); +TEST_API phi::DenseTensor ReshapeToMatrix(const phi::DenseTensor& src, + int num_col_dims); template T GetValue(const phi::DenseTensor* x); diff --git a/paddle/phi/core/threadpool.h b/paddle/phi/core/threadpool.h index 110a6a459186fa..10f91c9387e9ac 100644 --- a/paddle/phi/core/threadpool.h +++ b/paddle/phi/core/threadpool.h @@ -56,7 +56,7 @@ class ThreadPool { std::packaged_task()>; // Returns the singleton of ThreadPool. - static ThreadPool* GetInstance(); + TEST_API static ThreadPool* GetInstance(); ~ThreadPool(); diff --git a/paddle/phi/kernels/funcs/data_layout_transform.h b/paddle/phi/kernels/funcs/data_layout_transform.h index 4bcc96d9c2ab70..3ecfaec6e06702 100644 --- a/paddle/phi/kernels/funcs/data_layout_transform.h +++ b/paddle/phi/kernels/funcs/data_layout_transform.h @@ -83,7 +83,8 @@ void TransDataLayoutFromOneDNN(DataLayout in_layout, DenseTensor* out, Place place, bool always_copy = false); -void* GetDataFromTensor(const DenseTensor& tensor, OneDNNDataType type); +TEST_API void* GetDataFromTensor(const DenseTensor& tensor, + OneDNNDataType type); dnnl::memory::desc make_memory_desc(const phi::DenseTensor& ref_tensor, phi::DataLayout target_layout); diff --git a/paddle/phi/kernels/isfinite_kernel.h b/paddle/phi/kernels/isfinite_kernel.h index e695a8e0742235..291bec9b784364 100644 --- a/paddle/phi/kernels/isfinite_kernel.h +++ b/paddle/phi/kernels/isfinite_kernel.h @@ -20,7 +20,7 @@ namespace phi { #define DEFINE_ISFINITE_KERNEL(isfinite_kernel) \ template \ - void isfinite_kernel( \ + TEST_API void isfinite_kernel( \ const Context& ctx, const DenseTensor& x, DenseTensor* out); DEFINE_ISFINITE_KERNEL(IsinfKernel) diff --git a/paddle/phi/kernels/reduce_all_kernel.h b/paddle/phi/kernels/reduce_all_kernel.h index af34a0a5d4c6f2..3610ec245ac984 100644 --- a/paddle/phi/kernels/reduce_all_kernel.h +++ b/paddle/phi/kernels/reduce_all_kernel.h @@ -27,10 +27,10 @@ void AllRawKernel(const Context& dev_ctx, DenseTensor* out); template -void AllKernel(const Context& dev_ctx, - const DenseTensor& x, - const std::vector& dims, - bool keep_dim, - DenseTensor* out); +TEST_API void AllKernel(const Context& dev_ctx, + const DenseTensor& x, + const std::vector& dims, + bool keep_dim, + DenseTensor* out); } // namespace phi diff --git a/paddle/phi/kernels/reduce_any_kernel.h b/paddle/phi/kernels/reduce_any_kernel.h index 9514d02dbdf94a..d6a9392e4996b4 100644 --- a/paddle/phi/kernels/reduce_any_kernel.h +++ b/paddle/phi/kernels/reduce_any_kernel.h @@ -26,10 +26,10 @@ void AnyRawKernel(const Context& dev_ctx, DenseTensor* out); template -void AnyKernel(const Context& dev_ctx, - const DenseTensor& x, - const std::vector& dims, - bool keep_dim, - DenseTensor* out); +TEST_API void AnyKernel(const Context& dev_ctx, + const DenseTensor& x, + const std::vector& dims, + bool keep_dim, + DenseTensor* out); } // namespace phi diff --git a/test/cpp/fluid/framework/CMakeLists.txt b/test/cpp/fluid/framework/CMakeLists.txt index 5e0e7404f6999d..0e6093ed669460 100644 --- a/test/cpp/fluid/framework/CMakeLists.txt +++ b/test/cpp/fluid/framework/CMakeLists.txt @@ -1,11 +1,14 @@ add_subdirectory(details) -cc_test( - data_type_test - SRCS data_type_test.cc - DEPS data_type place tensor) +paddle_test(data_type_test SRCS data_type_test.cc) -cc_test( +if(WITH_ONNXRUNTIME AND WIN32) + # Copy onnxruntime for some c++ test in Windows, since the test will + # be build only in CI, so suppose the generator in Windows is Ninja. + copy_onnx(data_type_test) +endif() + +nv_test( tensor_test SRCS tensor_test.cc DEPS tensor isfinite_op) @@ -20,26 +23,20 @@ elseif(WITH_ROCM) SRCS tensor_util_test.cc tensor_util_test.cu DEPS tensor dlpack_tensor isfinite_op) else() - cc_test( + nv_test( tensor_util_test SRCS tensor_util_test.cc DEPS tensor dlpack_tensor isfinite_op) endif() -cc_test( +nv_test( copy_same_tensor_test SRCS copy_same_tensor_test.cc DEPS tensor) -cc_test( - eigen_test - SRCS eigen_test.cc - DEPS tensor) +paddle_test(eigen_test SRCS eigen_test.cc) -cc_test( - lod_tensor_test - SRCS lod_tensor_test.cc - DEPS phi common lod_tensor) +paddle_test(lod_tensor_test SRCS lod_tensor_test.cc DEPS common) if(WITH_GPU) nv_test( @@ -53,35 +50,17 @@ elseif(WITH_ROCM) DEPS lod_tensor) endif() -cc_test( - reader_test - SRCS reader_test.cc - DEPS reader) +paddle_test(reader_test SRCS reader_test.cc) -cc_test( - threadpool_test - SRCS threadpool_test.cc - DEPS phi common) +paddle_test(threadpool_test SRCS threadpool_test.cc DEPS common) -cc_test( - var_type_traits_test - SRCS var_type_traits_test.cc - DEPS var_type_traits) +paddle_test(var_type_traits_test SRCS var_type_traits_test.cc) -cc_test( - device_worker_test - SRCS device_worker_test.cc - DEPS device_worker) +paddle_test(device_worker_test SRCS device_worker_test.cc) -cc_test( - scope_test - SRCS scope_test.cc - DEPS scope) +paddle_test(scope_test SRCS scope_test.cc) -cc_test( - variable_test - SRCS variable_test.cc - DEPS tensor var_type_traits) +paddle_test(variable_test SRCS variable_test.cc) if(WITH_GPU) nv_test( @@ -106,36 +85,18 @@ elseif(WITH_ROCM) SRCS data_type_transform_test.cc data_type_transform_test.cu DEPS data_type_transform) elseif(WITH_XPU) - cc_test( - data_type_transform_test - SRCS data_type_transform_test.cc - DEPS data_type_transform) + paddle_test(data_type_transform_test SRCS data_type_transform_test.cc) else() - cc_test( - data_type_transform_test - SRCS data_type_transform_test.cc - DEPS data_type_transform) + paddle_test(data_type_transform_test SRCS data_type_transform_test.cc) endif() -cc_test( - data_layout_transform_test - SRCS data_layout_transform_test.cc - DEPS data_layout_transform) +paddle_test(data_layout_transform_test SRCS data_layout_transform_test.cc) -cc_test( - attribute_test - SRCS attribute_test.cc - DEPS attribute framework_proto proto_desc) +paddle_test(attribute_test SRCS attribute_test.cc) -cc_test( - program_desc_test - SRCS program_desc_test.cc - DEPS proto_desc device_context) +paddle_test(program_desc_test SRCS program_desc_test.cc) -cc_test( - op_desc_test - SRCS op_desc_test.cc - DEPS proto_desc) +paddle_test(op_desc_test SRCS op_desc_test.cc) cc_test( op_version_registry_test