Skip to content
This repository has been archived by the owner on Nov 17, 2023. It is now read-only.

Fix broken amalgamation #12792

Merged
merged 8 commits into from
Feb 16, 2019
Merged

Fix broken amalgamation #12792

merged 8 commits into from
Feb 16, 2019

Conversation

ufoym
Copy link
Contributor

@ufoym ufoym commented Oct 11, 2018

Description

Fixes #8850.

Recent updates introduced new functions whose declarations were expanded by the amalgamation script, but left out the definition because the expansion list did not include all necessary header files.

The fix for now is to

  • deal with ambiguous complex.h.
  • include the missing header files in the expansion list.

so that amalgamation can be compiled without errors.

Checklist

Essentials

Please feel free to remove inapplicable items for your PR.

  • Changes are complete (i.e. I finished coding on this PR)
  • To the my best knowledge, examples are either not affected by this change, or have been fixed to be compatible with this change

Changes

  • Dealing with ambiguous complex.h.
  • Adding the missing header files in the expansion list.

@ufoym ufoym requested a review from szha as a code owner October 11, 2018 06:00
@marcoabreu
Copy link
Contributor

Thanks for your contribution! Could you elaborate how you compile? We run amalgamation in our CI and this should have been caught

@ufoym
Copy link
Contributor Author

ufoym commented Oct 11, 2018

I've just tried to compile amalgamation in Ubuntu and everything seems OK.
But it is not the case when compiling in OS X. So more specifically, the fix is to resolve compiling issues in OS X.

@marcoabreu
Copy link
Contributor

Ah! @lebeg wdyt?

@sandeep-krishnamurthy sandeep-krishnamurthy added Build pr-awaiting-review PR is waiting for code review labels Oct 11, 2018
@ufoym
Copy link
Contributor Author

ufoym commented Oct 14, 2018

Also fixed #8850.

@@ -143,7 +143,12 @@ def expand(x, pending, stage):
continue
path = m.groups()[0]
h = path.strip('./') if "../3rdparty/" not in path else path
source = find_source(h, x, stage)
if h.endswith('complex.h') and x.endswith('openblas_config.h'):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you add a comment explaining the special case? Also, is there maybe a nicer way to deal with this ambiguity - e.g. making the names (complex.h) more unique in the output to avoid a name clash?

source = find_source(h, x, stage)
if h.endswith('complex.h') and x.endswith('openblas_config.h'):
source = ''
elif h.startswith('ps/'):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where does the "ps/" come from? Maybe we can edit where this comes from instead of adding an exception?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feel free to rewrite that instead. It doesn't seem correct to me.

@szha @eric-haibin-lin

@marcoabreu
Copy link
Contributor

Could you paste the error log you get on os x into an issue so we have it documented?

@ufoym
Copy link
Contributor Author

ufoym commented Oct 14, 2018

git clone --recursive https://github.com/apache/incubator-mxnet
cd incubator-mxnet/amalgamation
make

Error log:

...
Undefined symbols for architecture x86_64:
  "dmlc::io::FileSystem::ListDirectoryRecursive(dmlc::io::URI const&, std::__1::vector<dmlc::io::FileInfo, std::__1::allocator<dmlc::io::FileInfo> >*)", referenced from:
      vtable for dmlc::io::LocalFileSystem in mxnet_predict-all.o
  "mxnet::imperative::RunGraph(bool, nnvm::IndexedGraph const&, std::__1::vector<mxnet::NDArray*, std::__1::allocator<mxnet::NDArray*> >, unsigned long, unsigned long, std::__1::vector<mxnet::OpReqType, std::__1::allocator<mxnet::OpReqType> >&&, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >&&, std::__1::vector<mxnet::OpStatePtr, std::__1::allocator<mxnet::OpStatePtr> >*, std::__1::vector<mxnet::DispatchMode, std::__1::allocator<mxnet::DispatchMode> > const&, bool)", referenced from:
      mxnet::Imperative::Backward(std::__1::vector<mxnet::NDArray*, std::__1::allocator<mxnet::NDArray*> > const&, std::__1::vector<mxnet::NDArray*, std::__1::allocator<mxnet::NDArray*> > const&, std::__1::vector<mxnet::NDArray*, std::__1::allocator<mxnet::NDArray*> > const&, bool, bool, bool) in mxnet_predict-all.o
      mxnet::CachedOp::DynamicForward(mxnet::Context const&, std::__1::vector<mxnet::NDArray*, std::__1::allocator<mxnet::NDArray*> > const&, std::__1::vector<mxnet::NDArray*, std::__1::allocator<mxnet::NDArray*> > const&) in mxnet_predict-all.o
      mxnet::CachedOp::DynamicBackward(bool, mxnet::OpStatePtr const&, std::__1::vector<mxnet::NDArray*, std::__1::allocator<mxnet::NDArray*> > const&, std::__1::vector<mxnet::OpReqType, std::__1::allocator<mxnet::OpReqType> > const&, std::__1::vector<mxnet::NDArray*, std::__1::allocator<mxnet::NDArray*> > const&) in mxnet_predict-all.o
  "mxnet::on_exit_api()", referenced from:
      _CreatePartialOut(char const*, void const*, int, int, int, unsigned int, char const**, unsigned int const*, unsigned int const*, unsigned int, char const**, int, bool, void**) in mxnet_predict-all.o
      _MXPredReshape in mxnet_predict-all.o
      _MXPredGetOutputShape in mxnet_predict-all.o
      _MXPredSetInput in mxnet_predict-all.o
      _MXPredForward in mxnet_predict-all.o
      _MXPredPartialForward in mxnet_predict-all.o
      _MXPredGetOutput in mxnet_predict-all.o
      ...
  "mxnet::on_enter_api(char const*)", referenced from:
      _CreatePartialOut(char const*, void const*, int, int, int, unsigned int, char const**, unsigned int const*, unsigned int const*, unsigned int, char const**, int, bool, void**) in mxnet_predict-all.o
      _MXPredReshape in mxnet_predict-all.o
      _MXPredGetOutputShape in mxnet_predict-all.o
      _MXPredSetInput in mxnet_predict-all.o
      _MXPredForward in mxnet_predict-all.o
      _MXPredPartialForward in mxnet_predict-all.o
      _MXPredGetOutput in mxnet_predict-all.o
      ...
  "mxnet::CutGraphInputs(std::__1::vector<nnvm::NodeEntry*, std::__1::allocator<nnvm::NodeEntry*> > const&, bool, std::__1::vector<nnvm::NodeEntry, std::__1::allocator<nnvm::NodeEntry> >*)", referenced from:
      _MXSymbolCutSubgraph in mxnet_predict-all.o
  "mxnet::GetInputSymbols(nnvm::Symbol const&)", referenced from:
      _MXSymbolGetInputSymbols in mxnet_predict-all.o
  "mxnet::exec::InferShape(nnvm::Graph&&, std::__1::vector<nnvm::TShape, std::__1::allocator<nnvm::TShape> >&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
      mxnet::imperative::CheckAndInferShape(nnvm::Graph*, std::__1::vector<nnvm::TShape, std::__1::allocator<nnvm::TShape> >&&, bool, std::__1::pair<unsigned int, unsigned int>, std::__1::pair<unsigned int, unsigned int>) in mxnet_predict-all.o
      mxnet::exec::GraphExecutor::Init(nnvm::Symbol, mxnet::Context const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, mxnet::Context, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, mxnet::Context> > > const&, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> > const&, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> > const&, std::__1::vector<mxnet::OpReqType, std::__1::allocator<mxnet::OpReqType> > const&, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> > const&, mxnet::Executor*, std::__1::unordered_map<nnvm::NodeEntry, mxnet::NDArray, nnvm::NodeEntryHash, nnvm::NodeEntryEqual, std::__1::allocator<std::__1::pair<nnvm::NodeEntry const, mxnet::NDArray> > > const&) in mxnet_predict-all.o
      mxnet::exec::GraphExecutor::Init(nnvm::Symbol, mxnet::Context const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, mxnet::Context, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, mxnet::Context> > > const&, std::__1::vector<mxnet::Context, std::__1::allocator<mxnet::Context> > const&, std::__1::vector<mxnet::Context, std::__1::allocator<mxnet::Context> > const&, std::__1::vector<mxnet::Context, std::__1::allocator<mxnet::Context> > const&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, nnvm::TShape, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, nnvm::TShape> > > const&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, int> > > const&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, int> > > const&, std::__1::vector<mxnet::OpReqType, std::__1::allocator<mxnet::OpReqType> > const&, std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> >*, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> >*, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> >*, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, mxnet::NDArray, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, mxnet::NDArray> > >*, mxnet::Executor*, std::__1::unordered_map<nnvm::NodeEntry, mxnet::NDArray, nnvm::NodeEntryHash, nnvm::NodeEntryEqual, std::__1::allocator<std::__1::pair<nnvm::NodeEntry const, mxnet::NDArray> > > const&) in mxnet_predict-all.o
      mxnet::exec::GraphExecutor::Reshape(bool, bool, mxnet::Context const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, mxnet::Context, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, mxnet::Context> > > const&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, nnvm::TShape, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, nnvm::TShape> > > const&, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> >*, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> >*, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> >*) in mxnet_predict-all.o
      _CreatePartialOut(char const*, void const*, int, int, int, unsigned int, char const**, unsigned int const*, unsigned int const*, unsigned int, char const**, int, bool, void**) in mxnet_predict-all.o
      _MXPredReshape in mxnet_predict-all.o
      _MXSymbolInferShape in mxnet_predict-all.o
      ...
  "mxnet::exec::InferStorageType(nnvm::Graph&&, std::__1::vector<int, std::__1::allocator<int> >&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
      mxnet::imperative::CheckAndInferStorageType(nnvm::Graph*, std::__1::vector<int, std::__1::allocator<int> >&&, std::__1::vector<int, std::__1::allocator<int> >&&, bool, std::__1::pair<unsigned int, unsigned int>, std::__1::pair<unsigned int, unsigned int>) in mxnet_predict-all.o
      mxnet::exec::GraphExecutor::Init(nnvm::Symbol, mxnet::Context const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, mxnet::Context, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, mxnet::Context> > > const&, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> > const&, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> > const&, std::__1::vector<mxnet::OpReqType, std::__1::allocator<mxnet::OpReqType> > const&, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> > const&, mxnet::Executor*, std::__1::unordered_map<nnvm::NodeEntry, mxnet::NDArray, nnvm::NodeEntryHash, nnvm::NodeEntryEqual, std::__1::allocator<std::__1::pair<nnvm::NodeEntry const, mxnet::NDArray> > > const&) in mxnet_predict-all.o
      mxnet::exec::GraphExecutor::Init(nnvm::Symbol, mxnet::Context const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, mxnet::Context, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, mxnet::Context> > > const&, std::__1::vector<mxnet::Context, std::__1::allocator<mxnet::Context> > const&, std::__1::vector<mxnet::Context, std::__1::allocator<mxnet::Context> > const&, std::__1::vector<mxnet::Context, std::__1::allocator<mxnet::Context> > const&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, nnvm::TShape, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, nnvm::TShape> > > const&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, int> > > const&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, int> > > const&, std::__1::vector<mxnet::OpReqType, std::__1::allocator<mxnet::OpReqType> > const&, std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> >*, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> >*, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> >*, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, mxnet::NDArray, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, mxnet::NDArray> > >*, mxnet::Executor*, std::__1::unordered_map<nnvm::NodeEntry, mxnet::NDArray, nnvm::NodeEntryHash, nnvm::NodeEntryEqual, std::__1::allocator<std::__1::pair<nnvm::NodeEntry const, mxnet::NDArray> > > const&) in mxnet_predict-all.o
      mxnet::exec::InferForwardAttrs(nnvm::Graph, std::__1::vector<nnvm::TShape, std::__1::allocator<nnvm::TShape> >, std::__1::vector<int, std::__1::allocator<int> >, std::__1::vector<int, std::__1::allocator<int> >, mxnet::Context const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, mxnet::Context, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, mxnet::Context> > > const&, std::__1::vector<mxnet::Context, std::__1::allocator<mxnet::Context> > const&, std::__1::vector<mxnet::Context, std::__1::allocator<mxnet::Context> > const&) in mxnet_predict-all.o
      mxnet::op::DefaultSubgraphOpStorageTypeHelper(nnvm::Symbol const&, int, mxnet::DispatchMode*, std::__1::vector<int, std::__1::allocator<int> >*, std::__1::vector<int, std::__1::allocator<int> >*) in mxnet_predict-all.o
  "mxnet::exec::InferType(nnvm::Graph&&, std::__1::vector<int, std::__1::allocator<int> >&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
      mxnet::imperative::CheckAndInferType(nnvm::Graph*, std::__1::vector<int, std::__1::allocator<int> >&&, bool, std::__1::pair<unsigned int, unsigned int>, std::__1::pair<unsigned int, unsigned int>) in mxnet_predict-all.o
      mxnet::exec::GraphExecutor::Init(nnvm::Symbol, mxnet::Context const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, mxnet::Context, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, mxnet::Context> > > const&, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> > const&, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> > const&, std::__1::vector<mxnet::OpReqType, std::__1::allocator<mxnet::OpReqType> > const&, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> > const&, mxnet::Executor*, std::__1::unordered_map<nnvm::NodeEntry, mxnet::NDArray, nnvm::NodeEntryHash, nnvm::NodeEntryEqual, std::__1::allocator<std::__1::pair<nnvm::NodeEntry const, mxnet::NDArray> > > const&) in mxnet_predict-all.o
      mxnet::exec::GraphExecutor::Init(nnvm::Symbol, mxnet::Context const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, mxnet::Context, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, mxnet::Context> > > const&, std::__1::vector<mxnet::Context, std::__1::allocator<mxnet::Context> > const&, std::__1::vector<mxnet::Context, std::__1::allocator<mxnet::Context> > const&, std::__1::vector<mxnet::Context, std::__1::allocator<mxnet::Context> > const&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, nnvm::TShape, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, nnvm::TShape> > > const&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, int> > > const&, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, int> > > const&, std::__1::vector<mxnet::OpReqType, std::__1::allocator<mxnet::OpReqType> > const&, std::__1::unordered_set<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> >*, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> >*, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> >*, std::__1::unordered_map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, mxnet::NDArray, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, mxnet::NDArray> > >*, mxnet::Executor*, std::__1::unordered_map<nnvm::NodeEntry, mxnet::NDArray, nnvm::NodeEntryHash, nnvm::NodeEntryEqual, std::__1::allocator<std::__1::pair<nnvm::NodeEntry const, mxnet::NDArray> > > const&) in mxnet_predict-all.o
      _MXSymbolInferType in mxnet_predict-all.o
      mxnet::exec::InferForwardAttrs(nnvm::Graph, std::__1::vector<nnvm::TShape, std::__1::allocator<nnvm::TShape> >, std::__1::vector<int, std::__1::allocator<int> >, std::__1::vector<int, std::__1::allocator<int> >, mxnet::Context const&, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, mxnet::Context, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, mxnet::Context> > > const&, std::__1::vector<mxnet::Context, std::__1::allocator<mxnet::Context> > const&, std::__1::vector<mxnet::Context, std::__1::allocator<mxnet::Context> > const&) in mxnet_predict-all.o
      mxnet::op::DefaultSubgraphOpTypeHelper(nnvm::Symbol const&, std::__1::vector<int, std::__1::allocator<int> >*, std::__1::vector<int, std::__1::allocator<int> >*) in mxnet_predict-all.o
  "void mxnet::common::CheckFormatWrapper<mshadow::cpu>(mxnet::RunContext const&, mxnet::NDArray const&, mxnet::TBlob const&, bool)", referenced from:
      mxnet::NDArray::SyncCheckFormat(bool) const::$_24::operator()(mxnet::RunContext) const in mxnet_predict-all.o
  "void mxnet::common::CastStorageDispatch<mshadow::cpu>(mxnet::OpContext const&, mxnet::NDArray const&, mxnet::NDArray const&)", referenced from:
      mxnet::common::CastNonDefaultStorage(std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> > const&, std::__1::vector<mxnet::NDArray, std::__1::allocator<mxnet::NDArray> > const&, mxnet::OpContext const&, bool) in mxnet_predict-all.o
      void mxnet::CopyFromToImpl<mshadow::cpu, mshadow::cpu>(mxnet::NDArray const&, mxnet::NDArray const&, mxnet::RunContext, std::__1::vector<mxnet::Resource, std::__1::allocator<mxnet::Resource> > const&) in mxnet_predict-all.o
  "mxnet::engine::OpenMP::Get()", referenced from:
      mxnet::LibraryInitializer::LibraryInitializer()::'lambda1'()::operator()() const in mxnet_predict-all.o
  "mxnet::profiler::AggregateStats::OnProfileStat(mxnet::profiler::ProfileStat const&)", referenced from:
      mxnet::profiler::Profiler::DumpProfile(bool) in mxnet_predict-all.o
  "typeinfo for dmlc::io::FileSystem", referenced from:
      typeinfo for dmlc::io::LocalFileSystem in mxnet_predict-all.o
  "vtable for dmlc::io::FileSystem", referenced from:
      dmlc::io::FileSystem::FileSystem() in mxnet_predict-all.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [`pwd`/../lib/libmxnet_predict.so] Error 1

