libtorch-ffi 2.0.1.3 → 2.0.1.5
raw patch · 10 files changed
+565/−555 lines, 10 files
Files
- csrc/hasktorch_finalizer.cpp +374/−0
- csrc/hasktorch_finalizer.h +132/−0
- csrc/hasktorch_finializer.cpp +0/−374
- csrc/hasktorch_finializer.h +0/−132
- libtorch-ffi.cabal +3/−3
- src/Torch/Internal/Managed/Native/Native10.hs +7/−7
- src/Torch/Internal/Managed/Native/Native9.hs +8/−8
- src/Torch/Internal/Unmanaged/Native/Native10.hs +13/−13
- src/Torch/Internal/Unmanaged/Native/Native9.hs +15/−15
- src/Torch/Internal/Unmanaged/Type/Generator.hs +13/−3
+ csrc/hasktorch_finalizer.cpp view
@@ -0,0 +1,374 @@+#include "hasktorch_profile.h"+#include "hasktorch_finalizer.h"+#include <map>++void delete_tensor(at::Tensor* tensor){+ delete tensor;+}++void delete_tensorlist(std::vector<at::Tensor>* tensors){+ delete tensors;+}++void delete_tensorindex(at::indexing::TensorIndex* idx){+ delete idx;+}++void delete_tensorindexlist(std::vector<at::indexing::TensorIndex>* idxs){+ delete idxs;+}++void delete_c10dict(c10::Dict<at::IValue,at::IValue>* object){+ delete object;+}++void delete_c10listivalue(c10::List<at::IValue>* object){+ delete object;+}++void delete_c10listtensor(c10::List<at::Tensor>* object){+ delete object;+}++void delete_c10listoptionaltensor(c10::List<c10::optional<at::Tensor>>* object){+ delete object;+}++void delete_c10listdouble(c10::List<double>* object){+ delete object;+}++void delete_c10listint(c10::List<int64_t>* object){+ delete object;+}++void delete_c10listbool(c10::List<bool>* object){+ delete object;+}++void delete_stdvectordouble(std::vector<double>* object){+ delete object;+}++void delete_stdvectorint(std::vector<int64_t>* object){+ delete object;+}++void delete_stdvectorbool(std::vector<bool>* object){+ delete object;+}++void delete_c10tuple(c10::intrusive_ptr<at::ivalue::Tuple>* object){+ delete object;+}++void delete_context(at::Context* object){+ delete object;+}++void delete_dimname(at::Dimname* object){+ delete object;+}++void delete_dimnamelist(std::vector<at::Dimname>* object){+ delete object;+}++void delete_generator(at::Generator* object){+ delete object;+}++void delete_ivalue(at::IValue* object){+ delete object;+}++void delete_ivaluelist(std::vector<at::IValue>* object){+ delete object;+}++void delete_intarray(std::vector<int64_t>* object){+ delete object;+}++void delete_module(torch::jit::script::Module* object){+ delete object;+}++void delete_jitgraph(std::shared_ptr<torch::jit::Graph>* object){+ delete object;+}++void delete_jitnode(torch::jit::Node* object){+ delete object;+}++void delete_jitvalue(torch::jit::Value* object){+ delete object;+}++void delete_scalar(at::Scalar* object){+ delete object;+}++void delete_stdarraybool2(std::array<bool,2>* object){+ delete object;+}++void delete_stdarraybool3(std::array<bool,3>* object){+ delete object;+}++void delete_stdarraybool4(std::array<bool,4>* object){+ delete object;+}++void delete_stdstring(std::string* object){+ delete object;+}++void delete_storage(at::Storage* object){+ delete object;+}++void delete_symbol(at::Symbol* object){+ delete object;+}++void delete_tensoroptions(at::TensorOptions* object){+ delete object;+}++void delete_tensortensor(std::tuple<at::Tensor,at::Tensor>* object){+ delete object;+}++void delete_tensortensortensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor>* object){+ delete object;+}++void delete_tensortensortensortensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor>* object){+ delete object;+}++void delete_tensortensortensortensortensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor>* object){+ delete object;+}++void delete_tensortensortensortensorint64int64int64int64tensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,int64_t,int64_t,int64_t,int64_t,at::Tensor,at::Tensor>* object){+ delete object;+}++void delete_tensortensortensortensorlist(std::tuple<at::Tensor,at::Tensor,at::Tensor,std::vector<at::Tensor>>* object){+ delete object;+}++void delete_tensortensortensortensorint64(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,int64_t>* object){+ delete object;+}++void delete_tensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor>* object){+ delete object;+}++void delete_tensortensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor>* object){+ delete object;+}++void delete_tensortensorcdoubleint64(std::tuple<at::Tensor,at::Tensor,double,int64_t>* object){+ delete object;+}++void delete_tensortensorint64int64tensor(std::tuple<at::Tensor,at::Tensor,int64_t,int64_t,at::Tensor>* object){+ delete object;+}++void delete_tensortensorint64int64tensortensor(std::tuple<at::Tensor,at::Tensor,int64_t,int64_t,at::Tensor,at::Tensor>* object){+ delete object;+}++void delete_tensorlisttensor(std::tuple<std::vector<at::Tensor>,at::Tensor>* object){+ delete object;+}++void delete_tensortensorlist(std::tuple<at::Tensor,std::vector<at::Tensor>>* object){+ delete object;+}++void delete_tensortensorlisttensorlist(std::tuple<at::Tensor,std::vector<at::Tensor>,std::vector<at::Tensor>>* object){+ delete object;+}++void delete_tensorlisttensorlisttensorlisttensorlisttensorlist(std::tuple<std::vector<at::Tensor>,std::vector<at::Tensor>,std::vector<at::Tensor>,std::vector<at::Tensor>,std::vector<at::Tensor>>* object){+ delete object;+}++void delete_cdoubleint64(std::tuple<double,int64_t>* object){+ delete object;+}++void delete_cdoublecdouble(std::tuple<double,double>* object){+ delete object;+}++void delete_tensorgenerator(std::tuple<at::Tensor,at::Generator>* object){+ delete object;+}++void delete_optimizer(torch::optim::Optimizer* object){+ delete object;+}++void delete_stream(c10::Stream* object){+ delete object;+}++void delete_arrayrefscalar(at::ArrayRef<at::Scalar>* object){+ delete object;+}++void delete_vectorscalar(std::vector<at::Scalar>* object){+ delete object;+}++std::map<void*,int> objectAge;+std::map<void*,int> prevObjectAge;++void+shiftObjectMap(){+ prevObjectAge = objectAge;+ objectAge = std::map<void*,int>();+}++void+showObject(int flag, void* ptr, void* fptr){+ auto it = prevObjectAge.find(ptr);+ int age = 0;+ if (it != prevObjectAge.end()) {+ objectAge[ptr] = it->second + 1;+ age = it->second + 1;+ } else {+ objectAge[ptr] = 1;+ age = 1;+ }+ if(flag == 0)+ return;+ if(age < flag)+ return;+ if(fptr == (void*)delete_tensor){+ at::Tensor* t = (at::Tensor*) ptr;+ std::cout << age << ":" << "Tensor " << t->scalar_type() << " " << t->sizes() << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensorlist){+ std::cout << age << ":" << "[Tensor]" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensorindex){+ std::cout << age << ":" << "tensorindex" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensorindexlist){+ std::cout << age << ":" << "[tensorindex]" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_c10dict){+ std::cout << age << ":" << "c10dict" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_c10listivalue){+ std::cout << age << ":" << "c10listivalue" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_c10listtensor){+ std::cout << age << ":" << "c10listtensor" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_c10listoptionaltensor){+ std::cout << age << ":" << "c10listoptionaltensor" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_c10listdouble){+ std::cout << age << ":" << "c10listdouble" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_c10listint){+ std::cout << age << ":" << "c10listint" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_c10listbool){+ std::cout << age << ":" << "c10listbool" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_stdvectordouble){+ std::cout << age << ":" << "std::vector<double>" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_stdvectorint){+ std::cout << age << ":" << "std::vector<int>" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_stdvectorbool){+ std::cout << age << ":" << "std::vector<bool>" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_c10tuple){+ std::cout << age << ":" << "c10tuple" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_context){+ std::cout << age << ":" << "context" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_dimname){+ std::cout << age << ":" << "dimname" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_dimnamelist){+ std::cout << age << ":" << "[dimname]" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_generator){+ std::cout << age << ":" << "generator" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_ivalue){+ std::cout << age << ":" << "ivalue" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_ivaluelist){+ std::cout << age << ":" << "[ivalue]" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_intarray){+ std::cout << age << ":" << "intarray" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_module){+ std::cout << age << ":" << "module" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_jitgraph){+ std::cout << age << ":" << "jitgraph" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_jitnode){+ std::cout << age << ":" << "jitnode" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_jitvalue){+ std::cout << age << ":" << "jitvalue" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_scalar){+ std::cout << age << ":" << "scalar" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_stdarraybool2){+ std::cout << age << ":" << "std::array<bool,2>" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_stdarraybool3){+ std::cout << age << ":" << "std::array<bool,3>" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_stdarraybool4){+ std::cout << age << ":" << "std::array<bool,4>" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_stdstring){+ std::cout << age << ":" << "std::string" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_storage){+ std::cout << age << ":" << "storage" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_symbol){+ std::cout << age << ":" << "symbol" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensoroptions){+ std::cout << age << ":" << "tensoroptions" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensortensor){+ std::cout << age << ":" << "(tensor,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensortensortensortensortensor){+ std::cout << age << ":" << "(tensor,tensor,tensor,tensor,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensortensortensortensortensortensor){+ std::cout << age << ":" << "(tensor,tensor,tensor,tensor,tensor,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensortensortensortensortensortensortensor){+ std::cout << age << ":" << "(tensor,tensor,tensor,tensor,tensor,tensor,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensortensortensortensorint64int64int64int64tensor){+ std::cout << age << ":" << "(tensor,tensor,tensor,tensor,int,int,int,int,tensor,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensortensortensortensorlist){+ std::cout << age << ":" << "(tensor,tensor,tensor,[tensor])" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensortensortensortensorint64){+ std::cout << age << ":" << "(tensor,tensor,tensor,tensor,int)" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensortensortensor){+ std::cout << age << ":" << "(tensor,tensor,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensortensortensortensor){+ std::cout << age << ":" << "(tensor,tensor,tensor,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensortensorcdoubleint64){+ std::cout << age << ":" << "(tensor,tensor,double,int)" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensortensorint64int64tensor){+ std::cout << age << ":" << "(tensor,tensor,int,int,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensortensorint64int64tensortensor){+ std::cout << age << ":" << "(tensor,tensor,int,int,tensor,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensorlisttensor){+ std::cout << age << ":" << "(tensorlist,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensortensorlist){+ std::cout << age << ":" << "(tensor,tensorlist)" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensortensorlisttensorlist){+ std::cout << age << ":" << "(tensor,tensorlist,tensorlist)" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensorlisttensorlisttensorlisttensorlisttensorlist){+ std::cout << age << ":" << "(tensorlist,tensorlist,tensorlist,tensorlist,tensorlist)" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_cdoubleint64){+ std::cout << age << ":" << "(double,int)" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_cdoublecdouble){+ std::cout << age << ":" << "(double,double)" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_tensorgenerator){+ std::cout << age << ":" << "(tensor,generator)" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_optimizer){+ std::cout << age << ":" << "optimizer" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_stream){+ std::cout << age << ":" << "stream" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_arrayrefscalar){+ std::cout << age << ":" << "at::ArrayRef<at::Scalar>" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }else if(fptr == (void*)delete_vectorscalar){+ std::cout << age << ":" << "std::vector<at::Scalar>" << ":" << std::hex << (ptr) << std::dec << std::endl;+ }+}+
+ csrc/hasktorch_finalizer.h view
@@ -0,0 +1,132 @@+#include <ATen/Tensor.h>+#include <ATen/core/Dict.h>+#include <ATen/core/List.h>+#include <ATen/core/ivalue.h>+#include <ATen/core/Dimname.h>+#include <ATen/Storage.h>+#include <ATen/TensorIndexing.h>+#include <torch/csrc/jit/api/module.h>+#include <torch/optim.h>++#include <array>+#include <string>+#include <tuple>+#include <vector>++extern "C" {+ void delete_tensor(at::Tensor* tensor);++ void delete_tensorlist(std::vector<at::Tensor>* tensors);++ void delete_tensorindex(at::indexing::TensorIndex* idx);++ void delete_tensorindexlist(std::vector<at::indexing::TensorIndex>* idxs);++ void delete_c10dict(c10::Dict<at::IValue,at::IValue>* object);++ void delete_c10listivalue(c10::List<at::IValue>* object);++ void delete_c10listtensor(c10::List<at::Tensor>* object);++ void delete_c10listoptionaltensor(c10::List<c10::optional<at::Tensor>>* object);++ void delete_c10listdouble(c10::List<double>* object);++ void delete_c10listint(c10::List<int64_t>* object);++ void delete_c10listbool(c10::List<bool>* object);++ void delete_stdvectordouble(std::vector<double>* object);++ void delete_stdvectorint(std::vector<int64_t>* object);++ void delete_stdvectorbool(std::vector<bool>* object);++ void delete_c10tuple(c10::intrusive_ptr<at::ivalue::Tuple>* object);++ void delete_context(at::Context* object);++ void delete_dimname(at::Dimname* object);++ void delete_dimnamelist(std::vector<at::Dimname>* object);++ void delete_generator(at::Generator* object);++ void delete_ivalue(at::IValue* object);++ void delete_ivaluelist(std::vector<at::IValue>* object);++ void delete_intarray(std::vector<int64_t>* object);++ void delete_module(torch::jit::script::Module* object);++ void delete_jitgraph(std::shared_ptr<torch::jit::Graph>* object);++ void delete_jitnode(torch::jit::Node* object);++ void delete_jitvalue(torch::jit::Value* object);++ void delete_scalar(at::Scalar* object);++ void delete_stdarraybool2(std::array<bool,2>* object);++ void delete_stdarraybool3(std::array<bool,3>* object);++ void delete_stdarraybool4(std::array<bool,4>* object);++ void delete_stdstring(std::string* object);++ void delete_storage(at::Storage* object);++ void delete_symbol(at::Symbol* object);++ void delete_tensoroptions(at::TensorOptions* object);++ void delete_tensortensor(std::tuple<at::Tensor,at::Tensor>* ptr);++ void delete_tensortensortensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor>* ptr);++ void delete_tensortensortensortensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor>* ptr);++ void delete_tensortensortensortensortensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor>* ptr);++ void delete_tensortensortensortensorint64int64int64int64tensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,int64_t,int64_t,int64_t,int64_t,at::Tensor,at::Tensor>* ptr);++ void delete_tensortensortensortensorlist(std::tuple<at::Tensor,at::Tensor,at::Tensor,std::vector<at::Tensor>>* ptr);++ void delete_tensortensortensortensorint64(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,int64_t>* ptr);++ void delete_tensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor>* ptr);++ void delete_tensortensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor>* ptr);++ void delete_tensortensorcdoubleint64(std::tuple<at::Tensor,at::Tensor,double,int64_t>* ptr);++ void delete_tensortensorint64int64tensor(std::tuple<at::Tensor,at::Tensor,int64_t,int64_t,at::Tensor>* ptr);++ void delete_tensortensorint64int64tensortensor(std::tuple<at::Tensor,at::Tensor,int64_t,int64_t,at::Tensor,at::Tensor>* ptr);++ void delete_tensorlisttensor(std::tuple<std::vector<at::Tensor>,at::Tensor>* ptr);++ void delete_tensortensorlist(std::tuple<at::Tensor,std::vector<at::Tensor>>* ptr);++ void delete_tensortensorlisttensorlist(std::tuple<at::Tensor,std::vector<at::Tensor>,std::vector<at::Tensor>>* ptr);++ void delete_tensorlisttensorlisttensorlisttensorlisttensorlist(std::tuple<std::vector<at::Tensor>,std::vector<at::Tensor>,std::vector<at::Tensor>,std::vector<at::Tensor>,std::vector<at::Tensor>>* ptr);++ void delete_cdoubleint64(std::tuple<double,int64_t>* ptr);++ void delete_cdoublecdouble(std::tuple<double,double>* ptr);++ void delete_tensorgenerator(std::tuple<at::Tensor,at::Generator>* ptr);++ void delete_optimizer(torch::optim::Optimizer* ptr);++ void delete_stream(c10::Stream* ptr);++ void delete_arrayrefscalar(at::ArrayRef<at::Scalar>* ptr);++ void delete_vectorscalar(std::vector<at::Scalar>* ptr);++#include "hasktorch_dump.h"+};
− csrc/hasktorch_finializer.cpp
@@ -1,374 +0,0 @@-#include "hasktorch_profile.h"-#include "hasktorch_finializer.h"-#include <map>--void delete_tensor(at::Tensor* tensor){- delete tensor;-}--void delete_tensorlist(std::vector<at::Tensor>* tensors){- delete tensors;-}--void delete_tensorindex(at::indexing::TensorIndex* idx){- delete idx;-}--void delete_tensorindexlist(std::vector<at::indexing::TensorIndex>* idxs){- delete idxs;-}--void delete_c10dict(c10::Dict<at::IValue,at::IValue>* object){- delete object;-}--void delete_c10listivalue(c10::List<at::IValue>* object){- delete object;-}--void delete_c10listtensor(c10::List<at::Tensor>* object){- delete object;-}--void delete_c10listoptionaltensor(c10::List<c10::optional<at::Tensor>>* object){- delete object;-}--void delete_c10listdouble(c10::List<double>* object){- delete object;-}--void delete_c10listint(c10::List<int64_t>* object){- delete object;-}--void delete_c10listbool(c10::List<bool>* object){- delete object;-}--void delete_stdvectordouble(std::vector<double>* object){- delete object;-}--void delete_stdvectorint(std::vector<int64_t>* object){- delete object;-}--void delete_stdvectorbool(std::vector<bool>* object){- delete object;-}--void delete_c10tuple(c10::intrusive_ptr<at::ivalue::Tuple>* object){- delete object;-}--void delete_context(at::Context* object){- delete object;-}--void delete_dimname(at::Dimname* object){- delete object;-}--void delete_dimnamelist(std::vector<at::Dimname>* object){- delete object;-}--void delete_generator(at::Generator* object){- delete object;-}--void delete_ivalue(at::IValue* object){- delete object;-}--void delete_ivaluelist(std::vector<at::IValue>* object){- delete object;-}--void delete_intarray(std::vector<int64_t>* object){- delete object;-}--void delete_module(torch::jit::script::Module* object){- delete object;-}--void delete_jitgraph(std::shared_ptr<torch::jit::Graph>* object){- delete object;-}--void delete_jitnode(torch::jit::Node* object){- delete object;-}--void delete_jitvalue(torch::jit::Value* object){- delete object;-}--void delete_scalar(at::Scalar* object){- delete object;-}--void delete_stdarraybool2(std::array<bool,2>* object){- delete object;-}--void delete_stdarraybool3(std::array<bool,3>* object){- delete object;-}--void delete_stdarraybool4(std::array<bool,4>* object){- delete object;-}--void delete_stdstring(std::string* object){- delete object;-}--void delete_storage(at::Storage* object){- delete object;-}--void delete_symbol(at::Symbol* object){- delete object;-}--void delete_tensoroptions(at::TensorOptions* object){- delete object;-}--void delete_tensortensor(std::tuple<at::Tensor,at::Tensor>* object){- delete object;-}--void delete_tensortensortensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor>* object){- delete object;-}--void delete_tensortensortensortensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor>* object){- delete object;-}--void delete_tensortensortensortensortensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor>* object){- delete object;-}--void delete_tensortensortensortensorint64int64int64int64tensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,int64_t,int64_t,int64_t,int64_t,at::Tensor,at::Tensor>* object){- delete object;-}--void delete_tensortensortensortensorlist(std::tuple<at::Tensor,at::Tensor,at::Tensor,std::vector<at::Tensor>>* object){- delete object;-}--void delete_tensortensortensortensorint64(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,int64_t>* object){- delete object;-}--void delete_tensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor>* object){- delete object;-}--void delete_tensortensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor>* object){- delete object;-}--void delete_tensortensorcdoubleint64(std::tuple<at::Tensor,at::Tensor,double,int64_t>* object){- delete object;-}--void delete_tensortensorint64int64tensor(std::tuple<at::Tensor,at::Tensor,int64_t,int64_t,at::Tensor>* object){- delete object;-}--void delete_tensortensorint64int64tensortensor(std::tuple<at::Tensor,at::Tensor,int64_t,int64_t,at::Tensor,at::Tensor>* object){- delete object;-}--void delete_tensorlisttensor(std::tuple<std::vector<at::Tensor>,at::Tensor>* object){- delete object;-}--void delete_tensortensorlist(std::tuple<at::Tensor,std::vector<at::Tensor>>* object){- delete object;-}--void delete_tensortensorlisttensorlist(std::tuple<at::Tensor,std::vector<at::Tensor>,std::vector<at::Tensor>>* object){- delete object;-}--void delete_tensorlisttensorlisttensorlisttensorlisttensorlist(std::tuple<std::vector<at::Tensor>,std::vector<at::Tensor>,std::vector<at::Tensor>,std::vector<at::Tensor>,std::vector<at::Tensor>>* object){- delete object;-}--void delete_cdoubleint64(std::tuple<double,int64_t>* object){- delete object;-}--void delete_cdoublecdouble(std::tuple<double,double>* object){- delete object;-}--void delete_tensorgenerator(std::tuple<at::Tensor,at::Generator>* object){- delete object;-}--void delete_optimizer(torch::optim::Optimizer* object){- delete object;-}--void delete_stream(c10::Stream* object){- delete object;-}--void delete_arrayrefscalar(at::ArrayRef<at::Scalar>* object){- delete object;-}--void delete_vectorscalar(std::vector<at::Scalar>* object){- delete object;-}--std::map<void*,int> objectAge;-std::map<void*,int> prevObjectAge;--void-shiftObjectMap(){- prevObjectAge = objectAge;- objectAge = std::map<void*,int>();-}--void-showObject(int flag, void* ptr, void* fptr){- auto it = prevObjectAge.find(ptr);- int age = 0;- if (it != prevObjectAge.end()) {- objectAge[ptr] = it->second + 1;- age = it->second + 1;- } else {- objectAge[ptr] = 1;- age = 1;- }- if(flag == 0)- return;- if(age < flag)- return;- if(fptr == (void*)delete_tensor){- at::Tensor* t = (at::Tensor*) ptr;- std::cout << age << ":" << "Tensor " << t->scalar_type() << " " << t->sizes() << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensorlist){- std::cout << age << ":" << "[Tensor]" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensorindex){- std::cout << age << ":" << "tensorindex" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensorindexlist){- std::cout << age << ":" << "[tensorindex]" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_c10dict){- std::cout << age << ":" << "c10dict" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_c10listivalue){- std::cout << age << ":" << "c10listivalue" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_c10listtensor){- std::cout << age << ":" << "c10listtensor" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_c10listoptionaltensor){- std::cout << age << ":" << "c10listoptionaltensor" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_c10listdouble){- std::cout << age << ":" << "c10listdouble" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_c10listint){- std::cout << age << ":" << "c10listint" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_c10listbool){- std::cout << age << ":" << "c10listbool" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_stdvectordouble){- std::cout << age << ":" << "std::vector<double>" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_stdvectorint){- std::cout << age << ":" << "std::vector<int>" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_stdvectorbool){- std::cout << age << ":" << "std::vector<bool>" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_c10tuple){- std::cout << age << ":" << "c10tuple" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_context){- std::cout << age << ":" << "context" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_dimname){- std::cout << age << ":" << "dimname" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_dimnamelist){- std::cout << age << ":" << "[dimname]" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_generator){- std::cout << age << ":" << "generator" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_ivalue){- std::cout << age << ":" << "ivalue" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_ivaluelist){- std::cout << age << ":" << "[ivalue]" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_intarray){- std::cout << age << ":" << "intarray" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_module){- std::cout << age << ":" << "module" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_jitgraph){- std::cout << age << ":" << "jitgraph" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_jitnode){- std::cout << age << ":" << "jitnode" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_jitvalue){- std::cout << age << ":" << "jitvalue" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_scalar){- std::cout << age << ":" << "scalar" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_stdarraybool2){- std::cout << age << ":" << "std::array<bool,2>" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_stdarraybool3){- std::cout << age << ":" << "std::array<bool,3>" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_stdarraybool4){- std::cout << age << ":" << "std::array<bool,4>" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_stdstring){- std::cout << age << ":" << "std::string" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_storage){- std::cout << age << ":" << "storage" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_symbol){- std::cout << age << ":" << "symbol" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensoroptions){- std::cout << age << ":" << "tensoroptions" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensortensor){- std::cout << age << ":" << "(tensor,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensortensortensortensortensor){- std::cout << age << ":" << "(tensor,tensor,tensor,tensor,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensortensortensortensortensortensor){- std::cout << age << ":" << "(tensor,tensor,tensor,tensor,tensor,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensortensortensortensortensortensortensor){- std::cout << age << ":" << "(tensor,tensor,tensor,tensor,tensor,tensor,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensortensortensortensorint64int64int64int64tensor){- std::cout << age << ":" << "(tensor,tensor,tensor,tensor,int,int,int,int,tensor,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensortensortensortensorlist){- std::cout << age << ":" << "(tensor,tensor,tensor,[tensor])" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensortensortensortensorint64){- std::cout << age << ":" << "(tensor,tensor,tensor,tensor,int)" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensortensortensor){- std::cout << age << ":" << "(tensor,tensor,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensortensortensortensor){- std::cout << age << ":" << "(tensor,tensor,tensor,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensortensorcdoubleint64){- std::cout << age << ":" << "(tensor,tensor,double,int)" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensortensorint64int64tensor){- std::cout << age << ":" << "(tensor,tensor,int,int,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensortensorint64int64tensortensor){- std::cout << age << ":" << "(tensor,tensor,int,int,tensor,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensorlisttensor){- std::cout << age << ":" << "(tensorlist,tensor)" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensortensorlist){- std::cout << age << ":" << "(tensor,tensorlist)" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensortensorlisttensorlist){- std::cout << age << ":" << "(tensor,tensorlist,tensorlist)" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensorlisttensorlisttensorlisttensorlisttensorlist){- std::cout << age << ":" << "(tensorlist,tensorlist,tensorlist,tensorlist,tensorlist)" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_cdoubleint64){- std::cout << age << ":" << "(double,int)" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_cdoublecdouble){- std::cout << age << ":" << "(double,double)" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_tensorgenerator){- std::cout << age << ":" << "(tensor,generator)" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_optimizer){- std::cout << age << ":" << "optimizer" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_stream){- std::cout << age << ":" << "stream" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_arrayrefscalar){- std::cout << age << ":" << "at::ArrayRef<at::Scalar>" << ":" << std::hex << (ptr) << std::dec << std::endl;- }else if(fptr == (void*)delete_vectorscalar){- std::cout << age << ":" << "std::vector<at::Scalar>" << ":" << std::hex << (ptr) << std::dec << std::endl;- }-}-
− csrc/hasktorch_finializer.h
@@ -1,132 +0,0 @@-#include <ATen/Tensor.h>-#include <ATen/core/Dict.h>-#include <ATen/core/List.h>-#include <ATen/core/ivalue.h>-#include <ATen/core/Dimname.h>-#include <ATen/Storage.h>-#include <ATen/TensorIndexing.h>-#include <torch/csrc/jit/api/module.h>-#include <torch/optim.h>--#include <array>-#include <string>-#include <tuple>-#include <vector>--extern "C" {- void delete_tensor(at::Tensor* tensor);-- void delete_tensorlist(std::vector<at::Tensor>* tensors);-- void delete_tensorindex(at::indexing::TensorIndex* idx);-- void delete_tensorindexlist(std::vector<at::indexing::TensorIndex>* idxs);-- void delete_c10dict(c10::Dict<at::IValue,at::IValue>* object);-- void delete_c10listivalue(c10::List<at::IValue>* object);-- void delete_c10listtensor(c10::List<at::Tensor>* object);-- void delete_c10listoptionaltensor(c10::List<c10::optional<at::Tensor>>* object);-- void delete_c10listdouble(c10::List<double>* object);-- void delete_c10listint(c10::List<int64_t>* object);-- void delete_c10listbool(c10::List<bool>* object);-- void delete_stdvectordouble(std::vector<double>* object);-- void delete_stdvectorint(std::vector<int64_t>* object);-- void delete_stdvectorbool(std::vector<bool>* object);-- void delete_c10tuple(c10::intrusive_ptr<at::ivalue::Tuple>* object);-- void delete_context(at::Context* object);-- void delete_dimname(at::Dimname* object);-- void delete_dimnamelist(std::vector<at::Dimname>* object);-- void delete_generator(at::Generator* object);-- void delete_ivalue(at::IValue* object);-- void delete_ivaluelist(std::vector<at::IValue>* object);-- void delete_intarray(std::vector<int64_t>* object);-- void delete_module(torch::jit::script::Module* object);-- void delete_jitgraph(std::shared_ptr<torch::jit::Graph>* object);-- void delete_jitnode(torch::jit::Node* object);-- void delete_jitvalue(torch::jit::Value* object);-- void delete_scalar(at::Scalar* object);-- void delete_stdarraybool2(std::array<bool,2>* object);-- void delete_stdarraybool3(std::array<bool,3>* object);-- void delete_stdarraybool4(std::array<bool,4>* object);-- void delete_stdstring(std::string* object);-- void delete_storage(at::Storage* object);-- void delete_symbol(at::Symbol* object);-- void delete_tensoroptions(at::TensorOptions* object);-- void delete_tensortensor(std::tuple<at::Tensor,at::Tensor>* ptr);-- void delete_tensortensortensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor>* ptr);-- void delete_tensortensortensortensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor>* ptr);-- void delete_tensortensortensortensortensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor,at::Tensor>* ptr);-- void delete_tensortensortensortensorint64int64int64int64tensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,int64_t,int64_t,int64_t,int64_t,at::Tensor,at::Tensor>* ptr);-- void delete_tensortensortensortensorlist(std::tuple<at::Tensor,at::Tensor,at::Tensor,std::vector<at::Tensor>>* ptr);-- void delete_tensortensortensortensorint64(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor,int64_t>* ptr);-- void delete_tensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor>* ptr);-- void delete_tensortensortensortensor(std::tuple<at::Tensor,at::Tensor,at::Tensor,at::Tensor>* ptr);-- void delete_tensortensorcdoubleint64(std::tuple<at::Tensor,at::Tensor,double,int64_t>* ptr);-- void delete_tensortensorint64int64tensor(std::tuple<at::Tensor,at::Tensor,int64_t,int64_t,at::Tensor>* ptr);-- void delete_tensortensorint64int64tensortensor(std::tuple<at::Tensor,at::Tensor,int64_t,int64_t,at::Tensor,at::Tensor>* ptr);-- void delete_tensorlisttensor(std::tuple<std::vector<at::Tensor>,at::Tensor>* ptr);-- void delete_tensortensorlist(std::tuple<at::Tensor,std::vector<at::Tensor>>* ptr);-- void delete_tensortensorlisttensorlist(std::tuple<at::Tensor,std::vector<at::Tensor>,std::vector<at::Tensor>>* ptr);-- void delete_tensorlisttensorlisttensorlisttensorlisttensorlist(std::tuple<std::vector<at::Tensor>,std::vector<at::Tensor>,std::vector<at::Tensor>,std::vector<at::Tensor>,std::vector<at::Tensor>>* ptr);-- void delete_cdoubleint64(std::tuple<double,int64_t>* ptr);-- void delete_cdoublecdouble(std::tuple<double,double>* ptr);-- void delete_tensorgenerator(std::tuple<at::Tensor,at::Generator>* ptr);-- void delete_optimizer(torch::optim::Optimizer* ptr);-- void delete_stream(c10::Stream* ptr);-- void delete_arrayrefscalar(at::ArrayRef<at::Scalar>* ptr);-- void delete_vectorscalar(std::vector<at::Scalar>* ptr);--#include "hasktorch_dump.h"-};
libtorch-ffi.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: libtorch-ffi-version: 2.0.1.3+version: 2.0.1.5 -- The prefix(2.0) of this version("2.0.0.0") is the same as libtorch's one. synopsis: Haskell bindings for PyTorch description: This package provides Haskell bindings to libtorch, the C++ library underlying PyTorch, specifically designed for the Hasktorch ecosystem.@@ -180,9 +180,9 @@ ghc-options: -optcxx-std=c++17 default-extensions: Strict , StrictData- cxx-sources: csrc/hasktorch_finializer.cpp+ cxx-sources: csrc/hasktorch_finalizer.cpp c-sources: csrc/hasktorch_dump.c- install-includes: csrc/hasktorch_finializer.h+ install-includes: csrc/hasktorch_finalizer.h ,csrc/hasktorch_dump.h ,csrc/hasktorch_profile.h include-dirs: csrc
src/Torch/Internal/Managed/Native/Native10.hs view
@@ -426,13 +426,13 @@ -> IO (ForeignPtr Tensor) upsample_nearest2d_out_ttldd = _cast5 Unmanaged.upsample_nearest2d_out_ttldd -upsample_nearest2d_out_ttld- :: ForeignPtr Tensor- -> ForeignPtr Tensor- -> ForeignPtr IntArray- -> CDouble- -> IO (ForeignPtr Tensor)-upsample_nearest2d_out_ttld = _cast4 Unmanaged.upsample_nearest2d_out_ttld+-- upsample_nearest2d_out_ttld+-- :: ForeignPtr Tensor+-- -> ForeignPtr Tensor+-- -> ForeignPtr IntArray+-- -> CDouble+-- -> IO (ForeignPtr Tensor)+-- upsample_nearest2d_out_ttld = _cast4 Unmanaged.upsample_nearest2d_out_ttld upsample_nearest2d_out_ttl :: ForeignPtr Tensor
src/Torch/Internal/Managed/Native/Native9.hs view
@@ -2079,14 +2079,14 @@ -> IO (ForeignPtr Tensor) upsample_bilinear2d_out_ttlbdd = _cast6 Unmanaged.upsample_bilinear2d_out_ttlbdd -upsample_bilinear2d_out_ttlbd- :: ForeignPtr Tensor- -> ForeignPtr Tensor- -> ForeignPtr IntArray- -> CBool- -> CDouble- -> IO (ForeignPtr Tensor)-upsample_bilinear2d_out_ttlbd = _cast5 Unmanaged.upsample_bilinear2d_out_ttlbd+-- upsample_bilinear2d_out_ttlbd+-- :: ForeignPtr Tensor+-- -> ForeignPtr Tensor+-- -> ForeignPtr IntArray+-- -> CBool+-- -> CDouble+-- -> IO (ForeignPtr Tensor)+-- upsample_bilinear2d_out_ttlbd = _cast5 Unmanaged.upsample_bilinear2d_out_ttlbd upsample_bilinear2d_out_ttlb :: ForeignPtr Tensor
src/Torch/Internal/Unmanaged/Native/Native10.hs view
@@ -746,19 +746,19 @@ , $(double _scales_w))); }|] -upsample_nearest2d_out_ttld- :: Ptr Tensor- -> Ptr Tensor- -> Ptr IntArray- -> CDouble- -> IO (Ptr Tensor)-upsample_nearest2d_out_ttld _out _self _output_size _scales_h =- [C.throwBlock| at::Tensor* { return new at::Tensor(at::upsample_nearest2d_out(- *$(at::Tensor* _out)- , *$(at::Tensor* _self)- , *$(std::vector<int64_t>* _output_size)- , $(double _scales_h)));- }|]+-- upsample_nearest2d_out_ttld+-- :: Ptr Tensor+-- -> Ptr Tensor+-- -> Ptr IntArray+-- -> CDouble+-- -> IO (Ptr Tensor)+-- upsample_nearest2d_out_ttld _out _self _output_size _scales_h =+-- [C.throwBlock| at::Tensor* { return new at::Tensor(at::upsample_nearest2d_out(+-- *$(at::Tensor* _out)+-- , *$(at::Tensor* _self)+-- , *$(std::vector<int64_t>* _output_size)+-- , $(double _scales_h)));+-- }|] upsample_nearest2d_out_ttl :: Ptr Tensor
src/Torch/Internal/Unmanaged/Native/Native9.hs view
@@ -3622,21 +3622,21 @@ , $(double _scales_w))); }|] -upsample_bilinear2d_out_ttlbd- :: Ptr Tensor- -> Ptr Tensor- -> Ptr IntArray- -> CBool- -> CDouble- -> IO (Ptr Tensor)-upsample_bilinear2d_out_ttlbd _out _self _output_size _align_corners _scales_h =- [C.throwBlock| at::Tensor* { return new at::Tensor(at::upsample_bilinear2d_out(- *$(at::Tensor* _out)- , *$(at::Tensor* _self)- , *$(std::vector<int64_t>* _output_size)- , $(bool _align_corners)- , $(double _scales_h)));- }|]+-- upsample_bilinear2d_out_ttlbd+-- :: Ptr Tensor+-- -> Ptr Tensor+-- -> Ptr IntArray+-- -> CBool+-- -> CDouble+-- -> IO (Ptr Tensor)+-- upsample_bilinear2d_out_ttlbd _out _self _output_size _align_corners _scales_h =+-- [C.throwBlock| at::Tensor* { return new at::Tensor(at::upsample_bilinear2d_out(+-- *$(at::Tensor* _out)+-- , *$(at::Tensor* _self)+-- , *$(std::vector<int64_t>* _output_size)+-- , $(bool _align_corners)+-- , $(double _scales_h)));+-- }|] upsample_bilinear2d_out_ttlb :: Ptr Tensor
src/Torch/Internal/Unmanaged/Type/Generator.hs view
@@ -28,6 +28,7 @@ C.include "<ATen/detail/MPSHooksInterface.h>" C.include "<ATen/CPUGeneratorImpl.h>" C.include "<ATen/core/Generator.h>"+C.include "<torch/version.h>" C.include "<vector>" @@ -116,14 +117,23 @@ :: Word16 -> IO (Ptr Generator) getDefaultCUDAGenerator _device_index =- [C.throwBlock| at::Generator* { return new at::Generator(at::detail::getCUDAHooks().getDefaultCUDAGenerator(- $(uint16_t _device_index)));+ [C.throwBlock| at::Generator* {+#if TORCH_VERSION_MAJOR == 2 && TORCH_VERSION_MINOR < 7+return new at::Generator(at::detail::getCUDAHooks().getDefaultCUDAGenerator($(uint16_t _device_index)));+#else+return new at::Generator(at::detail::getCUDAHooks().getDefaultGenerator($(uint16_t _device_index)));+#endif }|] getDefaultMPSGenerator :: IO (Ptr Generator) getDefaultMPSGenerator =- [C.throwBlock| at::Generator* { return new at::Generator(at::detail::getMPSHooks().getDefaultMPSGenerator());+ [C.throwBlock| at::Generator* {+#if TORCH_VERSION_MAJOR == 2 && TORCH_VERSION_MINOR < 7+return new at::Generator(at::detail::getMPSHooks().getDefaultMPSGenerator());+#else+return new at::Generator(at::detail::getMPSHooks().getDefaultGenerator());+#endif }|] getDefaultCPUGenerator