Hanjun-Dai / graph_comb_opt

Implementation of "Learning Combinatorial Optimization Algorithms over Graphs"
https://arxiv.org/abs/1704.01665
MIT License
491 stars 135 forks source link

Building graphNN #7

Closed jasontlam closed 6 years ago

jasontlam commented 6 years ago

Hello,

When I try to build the graphNN library I get this error.

make: *** No rule to make target build_cpuonly/objs/cxx/src//nn/hit_at_k.o', needed bybuild_cpuonly/lib/libgnn.a'. Stop.

Thanks!

jasontlam commented 6 years ago

needed to brew install findutils for macOS

jasontlam commented 6 years ago

When I try and build the dynamic library for realworld_s2v_tsp2d I get the error below. Do you have any ideas how to fix this ? Thanks!

Undefined symbols for architecture x86_64: "gnn::ConcatCols<gnn::GPU, float>::ConcatCols(std::1::basic_string<char, std::__1::char_traits, std::1::allocator >, gnn::PropErr)", referenced from: std::1::shared_ptr<gnn::ConcatCols<gnn::GPU, float> > std::1::shared_ptr<gnn::ConcatCols<gnn::GPU, float> >::make_shared<std::1::basic_string<char, std::1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::1::char_traits, std::__1::allocator >&&&) in old_qnet.o "gnn::ElewiseAdd<gnn::GPU, float>::Forward(std::1::vector<std::1::shared_ptr, std::1::allocator<std::1::shared_ptr > >&, std::1::vector<std::1::shared_ptr, std::1::allocator<std::1::shared_ptr > >&, gnn::Phase)", referenced from: vtable for gnn::ElewiseAdd<gnn::GPU, float> in qnet.o "gnn::ElewiseAdd<gnn::GPU, float>::Backward(std::1::vector<std::1::shared_ptr, std::1::allocator<std::1::shared_ptr > >&, std::1::vector<bool, std::1::allocator >&, std::1::vector<std::1::shared_ptr, std::1::allocator<std::1::shared_ptr > >&)", referenced from: vtable for gnn::ElewiseAdd<gnn::GPU, float> in qnet.o "gnn::ElewiseAdd<gnn::GPU, float>::ElewiseAdd(std::1::basic_string<char, std::1::char_traits, std::1::allocator >, std::1::vector<float, std::1::allocator >, gnn::PropErr)", referenced from: std::1::shared_ptr<gnn::ElewiseAdd<gnn::GPU, float> > std::1::shared_ptr<gnn::ElewiseAdd<gnn::GPU, float> >::make_shared<std::1::basic_string<char, std::__1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::__1::char_traits, std::1::allocator >&&&) in qnet.o "gnn::ReduceMean<gnn::GPU, float>::ReduceMean(std::1::basic_string<char, std::__1::char_traits, std::1::allocator >, int, bool, gnn::PropErr)", referenced from: std::1::shared_ptr<gnn::ReduceMean<gnn::GPU, float> > std::1::shared_ptr<gnn::ReduceMean<gnn::GPU, float> >::make_shared<std::1::basic_string<char, std::1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::1::char_traits, std::__1::allocator >&&&) in old_qnet.o std::1::shared_ptr<gnn::ReduceMean<gnn::GPU, float> > std::1::shared_ptr<gnn::ReduceMean<gnn::GPU, float> >::make_shared<std::1::basic_string<char, std::1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::1::char_traits, std::1::allocator >&&&) in qnet.o "gnn::MultiMatMul<gnn::GPU, float>::MultiMatMul(std::1::basic_string<char, std::1::char_traits, std::1::allocator >, gnn::PropErr)", referenced from: std::1::shared_ptr<gnn::MultiMatMul<gnn::GPU, float> > std::1::shared_ptr<gnn::MultiMatMul<gnn::GPU, float> >::make_shared<std::1::basic_string<char, std::__1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::__1::char_traits, std::1::allocator >&&&) in qnet.o "gnn::SquareError<gnn::GPU, float>::Forward(std::1::vector<std::1::shared_ptr, std::1::allocator<std::1::shared_ptr > >&, std::1::vector<std::1::shared_ptr, std::1::allocator<std::1::shared_ptr > >&, gnn::Phase)", referenced from: vtable for gnn::SquareError<gnn::GPU, float> in old_qnet.o vtable for gnn::SquareError<gnn::GPU, float> in qnet.o "gnn::SquareError<gnn::GPU, float>::Backward(std::1::vector<std::1::shared_ptr, std::1::allocator<std::1::shared_ptr > >&, std::1::vector<bool, std::1::allocator >&, std::1::vector<std::1::shared_ptr, std::1::allocator<std::1::shared_ptr > >&)", referenced from: vtable for gnn::SquareError<gnn::GPU, float> in old_qnet.o vtable for gnn::SquareError<gnn::GPU, float> in qnet.o "gnn::SquareError<gnn::GPU, float>::SquareError(std::1::basic_string<char, std::__1::char_traits, std::1::allocator >, gnn::PropErr)", referenced from: std::1::shared_ptr<gnn::SquareError<gnn::GPU, float> > std::1::shared_ptr<gnn::SquareError<gnn::GPU, float> >::make_shared<std::1::basic_string<char, std::1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::1::char_traits, std::__1::allocator >&&&) in old_qnet.o std::1::shared_ptr<gnn::SquareError<gnn::GPU, float> > std::1::shared_ptr<gnn::SquareError<gnn::GPU, float> >::make_shared<std::1::basic_string<char, std::1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::1::char_traits, std::1::allocator >&&&) in qnet.o "gnn::AdamOptimizer<gnn::GPU, float>::AdamOptimizer(gnn::ParamSet<gnn::GPU, float>*, float, float, float, float, float)", referenced from: INet::INet() in inet.o "gnn::TensorTemplate<gnn::CPU, gnn::DENSE, float>::CopyFrom(gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float>&)", referenced from: Predict(std::1::vector<std::1::shared_ptr, std::1::allocator<std::1::shared_ptr > >&, std::1::vector<std::1::vector<int, std::1::allocator >, std::1::allocator<std::1::vector<int, std::__1::allocator >> >&, std::1::vector<std::1::vector<double, std::1::allocator >*, std::1::allocator<std::1::vector<double, std::1::allocator >> >&) in nn_api.o "gnn::TensorTemplate<gnn::GPU, gnn::CSR_SPARSE, float>::GetMatMode()", referenced from: vtable for gnn::TensorTemplate<gnn::GPU, gnn::CSR_SPARSE, float> in old_qnet.o vtable for gnn::TensorTemplate<gnn::GPU, gnn::CSR_SPARSE, float> in qnet.o "gnn::TensorTemplate<gnn::GPU, gnn::CSR_SPARSE, float>::GetMatType()", referenced from: vtable for gnn::TensorTemplate<gnn::GPU, gnn::CSR_SPARSE, float> in old_qnet.o vtable for gnn::TensorTemplate<gnn::GPU, gnn::CSR_SPARSE, float> in qnet.o "gnn::TensorTemplate<gnn::GPU, gnn::CSR_SPARSE, float>::Reshape(std::1::vector<unsigned long, std::1::allocator >)", referenced from: vtable for gnn::TensorTemplate<gnn::GPU, gnn::CSR_SPARSE, float> in old_qnet.o vtable for gnn::TensorTemplate<gnn::GPU, gnn::CSR_SPARSE, float> in qnet.o "gnn::TensorTemplate<gnn::GPU, gnn::CSR_SPARSE, float>::CopyFrom(gnn::TensorTemplate<gnn::CPU, gnn::CSR_SPARSE, float>&)", referenced from: OldQNet::SetupGraphInput(std::1::vector<int, std::1::allocator >&, std::1::vector<std::1::shared_ptr, std::1::allocator<std::1::shared_ptr > >&, std::1::vector<std::1::vector<int, std::__1::allocator >, std::1::allocator<std::1::vector<int, std::1::allocator >> >&, int const) in old_qnet.o QNet::SetupGraphInput(std::1::vector<int, std::1::allocator >&, std::1::vector<std::1::shared_ptr, std::1::allocator<std::1::shared_ptr > >&, std::1::vector<std::1::vector<int, std::1::allocator >*, std::1::allocator<std::1::vector<int, std::1::allocator >> >&, int const) in qnet.o "gnn::TensorTemplate<gnn::GPU, gnn::CSR_SPARSE, float>::TensorTemplate()", referenced from: OldQNet::OldQNet() in old_qnet.o QNet::QNet() in qnet.o "gnn::TensorTemplate<gnn::GPU, gnn::ROW_SPARSE, float>::GetMatMode()", referenced from: vtable for gnn::TensorTemplate<gnn::GPU, gnn::ROW_SPARSE, float> in old_qnet.o vtable for gnn::TensorTemplate<gnn::GPU, gnn::ROW_SPARSE, float> in qnet.o "gnn::TensorTemplate<gnn::GPU, gnn::ROW_SPARSE, float>::GetMatType()", referenced from: vtable for gnn::TensorTemplate<gnn::GPU, gnn::ROW_SPARSE, float> in old_qnet.o vtable for gnn::TensorTemplate<gnn::GPU, gnn::ROW_SPARSE, float> in qnet.o "gnn::TensorTemplate<gnn::GPU, gnn::ROW_SPARSE, float>::Reshape(std::1::vector<unsigned long, std::1::allocator >)", referenced from: vtable for gnn::TensorTemplate<gnn::GPU, gnn::ROW_SPARSE, float> in old_qnet.o vtable for gnn::TensorTemplate<gnn::GPU, gnn::ROW_SPARSE, float> in qnet.o "gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float>::GetMatMode()", referenced from: vtable for gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float> in old_qnet.o vtable for gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float> in qnet.o vtable for gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float> in inet.o "gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float>::GetMatType()", referenced from: vtable for gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float> in old_qnet.o vtable for gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float> in qnet.o vtable for gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float> in inet.o "gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float>::Deserialize(__sFILE*)", referenced from: vtable for gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float> in old_qnet.o vtable for gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float> in qnet.o vtable for gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float> in inet.o "gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float>::Reshape(std::1::vector<unsigned long, std::1::allocator >)", referenced from: vtable for gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float> in old_qnet.o vtable for gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float> in qnet.o vtable for gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float> in inet.o "gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float>::CopyFrom(gnn::TensorTemplate<gnn::CPU, gnn::DENSE, float>&)", referenced from: OldQNet::SetupGraphInput(std::1::vector<int, std::1::allocator >&, std::1::vector<std::1::shared_ptr, std::1::allocator<std::1::shared_ptr > >&, std::1::vector<std::1::vector<int, std::1::allocator >*, std::1::allocator<std::1::vector<int, std::1::allocator >> >&, int const) in old_qnet.o OldQNet::SetupTrain(std::1::vector<int, std::1::allocator >&, std::1::vector<std::1::shared_ptr, std::1::allocator<std::1::shared_ptr > >&, std::1::vector<std::1::vector<int, std::1::allocator >, std::1::allocator<std::1::vector<int, std::__1::allocator >> >&, std::1::vector<int, std::1::allocator >&, std::1::vector<double, std::1::allocator >&) in old_qnet.o QNet::SetupGraphInput(std::1::vector<int, std::1::allocator >&, std::1::vector<std::1::shared_ptr, std::1::allocator<std::1::shared_ptr > >&, std::1::vector<std::1::vector<int, std::1::allocator >*, std::1::allocator<std::1::vector<int, std::1::allocator >> >&, int const) in qnet.o QNet::SetupTrain(std::1::vector<int, std::1::allocator >&, std::1::vector<std::1::shared_ptr, std::1::allocator<std::1::shared_ptr > >&, std::1::vector<std::1::vector<int, std::1::allocator >*, std::1::allocator<std::1::vector<int, std::1::allocator >> >&, std::1::vector<int, std::1::allocator >&, std::1::vector<double, std::1::allocator >&) in qnet.o "gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float>::SetRandN(float, float)", referenced from: OldQNet::BuildNet() in old_qnet.o QNet::BuildNet() in qnet.o "gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float>::Serialize(__sFILE)", referenced from: vtable for gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float> in old_qnet.o vtable for gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float> in qnet.o vtable for gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float> in inet.o "gnn::TensorTemplate<gnn::GPU, gnn::DENSE, float>::TensorTemplate()", referenced from: INet::INet() in inet.o "gnn::SubgraphMsgPass<gnn::GPU, float>::InitCPUWeight(gnn::GraphStruct)", referenced from: vtable for gnn::SubgraphMsgPass<gnn::GPU, float> in old_qnet.o vtable for gnn::SubgraphMsgPass<gnn::GPU, float> in qnet.o "gnn::Edge2NodeMsgPass<gnn::GPU, float>::InitCPUWeight(gnn::GraphStruct)", referenced from: vtable for gnn::Edge2NodeMsgPass<gnn::GPU, float> in old_qnet.o vtable for gnn::Edge2NodeMsgPass<gnn::GPU, float> in qnet.o "gnn::Node2EdgeMsgPass<gnn::GPU, float>::InitCPUWeight(gnn::GraphStruct)", referenced from: vtable for gnn::Node2EdgeMsgPass<gnn::GPU, float> in qnet.o "gnn::Node2NodeMsgPass<gnn::GPU, float>::InitCPUWeight(gnn::GraphStruct)", referenced from: vtable for gnn::Node2NodeMsgPass<gnn::GPU, float> in old_qnet.o vtable for gnn::Node2NodeMsgPass<gnn::GPU, float> in qnet.o "gnn::TensorVarTemplate<gnn::GPU, gnn::CSR_SPARSE, float>::GetMatType()", referenced from: vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::CSR_SPARSE, float> in old_qnet.o vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::CSR_SPARSE, float> in qnet.o "gnn::TensorVarTemplate<gnn::GPU, gnn::CSR_SPARSE, float>::SetRef(void)", referenced from: vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::CSR_SPARSE, float> in old_qnet.o vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::CSR_SPARSE, float> in qnet.o "gnn::TensorVarTemplate<gnn::GPU, gnn::CSR_SPARSE, float>::AsScalar()", referenced from: vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::CSR_SPARSE, float> in old_qnet.o vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::CSR_SPARSE, float> in qnet.o "gnn::TensorVarTemplate<gnn::GPU, gnn::CSR_SPARSE, float>::TensorVarTemplate(std::1::basic_string<char, std::__1::char_traits, std::1::allocator >)", referenced from: std::1::shared_ptr<gnn::TensorVarTemplate<gnn::GPU, gnn::CSR_SPARSE, float> > std::1::shared_ptr<gnn::TensorVarTemplate<gnn::GPU, gnn::CSR_SPARSE, float> >::make_shared<std::1::basic_string<char, std::__1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::__1::char_traits, std::1::allocator >&&&) in old_qnet.o std::1::shared_ptr<gnn::TensorVarTemplate<gnn::GPU, gnn::CSR_SPARSE, float> > std::1::shared_ptr<gnn::TensorVarTemplate<gnn::GPU, gnn::CSR_SPARSE, float> >::make_shared<std::1::basic_string<char, std::__1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::__1::char_traits, std::1::allocator >&&&) in qnet.o "gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float>::GetMatType()", referenced from: vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float> in old_qnet.o vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float> in qnet.o "gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float>::SetRef(void)", referenced from: vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float> in old_qnet.o vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float> in qnet.o "gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float>::AsScalar()", referenced from: vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float> in old_qnet.o vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float> in qnet.o "gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float>::OnesGrad()", referenced from: vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float> in old_qnet.o vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float> in qnet.o "gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float>::ZeroGrad()", referenced from: vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float> in old_qnet.o vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float> in qnet.o "gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float>::TensorVarTemplate(std::1::basic_string<char, std::__1::char_traits, std::1::allocator >)", referenced from: std::1::shared_ptr<gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float> > std::1::shared_ptr<gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float> >::make_shared<std::1::basic_string<char, std::1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::1::char_traits, std::__1::allocator >&&&) in old_qnet.o std::1::shared_ptr<gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float> > std::1::shared_ptr<gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float> >::make_shared<std::1::basic_string<char, std::1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::1::char_traits, std::1::allocator >&&&) in qnet.o (maybe you meant: ZN3gnn17TensorVarTemplateINS_3GPUENS_5DENSEEfEC1ENSt3112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEENS4_6vectorIiNS8_IiEEEE) "gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float>::TensorVarTemplate(std::1::basic_string<char, std::1::char_traits, std::1::allocator >, std::1::vector<unsigned long, std::1::allocator >)", referenced from: gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float>::TensorVarTemplate(std::1::basic_string<char, std::1::char_traits, std::1::allocator >, std::1::vector<int, std::1::allocator >) in old_qnet.o gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float>::TensorVarTemplate(std::__1::basic_string<char, std::1::char_traits, std::1::allocator >, std::1::vector<int, std::1::allocator >) in qnet.o "gnn::ReLU<gnn::GPU, float>::ReLU(std::1::basic_string<char, std::1::char_traits, std::1::allocator >, gnn::PropErr)", referenced from: std::1::shared_ptr<gnn::ReLU<gnn::GPU, float> > std::1::shared_ptr<gnn::ReLU<gnn::GPU, float> >::make_shared<std::1::basic_string<char, std::__1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::__1::char_traits, std::1::allocator >&&&) in old_qnet.o std::1::shared_ptr<gnn::ReLU<gnn::GPU, float> > std::1::shared_ptr<gnn::ReLU<gnn::GPU, float> >::make_shared<std::1::basic_string<char, std::1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::1::char_traits, std::1::allocator >&&&) in qnet.o "gnn::MatMul<gnn::GPU, float>::MatMul(std::1::basic_string<char, std::1::char_traits, std::1::allocator >, gnn::Trans, gnn::Trans, gnn::PropErr)", referenced from: std::1::shared_ptr<gnn::MatMul<gnn::GPU, float> > std::1::shared_ptr<gnn::MatMul<gnn::GPU, float> >::make_shared<std::1::basic_string<char, std::1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::1::char_traits, std::1::allocator >&&&) in old_qnet.o std::__1::shared_ptr<gnn::MatMul<gnn::GPU, float> > std::1::shared_ptr<gnn::MatMul<gnn::GPU, float> >::make_shared<std::1::basic_string<char, std::__1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::__1::char_traits, std::1::allocator >&&&) in qnet.o "gnn::IMsgPass<gnn::GPU, float>::Forward(std::1::vector<std::1::shared_ptr, std::1::allocator<std::1::shared_ptr > >&, std::1::vector<std::1::shared_ptr, std::1::allocator<std::1::shared_ptr > >&, gnn::Phase)", referenced from: vtable for gnn::Node2NodeMsgPass<gnn::GPU, float> in old_qnet.o vtable for gnn::Edge2NodeMsgPass<gnn::GPU, float> in old_qnet.o vtable for gnn::SubgraphMsgPass<gnn::GPU, float> in old_qnet.o vtable for gnn::Node2NodeMsgPass<gnn::GPU, float> in qnet.o vtable for gnn::Edge2NodeMsgPass<gnn::GPU, float> in qnet.o vtable for gnn::Node2EdgeMsgPass<gnn::GPU, float> in qnet.o vtable for gnn::SubgraphMsgPass<gnn::GPU, float> in qnet.o ... "gnn::IMsgPass<gnn::GPU, float>::IMsgPass(std::1::basic_string<char, std::__1::char_traits, std::1::allocator >, bool)", referenced from: std::1::shared_ptr<gnn::Node2NodeMsgPass<gnn::GPU, float> > std::1::shared_ptr<gnn::Node2NodeMsgPass<gnn::GPU, float> >::make_shared<std::1::basic_string<char, std::1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::1::char_traits, std::__1::allocator >&&&) in old_qnet.o std::1::shared_ptr<gnn::Edge2NodeMsgPass<gnn::GPU, float> > std::1::shared_ptr<gnn::Edge2NodeMsgPass<gnn::GPU, float> >::make_shared<std::1::basic_string<char, std::1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::1::char_traits, std::1::allocator >&&&) in old_qnet.o std::__1::shared_ptr<gnn::SubgraphMsgPass<gnn::GPU, float> > std::1::shared_ptr<gnn::SubgraphMsgPass<gnn::GPU, float> >::make_shared<std::1::basic_string<char, std::__1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::__1::char_traits, std::1::allocator >&&&) in old_qnet.o std::1::shared_ptr<gnn::Node2NodeMsgPass<gnn::GPU, float> > std::1::shared_ptr<gnn::Node2NodeMsgPass<gnn::GPU, float> >::make_shared<std::1::basic_string<char, std::1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::1::char_traits, std::1::allocator >&&&) in qnet.o std::1::shared_ptr<gnn::Edge2NodeMsgPass<gnn::GPU, float> > std::1::shared_ptr<gnn::Edge2NodeMsgPass<gnn::GPU, float> >::make_shared<std::1::basic_string<char, std::__1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::__1::char_traits, std::1::allocator >&&&) in qnet.o std::1::shared_ptr<gnn::Node2EdgeMsgPass<gnn::GPU, float> > std::1::shared_ptr<gnn::Node2EdgeMsgPass<gnn::GPU, float> >::make_shared<std::1::basic_string<char, std::1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::1::char_traits, std::1::allocator >&&&) in qnet.o std::1::shared_ptr<gnn::SubgraphMsgPass<gnn::GPU, float> > std::1::shared_ptr<gnn::SubgraphMsgPass<gnn::GPU, float> >::make_shared<std::1::basic_string<char, std::__1::char_traits, std::1::allocator >&>(std::1::basic_string<char, std::__1::char_traits, std::1::allocator >&&&) in qnet.o ... "gnn::ParamSet<gnn::GPU, float>::DeepCopyFrom(gnn::ParamSet<gnn::GPU, float>&)", referenced from: _UpdateSnapshot in tsp2d_lib-d997fd.o "gnn::ParamSet<gnn::GPU, float>::Load(std::1::basic_string<char, std::__1::char_traits, std::1::allocator >)", referenced from: _LoadModel in tsp2d_lib-d997fd.o "gnn::ParamSet<gnn::GPU, float>::Save(std::1::basic_string<char, std::__1::char_traits, std::1::allocator >)", referenced from: _SaveModel in tsp2d_lib-d997fd.o "gnn::ParamSet<gnn::GPU, float>::AddParam(std::1::shared_ptr<gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float> >)", referenced from: std::1::shared_ptr<gnn::DTensorVar<gnn::GPU, float> > gnn::add_diff<gnn::DTensorVar, gnn::GPU, float, int>(gnn::ParamSet<gnn::GPU, float>&, std::1::basic_string<char, std::1::char_traits, std::1::allocator >, std::initializer_list) in old_qnet.o std::1::shared_ptr<gnn::DTensorVar<gnn::GPU, float> > gnn::add_diff<gnn::DTensorVar, gnn::GPU, float, int>(gnn::ParamSet<gnn::GPU, float>&, std::1::basic_string<char, std::__1::char_traits, std::1::allocator >, std::initializer_list) in qnet.o "gnn::ParamSet<gnn::GPU, float>::ParamSet()", referenced from: INet::INet() in inet.o "gnn::GpuHandle::Init(int, unsigned int)", referenced from: _Init in tsp2d_lib-d997fd.o "vtable for gnn::TensorTemplate<gnn::GPU, gnn::DENSE, int>", referenced from: gnn::TensorTemplate<gnn::GPU, gnn::ROW_SPARSE, float>::~TensorTemplate() in old_qnet.o gnn::TensorTemplate<gnn::GPU, gnn::ROW_SPARSE, float>::~TensorTemplate() in qnet.o NOTE: a missing vtable usually means the first non-inline virtual member function has no definition. "non-virtual thunk to gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float>::OnesGrad()", referenced from: vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float> in old_qnet.o vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float> in qnet.o "non-virtual thunk to gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float>::ZeroGrad()", referenced from: vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float> in old_qnet.o vtable for gnn::TensorVarTemplate<gnn::GPU, gnn::DENSE, float> in qnet.o "_cudaFree", referenced from: void thrust::cuda_cub::free<thrust::cuda_cub::tag, thrust::device_ptr >(thrust::cuda_cub::execution_policy&, thrust::device_ptr) in old_qnet.o void thrust::cuda_cub::free<thrust::cuda_cub::tag, thrust::device_ptr >(thrust::cuda_cub::execution_policy&, thrust::device_ptr) in qnet.o void thrust::cuda_cub::free<thrust::cuda_cub::tag, thrust::device_ptr >(thrust::cuda_cub::execution_policy&, thrust::device_ptr) in inet.o "_cudaGetErrorString", referenced from: thrust::system::cuda_cub::detail::cuda_error_category::message(int) const in old_qnet.o thrust::system::cuda_cub::detail::cuda_error_category::message(int) const in qnet.o thrust::system::cuda_cub::detail::cuda_error_category::message(int) const in inet.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [build/dll/libtsp2d.so] Error 1

Hanjun-Dai commented 6 years ago

Did you build the GPU part of the code? It looks like you built for CPU only but tried to use GPU code.