artyom-beilis / pytorch_dlprim

DLPrimitives/OpenCL out of tree backend for pytorch
http://blog.dlprimitives.org/
MIT License
224 stars 16 forks source link

Prebuilt binaries for Windows #75

Open SA-j00u opened 2 months ago

SA-j00u commented 2 months ago

is there any prebuilt binaries for windows? i tried to build it with mingw but got MSVC related errors (in torch\share\cmake\Caffe2) after it i get another errors...

i tried torch-1.13.1+cpu and torch-2.0.1+cpu

artyom-beilis commented 2 months ago

What are the errors? I think you need to use MSVC.

SA-j00u commented 2 months ago

What are the errors? I think you need to use MSVC.

trying llvm-mingw get same errors 2024-05-03_165542_

2024-05-03_172107_

2024-05-03_172143_

with mingw 2024-05-03_173953_ 2024-05-03_174014_ 2024-05-03_174032_

SA-j00u commented 2 months ago

my changes per now

Python310\Lib\torch\share\cmake\Caffe2\Caffe2Targets.cmake:65

INTERFACE_COMPILE_OPTIONS "\$<\$<COMPILE_LANGUAGE:CXX>:;\$<\$<OR:\$<CONFIG:Debug>,\$<CONFIG:RelWithDebInfo>>:/Z7>;/EHsc;/DNOMINMAX;/wd4267;/wd4251;/wd4522;/wd4522;/wd4838;/wd4305;/wd4244;/wd4190;/wd4101;/wd4996;/wd4275;/bigobj>"
INTERFACE_COMPILE_OPTIONS "\$<\$<COMPILE_LANGUAGE:CXX>:;\$<\$<OR:\$<CONFIG:Debug>,\$<CONFIG:RelWithDebInfo>>:/Z7>>"

Python310\Lib\torch\include\c10\core\impl\LocalDispatchKeySet.h:70

extern C10_API thread_local PODLocalDispatchKeySet raw_local_dispatch_key_set;
extern C10_API PODLocalDispatchKeySet raw_local_dispatch_key_set;

Python310\Lib\torch\include\c10\core\DynamicCast.h:10