@marcoabreu
Copy link
Contributor

marcoabreu commented Oct 14, 2018

CachedOp: cc @reminisce @zheng-da

@roywei
Copy link
Member

roywei commented Oct 29, 2018

ping @reminisce @zheng-da could you take a look at this PR? thanks!

@kalyc
Copy link
Contributor

kalyc commented Nov 12, 2018

@ufoym could you please add "Fixes #8850" in your PR description? This will automatically close the associated issue on PR merge

@mxnet-label-bot add [C++ ]

@stu1130
Copy link
Contributor

stu1130 commented Nov 21, 2018

@ufoym could you please add "Fixes #8850" in your PR description
@reminisce @zheng-da ping to review CachedOp

@vandanavk
Copy link
Contributor

adding @piiswrong for review too

@roywei
Copy link
Member

roywei commented Dec 11, 2018

@ufoym Thanks for the contribution, could you trigger CI again? (you can do that by push an empty commit)

@ufoym
Copy link
Contributor Author

ufoym commented Dec 11, 2018

@roywei Done.

@Roshrini
Copy link
Member

Roshrini commented Jan 3, 2019

I have retriggered the CI as it was failed.
@mxnet-label-bot Update [Build, pr-awaiting-testing]

@marcoabreu marcoabreu added pr-awaiting-testing PR is reviewed and waiting CI build and test and removed pr-awaiting-review PR is waiting for code review labels Jan 3, 2019
@anirudhacharya
Copy link
Member

