Каков правильный синтаксис написания файла параметров wmake для использования LibTorch в нашем коде? - PullRequest
0 голосов
/ 22 мая 2019

Я работаю над решателями OpenFoam, и в настоящее время я работаю над моделью Pytorch, которая выполняет некоторые вычисления для меня (не важно).Теперь, после обучения модели в Pytorch, я пытаюсь интегрировать эту обученную модель в openfoam через C ++.Я следую тому же учебнику , который дан на их сайте.Проблема здесь в том, что вышеупомянутый учебник использует cmake для предоставления инструкций компилятора, но openfoam работает только с wmake , и я не могу понять правильный синтаксис для предоставления инструкций файла Make / options для компиляции моего кода с openfoam.

Я запустил учебник с cmake, и он работает просто отлично.Я также попытался найти файл журнала, который он генерирует после компиляции с помощью cmake, и попытаться явно связать пути ссылок каталогов и общих объектов в wmake, как это показано в cmake.Но, к моему ужасу, это просто не работает.В папке libtorch / lib есть два типа библиотек: один с расширением .so, а другой с расширением .a.Я попытался связать их обоих, как объяснено здесь , но это не работает.Я связываю файлы .a, создавая их символические ссылки в linux.

Ниже приведен мой файл Make / options.

EXE_INC = \
    -I$(TORCH_LIBERARIES)/libtorch/include \
    -I/home/hiwi/Downloads/libtorch/include/torch/csrc/api/include \
    -I/usr/local/cuda-10.0/include

EXE_LIBS = \
    -L$(cuda10_libs) \
    -lnvToolsExt \
    -lcudart \
    -lcufft \
    -lcurand \
    -lcublas \
    -L/usr/lib/x86_64-linux-gnu \
    -lcudnn \
    -L$(cuda_libs) \
    -lculibos \
    -L$(TORCH_LINKERS) \
    -lc10 \
    -lcaffe2 \
    -lcaffe2_module_test_dynamic \
    -lonnxifi \
    -ltorch \
    -lgomp-7bcb08ae \
    -lonnxifi_dummy \
    -lbenchmark \
    -lbenchmark_main \
    -lc10d \
    -lcaffe2_protos \
    -lclog \
    -lcpuinfo \
    -lcpuinfo_internals \
    -lgloo_builder \
    -lgloo \
    -lgtest \
    -lgtest_main \
    -lmkldnn \
    -lnnpack \
    -lonnxifi_loader \
    -lonnx_proto \
    -lonnx \
    -lprotobuf \
    -lprotobuf-lite \
    -lprotoc \
    -lpthreadpool \
    -lTHD \
    -ltorch_1