namespace c10 {
namespace c10 {
#define CUDA_KERNEL_ASSERT(cond)                                                                 \
  if (C10_UNLIKELY(!(cond))) {                                                                   \
    (void)(_wassert(_CRT_WIDE(#cond), _CRT_WIDE(__FILE__), static_cast<unsigned>(__LINE__)), 0); \
  }

but i get many linking errors on [100%] Linking CXX shared library libpt_ocl.dll

SA-j00u commented 2 months ago

also i delete all and force cmake flags to

-DCMAKE_CC_COMPILER="x86_64-w64-mingw32-gcc.exe"
-DCMAKE_CXX_COMPILER="x86_64-w64-mingw32-g++.exe"
-DCMAKE_C_FLAGS="-m64"
-DCMAKE_CXX_FLAGS="-m64"
-DCMAKE_EXE_LINKER_FLAGS="-m64"

bcz this compiler has 4 cpu targets

ld.lld: error: undefined symbol: unsigned short caffe2::TypeMeta::add
TypeMetaData<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1:
:allocator<char>>>()
>>> referenced by objects.a(pointwise_ops.cpp.obj):(unsigned short caffe2::TypeM
eta::_typeMetaData<std::__1::basic_string<char, std::__1::char_traits<char>, std
::__1::allocator<char>>>())
>>> referenced by objects.a(tensor_ops.cpp.obj)
>>> referenced by objects.a(vision_ops.cpp.obj)

ld.lld: error: undefined symbol: unsigned short caffe2::TypeMeta::add
TypeMetaData<unsigned short>()
>>> referenced by objects.a(pointwise_ops.cpp.obj):(unsigned short caffe2::TypeM
eta::_typeMetaData<unsigned short>())
>>> referenced by objects.a(tensor_ops.cpp.obj)
>>> referenced by objects.a(vision_ops.cpp.obj)

ld.lld: error: undefined symbol: unsigned short caffe2::TypeMeta::add
TypeMetaData<char>()
>>> referenced by objects.a(pointwise_ops.cpp.obj):(unsigned short caffe2::TypeM
eta::_typeMetaData<char>())
>>> referenced by objects.a(tensor_ops.cpp.obj)
>>> referenced by objects.a(vision_ops.cpp.obj)

ld.lld: error: undefined symbol: unsigned short caffe2::TypeMeta::add
TypeMetaData<std::__1::unique_ptr<std::__1::mutex, std::__1::default_delete<std:
:__1::mutex>>>()
>>> referenced by objects.a(pointwise_ops.cpp.obj):(unsigned short caffe2::TypeM
eta::_typeMetaData<std::__1::unique_ptr<std::__1::mutex, std::__1::default_delet
e<std::__1::mutex>>>())
>>> referenced by objects.a(tensor_ops.cpp.obj)
>>> referenced by objects.a(vision_ops.cpp.obj)

ld.lld: error: undefined symbol: unsigned short caffe2::TypeMeta::add
TypeMetaData<std::__1::unique_ptr<std::__1::atomic<bool>, std::__1::default_dele
te<std::__1::atomic<bool>>>>()
>>> referenced by objects.a(pointwise_ops.cpp.obj):(unsigned short caffe2::TypeM
eta::_typeMetaData<std::__1::unique_ptr<std::__1::atomic<bool>, std::__1::defaul
t_delete<std::__1::atomic<bool>>>>())
>>> referenced by objects.a(tensor_ops.cpp.obj)
>>> referenced by objects.a(vision_ops.cpp.obj)

ld.lld: error: undefined symbol: unsigned short caffe2::TypeMeta::add
TypeMetaData<std::__1::vector<int, std::__1::allocator<int>>>()
>>> referenced by objects.a(pointwise_ops.cpp.obj):(unsigned short caffe2::TypeM
eta::_typeMetaData<std::__1::vector<int, std::__1::allocator<int>>>())
>>> referenced by objects.a(tensor_ops.cpp.obj)
>>> referenced by objects.a(vision_ops.cpp.obj)

ld.lld: error: undefined symbol: unsigned short caffe2::TypeMeta::add
TypeMetaData<std::__1::vector<long long, std::__1::allocator<long long>>>()
>>> referenced by objects.a(pointwise_ops.cpp.obj):(unsigned short caffe2::TypeM
eta::_typeMetaData<std::__1::vector<long long, std::__1::allocator<long long>>>(
))
>>> referenced by objects.a(tensor_ops.cpp.obj)
>>> referenced by objects.a(vision_ops.cpp.obj)

ld.lld: error: undefined symbol: unsigned short caffe2::TypeMeta::add
TypeMetaData<std::__1::vector<unsigned long, std::__1::allocator<unsigned long>>
>()
>>> referenced by objects.a(pointwise_ops.cpp.obj):(unsigned short caffe2::TypeM
eta::_typeMetaData<std::__1::vector<unsigned long, std::__1::allocator<unsigned
long>>>())
>>> referenced by objects.a(tensor_ops.cpp.obj)
>>> referenced by objects.a(vision_ops.cpp.obj)

ld.lld: error: undefined symbol: unsigned short caffe2::TypeMeta::add
TypeMetaData<bool*>()
>>> referenced by objects.a(pointwise_ops.cpp.obj):(unsigned short caffe2::TypeM
eta::_typeMetaData<bool*>())
>>> referenced by objects.a(tensor_ops.cpp.obj)
>>> referenced by objects.a(vision_ops.cpp.obj)

ld.lld: error: undefined symbol: unsigned short caffe2::TypeMeta::add
TypeMetaData<char*>()
>>> referenced by objects.a(pointwise_ops.cpp.obj):(unsigned short caffe2::TypeM
eta::_typeMetaData<char*>())
>>> referenced by objects.a(tensor_ops.cpp.obj)
>>> referenced by objects.a(vision_ops.cpp.obj)

ld.lld: error: undefined symbol: unsigned short caffe2::TypeMeta::add
TypeMetaData<int*>()
>>> referenced by objects.a(pointwise_ops.cpp.obj):(unsigned short caffe2::TypeM
eta::_typeMetaData<int*>())
>>> referenced by objects.a(tensor_ops.cpp.obj)
>>> referenced by objects.a(vision_ops.cpp.obj)

ld.lld: error: undefined symbol: unsigned short caffe2::TypeMeta::add
TypeMetaData<long>()
>>> referenced by objects.a(pointwise_ops.cpp.obj):(unsigned short caffe2::TypeM
eta::_typeMetaData<long>())
>>> referenced by objects.a(tensor_ops.cpp.obj)
>>> referenced by objects.a(vision_ops.cpp.obj)

ld.lld: error: undefined symbol: unsigned short caffe2::TypeMeta::add
TypeMetaData<std::__1::vector<long, std::__1::allocator<long>>>()
>>> referenced by objects.a(pointwise_ops.cpp.obj):(unsigned short caffe2::TypeM
eta::_typeMetaData<std::__1::vector<long, std::__1::allocator<long>>>())
>>> referenced by objects.a(tensor_ops.cpp.obj)
>>> referenced by objects.a(vision_ops.cpp.obj)

ld.lld: error: undefined symbol: unsigned short caffe2::TypeMeta::add
TypeMetaData<float*>()
>>> referenced by objects.a(pointwise_ops.cpp.obj):(unsigned short caffe2::TypeM
eta::_typeMetaData<float*>())
>>> referenced by objects.a(tensor_ops.cpp.obj)
>>> referenced by objects.a(vision_ops.cpp.obj)

ld.lld: error: undefined symbol: unsigned short caffe2::TypeMeta::add
TypeMetaData<c10::Half*>()
>>> referenced by objects.a(pointwise_ops.cpp.obj):(unsigned short caffe2::TypeM
eta::_typeMetaData<c10::Half*>())
>>> referenced by objects.a(tensor_ops.cpp.obj)
>>> referenced by objects.a(vision_ops.cpp.obj)

ld.lld: error: undefined symbol: __declspec(dllimport) c10::detail::t
orchCheckFail(char const*, char const*, unsigned int, char const*)
>>> referenced by objects.a(pointwise_ops.cpp.obj):(ptdlprim::isCPUScalar(at::Te
nsor const&, double&))
>>> referenced by objects.a(pointwise_ops.cpp.obj):(ptdlprim::squeeze_dim(dlprim
::Shape, c10::OptionalArrayRef<long long>, bool))
>>> referenced by objects.a(pointwise_ops.cpp.obj):(ptdlprim::sum_mean_out(at::T
ensor const&, c10::OptionalArrayRef<long long>, bool, c10::optional<c10::ScalarT
ype>, at::Tensor&, bool))
>>> referenced 91 more times

ld.lld: error: undefined symbol: __declspec(dllimport) caffe2::TypeMe
ta::error_unsupported_typemeta(caffe2::TypeMeta)
>>> referenced by objects.a(pointwise_ops.cpp.obj):(caffe2::TypeMeta::toScalarTy
pe())
>>> referenced by objects.a(tensor_ops.cpp.obj)
>>> referenced by objects.a(vision_ops.cpp.obj)

ld.lld: error: undefined symbol: __declspec(dllimport) at::_ops::copy
_::call(at::Tensor&, at::Tensor const&, bool)
>>> referenced by objects.a(pointwise_ops.cpp.obj):(at::Tensor::copy_(at::Tensor
 const&, bool) const)
>>> referenced by objects.a(tensor_ops.cpp.obj)

ld.lld: error: undefined symbol: __declspec(dllimport) torch::Library
::Library(torch::Library::Kind, std::__1::basic_string<char, std::__1::char_trai
ts<char>, std::__1::allocator<char>>, c10::optional<c10::DispatchKey>, char cons
t*, unsigned int)
>>> referenced by objects.a(pointwise_ops.cpp.obj):(torch::detail::TorchLibraryI
nit::TorchLibraryInit(torch::Library::Kind, void (*)(torch::Library&), char cons
t*, c10::optional<c10::DispatchKey>, char const*, unsigned int))
>>> referenced by objects.a(tensor_ops.cpp.obj)
>>> referenced by objects.a(vision_ops.cpp.obj)

ld.lld: error: undefined symbol: __declspec(dllimport) c10::detail::t
orchInternalAssertFail(char const*, char const*, unsigned int, char const*, std:
:__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>
 const&)
>>> referenced by objects.a(pointwise_ops.cpp.obj):(c10::Device::validate())
>>> referenced by objects.a(pointwise_ops.cpp.obj):(c10::Device::validate())
>>> referenced by objects.a(pointwise_ops.cpp.obj):(c10::IValue::isIntrusivePtr(
) const)
>>> referenced 17 more times

also tried to put everywhere "-Wl,--subsystem,windows" and tried msvcrt version of compiler too 2024-05-03_212559_ with same results