Каков правильный синтаксис написания файла параметров wmake для использования LibTorch в нашем коде?
Я работаю над решателями 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:: Ошибка:: Ошибка (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:: Ошибка:: Ошибка (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:: Error:: Ошибка (c10:: SourceLocation, станд:: __ cxx11:: basic_string, станд:: Распределитель> сопзЬ &)"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
torch::zeros(c10::ArrayRef, c10::TensorOptions const&)':
test_combustion.C:(.text._ZN5torch5zerosEN3c108ArrayRefIlEERKNS0_13TensorOptionsE[_ZN5torch5zerosEN3c108ER13Norex0E0_0E0_0E0_0E0_0E_NE_0E_N0) c10::Symbol::fromQualString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
test_combustion.C:(.text._ZN5torch5zerosEN3c108ArrayRefIlEERKNS0_13TensorOptionsE[_ZN5torch5zerosEN3c108ArrayRefIlEERKNS0_13TensorOptionsE]+0x1fa): undefined reference to
c10:: Ошибка:: Ошибка (c10::SourceLocation, std::__cxx11::basic_string, std::allocator > const&)'
test_combustion.C:(.text._ZN5torch5zerosEN3c108ArrayRefIlEERKNS0_13TensorOptionsE[_ZN5toref0_0R0E0R0_0E0R0_0E0_0R0_0R0_0R0_0_0R0_0_0R0_0_0_0R0) c10::Error::Error(c10::SourceLocation, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
test_combustion.C:(.text._ZN5torch5zerosEN3c108ArrayRefIlEERKNS0_13TensorOptionsE[_ZN5torch5zerosEN3c108ArrayRefIlEERKNS0_13TensorOptionsE]+0x7f8): undefined reference to
c10:: Ошибка:: Ошибка (c10::SourceLocation, std::__cxx11::basic_string, std::allocator > const&)'
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:: Ошибка:: Ошибка (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:: Ошибка:: Ошибка (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: cxx11 const 'test_combustion.C:(. text.ZN5torch3jit6script6Method16defaultSchemaForERKS2[ZN5torch3jit6script6Method16defaultSchemaForERKS2] + 0x6a6) c10::Error::Error(c10::SourceLocation, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
test_combustion.C:(.text._ZN5torch3jit6script6Method16defaultSchemaForERKS2_[_ZN5torch3jit6script6Method16defaultSchemaForERKS2_]+0x7a5): undefined reference to
c10:: Ошибка:: Ошибка (c10:: SourceLocation, std:: __cxx11:: basic_string, std:: allocator> const &) 'test_combustion.C:(. text.ZN5torch3jit6script6Method16defaultSchemaForERKS2[ZN5torch3jit6script6Fext0D6S6F6F6: факс: 0) 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
факел:: OrderedDict, станд:: Распределитель>, станд::unique_ptr > >:: оператор [](станд:: __ cxx11:: basic_string, станд:: Распределитель> 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::Error(c10::SourceLocation, std::__cxx11::basic_string, std::allocator > const&)' follow
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:: Ошибка (c10::SourceLocation, std::__cxx11::basic_string, std::allocator > const&)'
collect2: error: ld вернул 1 состояние выхода make: *** [/home/hiwi/Desktop/HIWI_Data/wmake_torch/test_combustion] Ошибка 1