Я всегда получаю следующую ошибку: hiwi @ muhammad-arslan-ansari:~ / Desktop / HIWI_Data / wmake_torch $ Make / linux64GccDPInt32Opt / test_combustion.o: в функции c10::typeMetaToScalarType(caffe2::TypeMeta)': test_combustion.C:(.text+0x51a): undefined reference to c10 :: Ошибка :: Ошибка (c10 :: SourceLocation, std :: __cxx11 :: basic_string, std :: allocator> const &) 'Make / linux64GccDPInt32Opt / test_combustion.o: в функции torch::autograd::Variable::AutogradMeta::set_requires_grad(bool, c10::TensorImpl*)': test_combustion.C:(.text._ZN5torch8autograd8Variable12AutogradMeta17set_requires_gradEbPN3c1010TensorImplE[_ZN5torch8autograd8Variable12AutogradMeta17set_requires_gradEbPN3c1010TensorImplE]+0x101): undefined reference to c10 :: Error :: Error (c10 :: SourceLocation, std :: __cxx11 :: basic_string, std :: allocator> const &) 'Make / linux64GccDPInt32Opt / test_combustion.o:В функции at::legacyTensorType(c10::TensorImpl const&)': test_combustion.C:(.text._ZN2at16legacyTensorTypeERKN3c1010TensorImplE[_ZN2at16legacyTensorTypeERKN3c1010TensorImplE]+0x1ff): undefined reference to c10 :: Error :: Error (c10 :: SourceLocation, std :: __cxx11 :: basic_string, std :: allocator> const &) 'Make / linux64GccDPInt32Opt / test_combustion.o: в функции c10::dtype(c10::ScalarType)': test_combustion.C:(.text._ZN3c105dtypeENS_10ScalarTypeE[_ZN3c105dtypeENS_10ScalarTypeE]+0x1e9): undefined reference to c10 ::Ошибка :: Ошибка (c10 :: SourceLocation, std :: __cxx11 :: basic_string, std :: allocator> const &) 'Make / linux64GccDPInt32Opt / test_combustion.o: в функции c10::intrusive_ptr<c10::intrusive_ptr_target, c10::detail::intrusive_target_default_null_type<c10::intrusive_ptr_target> >::reclaim(c10::intrusive_ptr_target*)': test_combustion.C:(.text._ZN3c1013intrusive_ptrINS_20intrusive_ptr_targetENS_6detail34intrusive_target_default_null_typeIS1_EEE7reclaimEPS1_[_ZN3c1013intrusive_ptrINS_20intrusive_ptr_targetENS_6detail34intrusive_target_default_null_typeIS1_EEE7reclaimEPS1_]+0x120): undefined reference to c10 :: Ошибка :: Ошибка (c10 ::SourceLocation, std :: __cxx11 :: basic_string, std :: allocator> const &) 'Make/linux64GccDPInt32Opt/test_combustion.o:test_combustion.C:(.text._ZZN5torch3jit6script6Method12get_executorEvENKUlvE_clEv[_ZZN5torch3jit6script6Method12get_executorEvENKUlvE_clEv]+0x1f5): более неопределенные ссылки на c10::Error::Error(c10::SourceLocation, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' follow Make/linux64GccDPInt32Opt/test_combustion.o: In function факельные :: нулей (c10 :: ссылка на массив, С10 :: TensorOptions константных &) ': test_combustion.C..C :(. Text._ZN5torch5zerosEN3c108ArrayRefIlEERKNS0_13TensorOptionsE [_ZN5torch5zerosEN3c108ArrayRefIlEERKNS0_13TensorOptionsE] + 0x6d9): неопределенная ссылка на ошибку 1010;Make / linux64GccDPInt32Opt / test_combustion.o: в функции c10::raw::intrusive_ptr::incref(c10::intrusive_ptr_target*)': test_combustion.C:(.text._ZN3c103raw13intrusive_ptr6increfEPNS_20intrusive_ptr_targetE[_ZN3c103raw13intrusive_ptr6increfEPNS_20intrusive_ptr_targetE]+0x147): undefined reference to c10 :: Error :: Error (c10 :: SourceLocation, std :: __cxx11 :: basic_string, std :: allocator> const &) 'Make / linux64GccDPInt32Opt/test_combustion.o: в функции c10::unshapedType(std::shared_ptr<c10::Type> const&)': test_combustion.C:(.text._ZN3c1012unshapedTypeERKSt10shared_ptrINS_4TypeEE[_ZN3c1012unshapedTypeERKSt10shared_ptrINS_4TypeEE]+0x436): undefined reference to c10 :: Error :: Error (c10 :: SourceLocation, std :: __ cxx11 :: basic_string, std :: allocator> const &) 'Make / linux64GccDPInt32Opt / test_combustion.o: в функции torch::jit::script::Method::defaultSchemaFor(torch::jit::script::Method const&)': test_combustion.C:(.text._ZN5torch3jit6script6Method16defaultSchemaForERKS2_[_ZN5torch3jit6script6Method16defaultSchemaForERKS2_]+0x15b): undefined reference to torch :: jit :: Value :: uniqueNameBaseabi.c10 :: Ошибка :: Ошибка (c10 :: SourceLocation, std :: __cxx11 :: basic_string, std :: allocator> const &) 'test_combustion.C :(. text. ZN5torch3jit6script6Metod16defaultSchemaForERKS2 Shoff6S6S6S6S6S6S6S6S6F61033 *] + 0x8f9): неопределенная ссылка на c10::Error::Error(c10::SourceLocation, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' Make/linux64GccDPInt32Opt/test_combustion.o: In function torch :: OrderedDict, std :: allocator>, std :: unique_ptr>> :: operator [] (std :: __cxx11 :: basic_string, std :: allocator> const &) const ':. Test_combustion.C :( text._ZNK5torch11OrderedDictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10unique_ptrINS_3jit6script6MethodESt14default_deleteISA_EEEixERKS6 _ [_ ZNK5torch11OrderedDictINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10unique_ptrINS_3jit6script6MethodESt14default_deleteISA_EEEixERKS6 _] + 0x135): неопределенная ссылка на c10::Error::Error(c10::SourceLocation, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' Make/linux64GccDPInt32Opt/test_combustion.o: In function факелом :: JIT :: сценарий :: Метод :: checkInputsAgainstSchema (станд :: вектор> &) ': test_combustion.C :(.text._ZN5torch3jit6script6Method24checkInputsAgainstSchemaERSt6vectorIN3c106IValueESaIS5_EE [_ZN5torch3jit6script6Method24checkInputsAgainstSchemaERSt6vectorIN3c106IValueESaIS5_EE] + 0x37f): неопределенная ссылка на c10::Error::Error(c10::SourceLocation, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' Make/linux64GccDPInt32Opt/test_combustion.o:test_combustion.C:(.text._ZN5torch3jit6script6Method24checkInputsAgainstSchemaERSt6vectorIN3c106IValueESaIS5_EE[_ZN5torch3jit6script6Method24checkInputsAgainstSchemaERSt6vectorIN3c106IValueESaIS5_EE]+0x6dc): more undefined references to c10 :: Error :: Ошибка (c10 :: SourceLocation, станд :: __ cxx11 :: basic_string, станд :: распределителем> сопзЬ &)»следуют Make / linux64GccDPInt32Opt/test_combustion.o: В функции main': test_combustion.C:(.text.startup+0x66): undefined reference to torch :: jit :: load (std :: __ cxx11 :: basic_string, std :: allocator> const &, c10 :: необязательно) 'test_combustion.C :(. text.startup + 0xeed): неопределенная ссылка на `c10 :: Error :: Error (c10:: SourceLocation, std :: __cxx11 :: basic_string, std :: allocator> const &) 'collect2: error: ld вернул 1 состояние выхода make: *** [/ home / hiwi / Desktop / HIWI_Data / wmake_torch / test_combustion] Ошибка 1

...