@ufoym please rebase your PR and resolve the merge conflicts

@ufoym
Copy link
Contributor Author

ufoym commented Jan 15, 2019

@anirudhacharya The merge conflicts have been resolved again.
The checks should be successful without network issues.

@sandeep-krishnamurthy
Copy link
Contributor

@anirudhacharya - Ping for review. Thanks!

@vandanavk
Copy link
Contributor

@ufoym Could you re-trigger CI again?

@ankkhedia
Copy link
Contributor

@ufoym Could you please fix build errors?

@zheng-da @reminisce Could you please help review the PR?

@ufoym
Copy link
Contributor Author

ufoym commented Feb 16, 2019

@ankkhedia @vandanavk @zheng-da I merely changed the code (just simply resolved the merge conflicts). All checks have passed for several times. Did I miss something?

@szha
Copy link
Member

szha commented Feb 16, 2019

@szha szha merged commit 29fa446 into apache:master Feb 16, 2019
stephenrawls pushed a commit to stephenrawls/incubator-mxnet that referenced this pull request Feb 16, 2019
* Fix broken amalgamation

* Fixes apache#8850

* Update CONTRIBUTORS.md

* Update CONTRIBUTORS.md
jessr92 pushed a commit to jessr92/incubator-mxnet that referenced this pull request Feb 19, 2019
* Fix broken amalgamation

* Fixes apache#8850

* Update CONTRIBUTORS.md

* Update CONTRIBUTORS.md
drivanov pushed a commit to drivanov/incubator-mxnet that referenced this pull request Mar 4, 2019
* Fix broken amalgamation

* Fixes apache#8850

* Update CONTRIBUTORS.md

* Update CONTRIBUTORS.md
vdantu pushed a commit to vdantu/incubator-mxnet that referenced this pull request Mar 31, 2019
* Fix broken amalgamation

* Fixes apache#8850

* Update CONTRIBUTORS.md

* Update CONTRIBUTORS.md
haohuanw pushed a commit to haohuanw/incubator-mxnet that referenced this pull request Jun 23, 2019
* Fix broken amalgamation

* Fixes apache#8850

* Update CONTRIBUTORS.md

* Update CONTRIBUTORS.md
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Build pr-awaiting-testing PR is reviewed and waiting CI build and test
Projects
None yet
Development

Successfully merging this pull request may close these issues.

iOS compilation with amalgamate bash, undefined symbols for architecture arm64