packages feed

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 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