Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adapt to Clang 16 internal changes #71

Draft
wants to merge 6 commits into
base: mg/poplar-3.3
Choose a base branch
from

Conversation

Gnimuc
Copy link
Contributor

@Gnimuc Gnimuc commented Aug 18, 2024

  • fix gen_inherit.cpp
  • fix gen_inline.cpp

@Gnimuc
Copy link
Contributor Author

Gnimuc commented Aug 18, 2024

I hit more compilation errors when using the graphcore/poplar:3.3.0-ubuntu-20.04-20230703 docker image with Julia v1.11. I'm surprised the CI got passed here.

buildlog.txt

@Gnimuc
Copy link
Contributor Author

Gnimuc commented Aug 18, 2024

oh CI hasn't been upgraded to 1.11

@giordano
Copy link
Collaborator

Yes, I was trying that in #45.

@giordano
Copy link
Collaborator

Maybe you want to target that branch?

@giordano giordano changed the base branch from main to mg/poplar-3.3 August 20, 2024 12:41
@Gnimuc
Copy link
Contributor Author

Gnimuc commented Aug 20, 2024

@giordano,

I made a debugging setup in this PR to generate wrappers locally without using a docker environment:

  1. switch Clang to this PR: Add compiler version selection support in get_default_args JuliaInterop/Clang.jl#506

  2. download SDK v3.2 by running curl --location --request GET 'https://downloads.graphcore.ai/direct?package=poplar-poplar_sdk_ubuntu_20_04_2.6.0_33d3efd05d-2.6.0&file=poplar_sdk-ubuntu_20_04-2.6.0-33d3efd05d.tar.gz' --output 'poplar_sdk-ubuntu_20_04-2.6.0-33d3efd05d.tar.gz'

  3. download SDK v3.3 by running curl --location --request GET 'https://downloads.graphcore.ai/direct?package=poplar-poplar_sdk_ubuntu_20_04_3.3.0_208993bbb7-3.3.0&file=poplar_sdk-ubuntu_20_04-3.3.0-208993bbb7.tar.gz' --output 'poplar_sdk-ubuntu_20_04-3.3.0-208993bbb7.tar.gz'

  4. unzip and copy the include folders from poplar-ubuntu_20_04* to the 3.2/3.3 below respectively:

image

  1. cd to the dir and run julia generate_wrapper.jl

I got the following results on my machine:

  • 85bfcfb was generated with SDK v3.2 + Julia 1.10
  • 88771b6 was generated with SDK v3.2 + Julia 1.11
  • 0270e58 was generated with SDK v3.3 + Julia 1.11

comparing ② with ①, some nested name specifiers are dropped due to the internal changes introduced in Clang 16. (I'm currently looking for a way to fix this.)

comparing ③ with ②, they are new types and methods introduced in v3.3, which may cause more compilation errors because some kinds of types are not supported and should be excluded manually like what it did here:

child_id = replace(child_id, "poplar::StringRef" => "std::string")
# prevents duplicate codegen(+error), TODO: check if still necessary
child_id == "poplar::FieldData::SizeT::size()__CXXMethod" && (valid = false; reason = "filedata_size_blacklist")
# Popops expressions are causing all kinds of problems
contains(child_id, "expr::") && (valid = false; reason = "expr_blacklisted")
contains(child_id, "popops::expr") && (valid = false; reason = "expr_blacklisted")
# TODO: Find and document reason
contains(child_id, "equivalent_device_type") && (valid = false; reason = "equivalent_device_type_blacklist")
# workaround (returning vector of Device causes issues)
contains(child_id, "getDevices") && (valid = false; reason = "getdevices_blacklist")
# Skip everything related to poplar::core (like Target.getTargetOptions)
contains(child_id, "core::") && (valid = false; reason = "core_blacklisted")
contains(child_id, "getTargetOptions") && (valid = false; reason = "core_blacklisted")
# These cause error
# error: static assertion failed: Mirrored types (marked with IsMirroredType) can't be added using add_type, map them directly to a struct instead and use map_type or explicitly disable mirroring for this type, e.g. define template<> struct IsMirroredType<Foo> : std::false_type { };
contains(child_id, "poplar::VertexPerfEstimate::VertexPerfEstimate") && (valid = false; reason = "mirrored_type")
contains(child_id, "poplar::ErrorLocationHash__StructDecl") && (valid = false; reason = "mirrored_type")
# This conversion `ArrayRef<std::string>` to `ArrayRef<poplar::StringRef>` isn't handled correctly
contains(child_id, "poplar::Graph::trace(ArrayRef<std::string>") && (valid = false; reason = "arrayrefstring_blacklisted")
# `DebugContext` constructors which cause ambiguous overload calls
contains(child_id, r"^poplar::DebugContext::DebugContext.*__CXXConstructor$") && (valid = false; reason = "debugcontext_blacklisted")
# This causes the error
# no matching function for call to ‘poplar::program::Sequence::add_many(std::__cxx11::basic_string<char>&)’
contains(child_id, r"poplar::program::Sequence::Sequence.*__CXXConstructor$") && (valid = false; reason = "programsequence_blacklisted")
# Avoid duplicate definition during precompilation of the CxxWrap module
contains(child_id, "poplar::layout::to_string(const poplar::layout::VectorList)__FunctionDecl") && (valid = false; reason = "duplicate_definition")
# Avoid duplicate definition during precompilation of the CxxWrap module.
# Ref: <https://github.com/JuliaIPU/IPUToolkit.jl/issues/12>.
contains(child_id, "poplar::toString") && (valid = false; reason = "duplicate_definition")
# error: invalid use of incomplete type ‘class pva::Report’
contains(child_id, "poplar::Engine::getReport") && (valid = false; reason = "incomplete_type")
# error: invalid application of ‘sizeof’ to incomplete type ‘poplar::core::VertexIntrospector’
contains(child_id, "poplar::VertexIntrospector") && (valid = false; reason = "incomplete_type")
# error: invalid use of incomplete type ‘class poplar::Preallocations’
contains(child_id, "poplar::Preallocations") && (valid = false; reason = "incomplete_type")
# error: no matching function for call to ‘poplar::GlobalExchangeConstraint::GlobalExchangeConstraint()’
contains(child_id, "poplar::Target::getGlobalExchangeConstraints()__CXXMethod") && (valid = false; reason = "getGlobalExchangeConstraints_blacklisted")
# These methods are handled incorrectly by this script and generate lines with
# invalid syntax. They don't seem to be super important, so let's just skip them
# for the time being.
contains(child_id, "poplar::Module::forEachLoadableSegment") && (valid = false; reason = "forEachLoadableSegment_blacklisted")
contains(child_id, "poplar::Module::forEachSegment") && (valid = false; reason = "forEachSegment_blacklisted")
# error: no match for call to ‘(poplar::Engine::copyToRemoteBuffer<unsigned int>::<lambda(unsigned int*)>) (gccs::ArrayRef<const unsigned int>::const_iterator)’
contains(child_id, "poplar::Engine::copyToRemoteBuffer(ArrayRef<T>, std::string, uint64_t, unsigned int)__FunctionTemplate") && (valid = false; reason = "copyToRemoteBuffer_blacklisted")
# IPUAttributes appears only in one method of Device.getAttribute, but it isn't
# documented and it looks troublesome to support in a backward-compatible way, let's
# just skip it.
contains(child_id, "IPUAttributes") && (valid = false; reason = "IPUAttributes_blacklisted")
# Sadly we aren't going to support quarter precision floating-point numbers anytime soon, so let's just skip this.
contains(child_id, "QuarterMetadata") && (valid = false; reason = "QuarterMetadata_blacklisted")

@Gnimuc
Copy link
Contributor Author

Gnimuc commented Aug 20, 2024

comparing ③ with ②, they are new types and methods introduced in v3.3, which may cause more compilation errors because some kinds of types are not supported and should be excluded manually like what it did here:

for someone who wanna debug this part, the errors below are produced after fixing (probably not all of) the NNS issues with ugly hacks 4eb3b9a

In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp: In function ‘void define_julia_module(jlcxx::Module&)’:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:322:41: error: ISO C++ forbids declaration of ‘type name’ with no type [-fpermissive]
  322 | JLOptionFlagsiterator.constructor<const iterator &>();
      |                                         ^~~~~~~~
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:322:23: error: parse error in template argument list
  322 | JLOptionFlagsiterator.constructor<const iterator &>();
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:322:53: error: no matching function for call to ‘jlcxx::TypeWrapper<poplar::OptionFlags::iterator>::constructor<<expression error> >()’
  322 | JLOptionFlagsiterator.constructor<const iterator &>();
      |                                                     ^
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note: candidate: ‘template<class ... ArgsT, class ... Extra> jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {ArgsT ...}; Extra = {Extra ...}; T = poplar::OptionFlags::iterator]’
 1096 |   TypeWrapper<T>& constructor(Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:322:53: error: template argument 1 is invalid
  322 | JLOptionFlagsiterator.constructor<const iterator &>();
      |                                                     ^
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note: candidate: ‘template<class LambdaT, class ... Extra, typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> > jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(LambdaT&&, Extra ...) [with LambdaT = LambdaT; Extra = {Extra ...}; typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> = <enumerator>; T = poplar::OptionFlags::iterator]’
 1109 |   TypeWrapper<T>& constructor(LambdaT&& lambda, Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:322:53: error: template argument 1 is invalid
  322 | JLOptionFlagsiterator.constructor<const iterator &>();
      |                                                     ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp: In lambda function:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:670:119: error: no matching function for call to ‘poplar::Target::getTypeLimitsMaxAs(const poplar::Type&)’
  670 | JLTarget.method("TargetGetTypeLimitsMaxAs<>", [](poplar::Target& cl, const Type & a) {return cl.getTypeLimitsMaxAs<>(a);});
      |                                                                                                                       ^
In file included from /opt/poplar/include/poplar/Device.hpp:7,
                 from /opt/poplar/include/poplar/Graph.hpp:9,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/Target.hpp:259:27: note: candidate: ‘template<class T> T poplar::Target::getTypeLimitsMaxAs(const poplar::Type&) const’ <deleted>
  259 |   template <typename T> T getTypeLimitsMaxAs(const Type &) const = delete;
      |                           ^~~~~~~~~~~~~~~~~~
/opt/poplar/include/poplar/Target.hpp:259:27: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:670:119: note:   couldn’t deduce template parameter ‘T’
  670 | JLTarget.method("TargetGetTypeLimitsMaxAs<>", [](poplar::Target& cl, const Type & a) {return cl.getTypeLimitsMaxAs<>(a);});
      |                                                                                                                       ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp: In lambda function:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:674:125: error: no matching function for call to ‘poplar::Target::getTypeLimitsLowestAs(const poplar::Type&)’
  674 | JLTarget.method("TargetGetTypeLimitsLowestAs<>", [](poplar::Target& cl, const Type & a) {return cl.getTypeLimitsLowestAs<>(a);});
      |                                                                                                                             ^
In file included from /opt/poplar/include/poplar/Device.hpp:7,
                 from /opt/poplar/include/poplar/Graph.hpp:9,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/Target.hpp:270:27: note: candidate: ‘template<class T> T poplar::Target::getTypeLimitsLowestAs(const poplar::Type&) const’ <deleted>
  270 |   template <typename T> T getTypeLimitsLowestAs(const Type &) const = delete;
      |                           ^~~~~~~~~~~~~~~~~~~~~
/opt/poplar/include/poplar/Target.hpp:270:27: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:674:125: note:   couldn’t deduce template parameter ‘T’
  674 | JLTarget.method("TargetGetTypeLimitsLowestAs<>", [](poplar::Target& cl, const Type & a) {return cl.getTypeLimitsLowestAs<>(a);});
      |                                                                                                                             ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp: In lambda function:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:722:88: warning: ‘std::map<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > poplar::Device::getAttributes() const’ is deprecated [-Wdeprecated-declarations]
  722 | JLDevice.method("DeviceGetAttributes", [](poplar::Device& cl) {return cl.getAttributes();});
      |                                                                                        ^
In file included from /opt/poplar/include/poplar/Graph.hpp:9,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/Device.hpp:72:52: note: declared here
   72 |   GC_DEPRECATED std::map<std::string, std::string> getAttributes() const;
      |                                                    ^~~~~~~~~~~~~
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp: In function ‘void define_julia_module(jlcxx::Module&)’:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:960:28: error: ‘String’ was not declared in this scope
  960 | JLProfileValue.constructor<String>();
      |                            ^~~~~~
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:960:36: error: no matching function for call to ‘jlcxx::TypeWrapper<poplar::ProfileValue>::constructor<<expression error> >()’
  960 | JLProfileValue.constructor<String>();
      |                                    ^
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note: candidate: ‘template<class ... ArgsT, class ... Extra> jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {ArgsT ...}; Extra = {Extra ...}; T = poplar::ProfileValue]’
 1096 |   TypeWrapper<T>& constructor(Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:960:36: error: template argument 1 is invalid
  960 | JLProfileValue.constructor<String>();
      |                                    ^
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note: candidate: ‘template<class LambdaT, class ... Extra, typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> > jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(LambdaT&&, Extra ...) [with LambdaT = LambdaT; Extra = {Extra ...}; typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> = <enumerator>; T = poplar::ProfileValue]’
 1109 |   TypeWrapper<T>& constructor(LambdaT&& lambda, Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:960:36: error: template argument 1 is invalid
  960 | JLProfileValue.constructor<String>();
      |                                    ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:964:28: error: ‘Vector’ was not declared in this scope; did you mean ‘poplar::layout::Vector’?
  964 | JLProfileValue.constructor<Vector>();
      |                            ^~~~~~
      |                            poplar::layout::Vector
In file included from /opt/poplar/include/poplar/VertexIntrospector.hpp:9,
                 from /opt/poplar/include/poplar/Graph.hpp:28,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/VectorLayout.hpp:15:12: note: ‘poplar::layout::Vector’ declared here
   15 | enum class Vector {
      |            ^~~~~~
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:964:36: error: no matching function for call to ‘jlcxx::TypeWrapper<poplar::ProfileValue>::constructor<<expression error> >()’
  964 | JLProfileValue.constructor<Vector>();
      |                                    ^
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note: candidate: ‘template<class ... ArgsT, class ... Extra> jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {ArgsT ...}; Extra = {Extra ...}; T = poplar::ProfileValue]’
 1096 |   TypeWrapper<T>& constructor(Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:964:36: error: template argument 1 is invalid
  964 | JLProfileValue.constructor<Vector>();
      |                                    ^
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note: candidate: ‘template<class LambdaT, class ... Extra, typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> > jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(LambdaT&&, Extra ...) [with LambdaT = LambdaT; Extra = {Extra ...}; typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> = <enumerator>; T = poplar::ProfileValue]’
 1109 |   TypeWrapper<T>& constructor(LambdaT&& lambda, Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:964:36: error: template argument 1 is invalid
  964 | JLProfileValue.constructor<Vector>();
      |                                    ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:968:28: error: ‘Map’ was not declared in this scope
  968 | JLProfileValue.constructor<Map>();
      |                            ^~~
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:968:33: error: no matching function for call to ‘jlcxx::TypeWrapper<poplar::ProfileValue>::constructor<<expression error> >()’
  968 | JLProfileValue.constructor<Map>();
      |                                 ^
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note: candidate: ‘template<class ... ArgsT, class ... Extra> jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {ArgsT ...}; Extra = {Extra ...}; T = poplar::ProfileValue]’
 1096 |   TypeWrapper<T>& constructor(Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:968:33: error: template argument 1 is invalid
  968 | JLProfileValue.constructor<Map>();
      |                                 ^
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note: candidate: ‘template<class LambdaT, class ... Extra, typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> > jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(LambdaT&&, Extra ...) [with LambdaT = LambdaT; Extra = {Extra ...}; typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> = <enumerator>; T = poplar::ProfileValue]’
 1109 |   TypeWrapper<T>& constructor(LambdaT&& lambda, Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:968:33: error: template argument 1 is invalid
  968 | JLProfileValue.constructor<Map>();
      |                                 ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:972:28: error: ‘Number’ was not declared in this scope
  972 | JLProfileValue.constructor<Number>();
      |                            ^~~~~~
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:972:36: error: no matching function for call to ‘jlcxx::TypeWrapper<poplar::ProfileValue>::constructor<<expression error> >()’
  972 | JLProfileValue.constructor<Number>();
      |                                    ^
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note: candidate: ‘template<class ... ArgsT, class ... Extra> jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {ArgsT ...}; Extra = {Extra ...}; T = poplar::ProfileValue]’
 1096 |   TypeWrapper<T>& constructor(Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:972:36: error: template argument 1 is invalid
  972 | JLProfileValue.constructor<Number>();
      |                                    ^
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note: candidate: ‘template<class LambdaT, class ... Extra, typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> > jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(LambdaT&&, Extra ...) [with LambdaT = LambdaT; Extra = {Extra ...}; typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> = <enumerator>; T = poplar::ProfileValue]’
 1109 |   TypeWrapper<T>& constructor(LambdaT&& lambda, Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:972:36: error: template argument 1 is invalid
  972 | JLProfileValue.constructor<Number>();
      |                                    ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:976:28: error: ‘Boolean’ was not declared in this scope
  976 | JLProfileValue.constructor<Boolean>();
      |                            ^~~~~~~
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:976:37: error: no matching function for call to ‘jlcxx::TypeWrapper<poplar::ProfileValue>::constructor<<expression error> >()’
  976 | JLProfileValue.constructor<Boolean>();
      |                                     ^
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note: candidate: ‘template<class ... ArgsT, class ... Extra> jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {ArgsT ...}; Extra = {Extra ...}; T = poplar::ProfileValue]’
 1096 |   TypeWrapper<T>& constructor(Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:976:37: error: template argument 1 is invalid
  976 | JLProfileValue.constructor<Boolean>();
      |                                     ^
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note: candidate: ‘template<class LambdaT, class ... Extra, typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> > jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(LambdaT&&, Extra ...) [with LambdaT = LambdaT; Extra = {Extra ...}; typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> = <enumerator>; T = poplar::ProfileValue]’
 1109 |   TypeWrapper<T>& constructor(LambdaT&& lambda, Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:976:37: error: template argument 1 is invalid
  976 | JLProfileValue.constructor<Boolean>();
      |                                     ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1504:86: error: ‘FloatFormat’ was not declared in this scope
 1504 | JLPrintTensorFmt.constructor<unsigned int, unsigned int, unsigned int, unsigned int, FloatFormat>();
      |                                                                                      ^~~~~~~~~~~
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1504:99: error: no matching function for call to ‘jlcxx::TypeWrapper<poplar::PrintTensorFmt>::constructor<unsigned int, unsigned int, unsigned int, unsigned int, <expression error> >()’
 1504 | JLPrintTensorFmt.constructor<unsigned int, unsigned int, unsigned int, unsigned int, FloatFormat>();
      |                                                                                                   ^
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note: candidate: ‘template<class ... ArgsT, class ... Extra> jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {ArgsT ...}; Extra = {Extra ...}; T = poplar::PrintTensorFmt]’
 1096 |   TypeWrapper<T>& constructor(Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1504:99: error: template argument 5 is invalid
 1504 | JLPrintTensorFmt.constructor<unsigned int, unsigned int, unsigned int, unsigned int, FloatFormat>();
      |                                                                                                   ^
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note: candidate: ‘template<class LambdaT, class ... Extra, typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> > jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(LambdaT&&, Extra ...) [with LambdaT = LambdaT; Extra = {Extra ...}; typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> = <enumerator>; T = poplar::PrintTensorFmt]’
 1109 |   TypeWrapper<T>& constructor(LambdaT&& lambda, Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1504:99: error: template argument 5 is invalid
 1504 | JLPrintTensorFmt.constructor<unsigned int, unsigned int, unsigned int, unsigned int, FloatFormat>();
      |                                                                                                   ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1505:105: error: no matching function for call to ‘jlcxx::TypeWrapper<poplar::PrintTensorFmt>::constructor<unsigned int, unsigned int, unsigned int, unsigned int, FloatFormat, char>()’
 1505 | JLPrintTensorFmt.constructor<unsigned int, unsigned int, unsigned int, unsigned int, FloatFormat, char>();
      |                                                                                                         ^
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note: candidate: ‘template<class ... ArgsT, class ... Extra> jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {ArgsT ...}; Extra = {Extra ...}; T = poplar::PrintTensorFmt]’
 1096 |   TypeWrapper<T>& constructor(Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note:   template argument deduction/substitution failed:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note: candidate: ‘template<class LambdaT, class ... Extra, typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> > jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(LambdaT&&, Extra ...) [with LambdaT = LambdaT; Extra = {Extra ...}; typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> = <enumerator>; T = poplar::PrintTensorFmt]’
 1109 |   TypeWrapper<T>& constructor(LambdaT&& lambda, Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1506:111: error: no matching function for call to ‘jlcxx::TypeWrapper<poplar::PrintTensorFmt>::constructor<unsigned int, unsigned int, unsigned int, unsigned int, FloatFormat, char, char>()’
 1506 | JLPrintTensorFmt.constructor<unsigned int, unsigned int, unsigned int, unsigned int, FloatFormat, char, char>();
      |                                                                                                               ^
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note: candidate: ‘template<class ... ArgsT, class ... Extra> jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {ArgsT ...}; Extra = {Extra ...}; T = poplar::PrintTensorFmt]’
 1096 |   TypeWrapper<T>& constructor(Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note:   template argument deduction/substitution failed:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note: candidate: ‘template<class LambdaT, class ... Extra, typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> > jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(LambdaT&&, Extra ...) [with LambdaT = LambdaT; Extra = {Extra ...}; typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> = <enumerator>; T = poplar::PrintTensorFmt]’
 1109 |   TypeWrapper<T>& constructor(LambdaT&& lambda, Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1507:117: error: no matching function for call to ‘jlcxx::TypeWrapper<poplar::PrintTensorFmt>::constructor<unsigned int, unsigned int, unsigned int, unsigned int, FloatFormat, char, char, char>()’
 1507 | JLPrintTensorFmt.constructor<unsigned int, unsigned int, unsigned int, unsigned int, FloatFormat, char, char, char>();
      |                                                                                                                     ^
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note: candidate: ‘template<class ... ArgsT, class ... Extra> jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {ArgsT ...}; Extra = {Extra ...}; T = poplar::PrintTensorFmt]’
 1096 |   TypeWrapper<T>& constructor(Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1096:19: note:   template argument deduction/substitution failed:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note: candidate: ‘template<class LambdaT, class ... Extra, typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> > jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(LambdaT&&, Extra ...) [with LambdaT = LambdaT; Extra = {Extra ...}; typename std::enable_if<jlcxx::detail::has_call_operator<LambdaT>::value, bool>::type <anonymous> = <enumerator>; T = poplar::PrintTensorFmt]’
 1109 |   TypeWrapper<T>& constructor(LambdaT&& lambda, Extra... extra)
      |                   ^~~~~~~~~~~
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1109:19: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp: In lambda function:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1529:86: error: no matching function for call to ‘poplar::TypeTraits::make()’
 1529 | JLTypeTraits.method("TypeTraitsMake<>", [](poplar::TypeTraits& cl) {return cl.make<>();});
      |                                                                                      ^
In file included from /opt/poplar/include/poplar/Tensor.hpp:8,
                 from /opt/poplar/include/poplar/Program.hpp:14,
                 from /opt/poplar/include/poplar/Graph.hpp:16,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/TypeTraits.hpp:45:34: note: candidate: ‘template<class T> static poplar::TypeTraits poplar::TypeTraits::make()’
   45 | template <typename T> TypeTraits TypeTraits::make() {
      |                                  ^~~~~~~~~~
/opt/poplar/include/poplar/TypeTraits.hpp:45:34: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1529:86: note:   couldn’t deduce template parameter ‘T’
 1529 | JLTypeTraits.method("TypeTraitsMake<>", [](poplar::TypeTraits& cl) {return cl.make<>();});
      |                                                                                      ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp: In lambda function:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1533:102: error: no matching function for call to ‘poplar::TypeTraits::isSimpleType()’
 1533 | JLTypeTraits.method("TypeTraitsIsSimpleType<>", [](poplar::TypeTraits& cl) {return cl.isSimpleType<>();});
      |                                                                                                      ^
In file included from /opt/poplar/include/poplar/Tensor.hpp:8,
                 from /opt/poplar/include/poplar/Program.hpp:14,
                 from /opt/poplar/include/poplar/Graph.hpp:16,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/TypeTraits.hpp:80:38: note: candidate: ‘template<class T> static constexpr bool poplar::TypeTraits::isSimpleType()’
   80 | template <typename T> constexpr bool TypeTraits::isSimpleType() {
      |                                      ^~~~~~~~~~
/opt/poplar/include/poplar/TypeTraits.hpp:80:38: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1533:102: note:   couldn’t deduce template parameter ‘T’
 1533 | JLTypeTraits.method("TypeTraitsIsSimpleType<>", [](poplar::TypeTraits& cl) {return cl.isSimpleType<>();});
      |                                                                                                      ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp: In lambda function:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1537:110: error: no matching function for call to ‘poplar::TypeTraits::requiresMetadata()’
 1537 | JLTypeTraits.method("TypeTraitsRequiresMetadata<>", [](poplar::TypeTraits& cl) {return cl.requiresMetadata<>();});
      |                                                                                                              ^
In file included from /opt/poplar/include/poplar/Tensor.hpp:8,
                 from /opt/poplar/include/poplar/Program.hpp:14,
                 from /opt/poplar/include/poplar/Graph.hpp:16,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/TypeTraits.hpp:40:47: note: candidate: ‘template<class T> static constexpr bool poplar::TypeTraits::requiresMetadata()’
   40 |   template <typename T> static constexpr bool requiresMetadata();
      |                                               ^~~~~~~~~~~~~~~~
/opt/poplar/include/poplar/TypeTraits.hpp:40:47: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1537:110: note:   couldn’t deduce template parameter ‘T’
 1537 | JLTypeTraits.method("TypeTraitsRequiresMetadata<>", [](poplar::TypeTraits& cl) {return cl.requiresMetadata<>();});
      |                                                                                                              ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp: In function ‘void define_julia_module(jlcxx::Module&)’:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2079:101: error: ‘ConnectionDesc’ was not declared in this scope; did you mean ‘JLGraphConnectionDesc’?
 2079 | JLGraph.method("GraphAddVertex", [](poplar::Graph& cl, ComputeSet a, std::string b, jlcxx::ArrayRef<ConnectionDesc> c) {return cl.addVertex(a, b, jlcxxToPoplar(c));});
      |                                                                                                     ^~~~~~~~~~~~~~
      |                                                                                                     JLGraphConnectionDesc
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2079:115: error: template argument 1 is invalid
 2079 | JLGraph.method("GraphAddVertex", [](poplar::Graph& cl, ComputeSet a, std::string b, jlcxx::ArrayRef<ConnectionDesc> c) {return cl.addVertex(a, b, jlcxxToPoplar(c));});
      |                                                                                                                   ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp: In lambda function:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2079:162: error: no matching function for call to ‘jlcxxToPoplar(int&)’
 2079 | JLGraph.method("GraphAddVertex", [](poplar::Graph& cl, ComputeSet a, std::string b, jlcxx::ArrayRef<ConnectionDesc> c) {return cl.addVertex(a, b, jlcxxToPoplar(c));});
      |                                                                                                                                                                  ^
/root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:47:21: note: candidate: ‘template<class T> poplar::ArrayRef<T> jlcxxToPoplar(jlcxx::ArrayRef<T, 1>)’
   47 | poplar::ArrayRef<T> jlcxxToPoplar(jlcxx::ArrayRef<T> arr)
      |                     ^~~~~~~~~~~~~
/root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:47:21: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2079:162: note:   mismatched types ‘jlcxx::ArrayRef<T, 1>’ and ‘int’
 2079 | JLGraph.method("GraphAddVertex", [](poplar::Graph& cl, ComputeSet a, std::string b, jlcxx::ArrayRef<ConnectionDesc> c) {return cl.addVertex(a, b, jlcxxToPoplar(c));});
      |                                                                                                                                                                  ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp: In function ‘void define_julia_module(jlcxx::Module&)’:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2363:85: error: ‘TileToTensorMapping’ does not name a type
 2363 | JLGraph.method("GraphSetTileMapping", [](poplar::Graph& cl, const Tensor & a, const TileToTensorMapping & b) {return cl.setTileMapping(a, b);});
      |                                                                                     ^~~~~~~~~~~~~~~~~~~
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp: In lambda function:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2363:144: error: expected ‘{’ before ‘;’ token
 2363 | JLGraph.method("GraphSetTileMapping", [](poplar::Graph& cl, const Tensor & a, const TileToTensorMapping & b) {return cl.setTileMapping(a, b);});
      |                                                                                                                                                ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp: In function ‘void define_julia_module(jlcxx::Module&)’:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2363:144: error: expected ‘)’ before ‘;’ token
 2363 | JLGraph.method("GraphSetTileMapping", [](poplar::Graph& cl, const Tensor & a, const TileToTensorMapping & b) {return cl.setTileMapping(a, b);});
      |               ~                                                                                                                                ^
      |                                                                                                                                                )
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2427:93: error: ‘HostFunctionArgument’ was not declared in this scope
 2427 | JLGraph.method("GraphAddHostFunction", [](poplar::Graph& cl, std::string a, jlcxx::ArrayRef<HostFunctionArgument> b, jlcxx::ArrayRef<HostFunctionArgument> c) {return cl.addHostFunction(a, jlcxxToPoplar(b), jlcxxToPoplar(c));});
      |                                                                                             ^~~~~~~~~~~~~~~~~~~~
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2427:113: error: template argument 1 is invalid
 2427 | JLGraph.method("GraphAddHostFunction", [](poplar::Graph& cl, std::string a, jlcxx::ArrayRef<HostFunctionArgument> b, jlcxx::ArrayRef<HostFunctionArgument> c) {return cl.addHostFunction(a, jlcxxToPoplar(b), jlcxxToPoplar(c));});
      |                                                                                                                 ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2427:134: error: ‘HostFunctionArgument’ was not declared in this scope
 2427 | JLGraph.method("GraphAddHostFunction", [](poplar::Graph& cl, std::string a, jlcxx::ArrayRef<HostFunctionArgument> b, jlcxx::ArrayRef<HostFunctionArgument> c) {return cl.addHostFunction(a, jlcxxToPoplar(b), jlcxxToPoplar(c));});
      |                                                                                                                                      ^~~~~~~~~~~~~~~~~~~~
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2427:154: error: template argument 1 is invalid
 2427 | JLGraph.method("GraphAddHostFunction", [](poplar::Graph& cl, std::string a, jlcxx::ArrayRef<HostFunctionArgument> b, jlcxx::ArrayRef<HostFunctionArgument> c) {return cl.addHostFunction(a, jlcxxToPoplar(b), jlcxxToPoplar(c));});
      |                                                                                                                                                          ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp: In lambda function:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2427:204: error: no matching function for call to ‘jlcxxToPoplar(int&)’
 2427 | JLGraph.method("GraphAddHostFunction", [](poplar::Graph& cl, std::string a, jlcxx::ArrayRef<HostFunctionArgument> b, jlcxx::ArrayRef<HostFunctionArgument> c) {return cl.addHostFunction(a, jlcxxToPoplar(b), jlcxxToPoplar(c));});
      |                                                                                                                                                                                                            ^
/root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:47:21: note: candidate: ‘template<class T> poplar::ArrayRef<T> jlcxxToPoplar(jlcxx::ArrayRef<T, 1>)’
   47 | poplar::ArrayRef<T> jlcxxToPoplar(jlcxx::ArrayRef<T> arr)
      |                     ^~~~~~~~~~~~~
/root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:47:21: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2427:204: note:   mismatched types ‘jlcxx::ArrayRef<T, 1>’ and ‘int’
 2427 | JLGraph.method("GraphAddHostFunction", [](poplar::Graph& cl, std::string a, jlcxx::ArrayRef<HostFunctionArgument> b, jlcxx::ArrayRef<HostFunctionArgument> c) {return cl.addHostFunction(a, jlcxxToPoplar(b), jlcxxToPoplar(c));});
      |                                                                                                                                                                                                            ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2427:222: error: no matching function for call to ‘jlcxxToPoplar(int&)’
 2427 | JLGraph.method("GraphAddHostFunction", [](poplar::Graph& cl, std::string a, jlcxx::ArrayRef<HostFunctionArgument> b, jlcxx::ArrayRef<HostFunctionArgument> c) {return cl.addHostFunction(a, jlcxxToPoplar(b), jlcxxToPoplar(c));});
      |                                                                                                                                                                                                                              ^
/root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:47:21: note: candidate: ‘template<class T> poplar::ArrayRef<T> jlcxxToPoplar(jlcxx::ArrayRef<T, 1>)’
   47 | poplar::ArrayRef<T> jlcxxToPoplar(jlcxx::ArrayRef<T> arr)
      |                     ^~~~~~~~~~~~~
/root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:47:21: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2427:222: note:   mismatched types ‘jlcxx::ArrayRef<T, 1>’ and ‘int’
 2427 | JLGraph.method("GraphAddHostFunction", [](poplar::Graph& cl, std::string a, jlcxx::ArrayRef<HostFunctionArgument> b, jlcxx::ArrayRef<HostFunctionArgument> c) {return cl.addHostFunction(a, jlcxxToPoplar(b), jlcxxToPoplar(c));});
      |                                                                                                                                                                                                                              ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp: In lambda function:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2455:145: error: no matching function for call to ‘poplar::Graph::getMaxVertexFieldValueAs(std::string&, std::string&)’
 2455 | JLGraph.method("GraphGetMaxVertexFieldValueAs<>", [](poplar::Graph& cl, std::string a, std::string b) {return cl.getMaxVertexFieldValueAs<>(a, b);});
      |                                                                                                                                                 ^
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/Graph.hpp:994:5: note: candidate: ‘template<class T> T poplar::Graph::getMaxVertexFieldValueAs(poplar::StringRef, poplar::StringRef) const’ <deleted>
  994 |   T getMaxVertexFieldValueAs(StringRef vertexName,
      |     ^~~~~~~~~~~~~~~~~~~~~~~~
/opt/poplar/include/poplar/Graph.hpp:994:5: note:   template argument deduction/substitution failed:
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:116:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2455:145: note:   couldn’t deduce template parameter ‘T’
 2455 | JLGraph.method("GraphGetMaxVertexFieldValueAs<>", [](poplar::Graph& cl, std::string a, std::string b) {return cl.getMaxVertexFieldValueAs<>(a, b);});
      |                                                                                                                                                 ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp: In function ‘void define_julia_module(jlcxx::Module&)’:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2569:68: error: ‘TimerTimePoint’ does not name a type; did you mean ‘JLEngineTimerTimePoint’?
 2569 | JLEngine.method("EngineReportTiming", [](poplar::Engine& cl, const TimerTimePoint & a, const TimerTimePoint & b) {return cl.reportTiming(a, b);});
      |                                                                    ^~~~~~~~~~~~~~
      |                                                                    JLEngineTimerTimePoint
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp: In lambda function:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2569:146: error: expected ‘{’ before ‘;’ token
 2569 | JLEngine.method("EngineReportTiming", [](poplar::Engine& cl, const TimerTimePoint & a, const TimerTimePoint & b) {return cl.reportTiming(a, b);});
      |                                                                                                                                                  ^
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp: In function ‘void define_julia_module(jlcxx::Module&)’:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2569:146: error: expected ‘)’ before ‘;’ token
 2569 | JLEngine.method("EngineReportTiming", [](poplar::Engine& cl, const TimerTimePoint & a, const TimerTimePoint & b) {return cl.reportTiming(a, b);});
      |                ~                                                                                                                                 ^
      |                                                                                                                                                  )
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp: In lambda function:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2573:104: warning: ‘void poplar::Engine::resetExecutionProfile()’ is deprecated [-Wdeprecated-declarations]
 2573 | JLEngine.method("EngineResetExecutionProfile", [](poplar::Engine& cl) {return cl.resetExecutionProfile();});
      |                                                                                                        ^
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/gen_headers.hpp:3,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:12:
/opt/poplar/include/poplar/Engine.hpp:625:22: note: declared here
  625 |   GC_DEPRECATED void resetExecutionProfile();
      |                      ^~~~~~~~~~~~~~~~~~~~~
/root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp: In instantiation of ‘poplar::ArrayRef<T> jlcxxToPoplar(jlcxx::ArrayRef<T, 1>) [with T = poplar::GenericInterval<long unsigned int>]’:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1568:118:   required from here
/root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:49:18: error: no matching function for call to ‘poplar::ArrayRef<poplar::GenericInterval<long unsigned int> >::ArrayRef(jlcxx::ArrayRef<poplar::GenericInterval<long unsigned int> >::julia_t*, std::size_t)’
   49 |   return poplar::ArrayRef<T>(arr.data(), arr.size());
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/ArrayRef.hpp:6,
                 from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/gccs/ArrayRef.hpp:235:13: note: candidate: ‘constexpr gccs::ArrayRef<const T>::ArrayRef(const T*, std::size_t) [with T = poplar::GenericInterval<long unsigned int>; std::size_t = long unsigned int]’
  235 |   constexpr ArrayRef(const T *p, std::size_t size) : ptr(p), len(size) {}
      |             ^~~~~~~~
In file included from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   inherited here
   13 |   using ::gccs::ArrayRef<const T>::ArrayRef;
      |                                    ^~~~~~~~
In file included from /opt/poplar/include/poplar/ArrayRef.hpp:6,
                 from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/gccs/ArrayRef.hpp:235:31: note:   no known conversion for argument 1 from ‘jlcxx::ArrayRef<poplar::GenericInterval<long unsigned int> >::julia_t*’ {aka ‘jlcxx::WrappedCppPtr*’} to ‘const poplar::GenericInterval<long unsigned int>*’
  235 |   constexpr ArrayRef(const T *p, std::size_t size) : ptr(p), len(size) {}
      |                      ~~~~~~~~~^
/opt/poplar/include/gccs/ArrayRef.hpp:251:3: note: candidate: ‘template<class U, class Alloc, typename std::enable_if<(std::is_same<U, poplar::GenericInterval<long unsigned int> >::value || (std::is_pointer<poplar::GenericInterval<long unsigned int> >::value && std::is_convertible<const U*, const poplar::GenericInterval<long unsigned int>*>::value)), bool>::type <anonymous> > gccs::ArrayRef<const T>::ArrayRef(const std::vector<U, Alloc>&) [with U = U; Alloc = Alloc; typename std::enable_if<(std::is_same<U, T>::value || (std::is_pointer<_Tp>::value && std::is_convertible<const U*, const T*>::value)), bool>::type <anonymous> = <enumerator>; T = poplar::GenericInterval<long unsigned int>]’
  251 |   ArrayRef(const std::vector<U, Alloc> &v) : ArrayRef(v.data(), v.size()) {}
      |   ^~~~~~~~
In file included from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   inherited here
   13 |   using ::gccs::ArrayRef<const T>::ArrayRef;
      |                                    ^~~~~~~~
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   template argument deduction/substitution failed:
/root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:49:18: note:   mismatched types ‘const std::vector<_Tp, _Alloc>’ and ‘jlcxx::ArrayRef<poplar::GenericInterval<long unsigned int> >::julia_t*’ {aka ‘jlcxx::WrappedCppPtr*’}
   49 |   return poplar::ArrayRef<T>(arr.data(), arr.size());
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/ArrayRef.hpp:6,
                 from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/gccs/ArrayRef.hpp:255:13: note: candidate: ‘template<long unsigned int N> constexpr gccs::ArrayRef<const T>::ArrayRef(const std::array<T, N>&) [with long unsigned int N = N; T = poplar::GenericInterval<long unsigned int>]’
  255 |   constexpr ArrayRef(const std::array<T, N> &a) : ArrayRef(a.data(), N) {}
      |             ^~~~~~~~
In file included from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   inherited here
   13 |   using ::gccs::ArrayRef<const T>::ArrayRef;
      |                                    ^~~~~~~~
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   template argument deduction/substitution failed:
/root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:49:18: note:   mismatched types ‘const std::array<poplar::GenericInterval<long unsigned int>, N>’ and ‘jlcxx::ArrayRef<poplar::GenericInterval<long unsigned int> >::julia_t*’ {aka ‘jlcxx::WrappedCppPtr*’}
   49 |   return poplar::ArrayRef<T>(arr.data(), arr.size());
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/ArrayRef.hpp:6,
                 from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/gccs/ArrayRef.hpp:259:13: note: candidate: ‘template<long unsigned int N> constexpr gccs::ArrayRef<const T>::ArrayRef(const T (&)[N]) [with long unsigned int N = N; T = poplar::GenericInterval<long unsigned int>]’
  259 |   constexpr ArrayRef(const T (&p)[N]) : ArrayRef(p, N) {}
      |             ^~~~~~~~
In file included from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   inherited here
   13 |   using ::gccs::ArrayRef<const T>::ArrayRef;
      |                                    ^~~~~~~~
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   template argument deduction/substitution failed:
/root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:49:18: note:   mismatched types ‘const poplar::GenericInterval<long unsigned int> [N]’ and ‘jlcxx::ArrayRef<poplar::GenericInterval<long unsigned int> >::julia_t*’ {aka ‘jlcxx::WrappedCppPtr*’}
   49 |   return poplar::ArrayRef<T>(arr.data(), arr.size());
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/ArrayRef.hpp:6,
                 from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/gccs/ArrayRef.hpp:262:13: note: candidate: ‘constexpr gccs::ArrayRef<const T>::ArrayRef(const std::initializer_list<_Tp>&) [with T = poplar::GenericInterval<long unsigned int>]’
  262 |   constexpr ArrayRef(const std::initializer_list<T> &list)
      |             ^~~~~~~~
In file included from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   inherited here
   13 |   using ::gccs::ArrayRef<const T>::ArrayRef;
      |                                    ^~~~~~~~
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   candidate expects 1 argument, 2 provided
In file included from /opt/poplar/include/poplar/ArrayRef.hpp:6,
                 from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/gccs/ArrayRef.hpp:278:13: note: candidate: ‘template<class U, typename std::enable_if<(std::is_same<U, poplar::GenericInterval<long unsigned int> >::value || (std::is_pointer<poplar::GenericInterval<long unsigned int> >::value && std::is_convertible<const U*, const poplar::GenericInterval<long unsigned int>*>::value)), bool>::type <anonymous> > constexpr gccs::ArrayRef<const T>::ArrayRef(const gccs::ArrayRef<U>&) [with U = U; typename std::enable_if<(std::is_same<U, T>::value || (std::is_pointer<_Tp>::value && std::is_convertible<const U*, const T*>::value)), bool>::type <anonymous> = <enumerator>; T = poplar::GenericInterval<long unsigned int>]’
  278 |   constexpr ArrayRef(const ArrayRef<U> &a) : ptr(a.data()), len(a.size()) {}
      |             ^~~~~~~~
In file included from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   inherited here
   13 |   using ::gccs::ArrayRef<const T>::ArrayRef;
      |                                    ^~~~~~~~
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   template argument deduction/substitution failed:
/root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:49:18: note:   mismatched types ‘const gccs::ArrayRef<T>’ and ‘jlcxx::ArrayRef<poplar::GenericInterval<long unsigned int> >::julia_t*’ {aka ‘jlcxx::WrappedCppPtr*’}
   49 |   return poplar::ArrayRef<T>(arr.data(), arr.size());
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/ArrayRef.hpp:6,
                 from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/gccs/ArrayRef.hpp:220:26: note: candidate: ‘constexpr gccs::ArrayRef<const poplar::GenericInterval<long unsigned int> >::ArrayRef(const gccs::ArrayRef<const poplar::GenericInterval<long unsigned int> >&)’
  220 | template <class T> class ArrayRef<const T> {
      |                          ^~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   inherited here
   13 |   using ::gccs::ArrayRef<const T>::ArrayRef;
      |                                    ^~~~~~~~
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   candidate expects 1 argument, 2 provided
In file included from /opt/poplar/include/poplar/ArrayRef.hpp:6,
                 from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/gccs/ArrayRef.hpp:220:26: note: candidate: ‘constexpr gccs::ArrayRef<const poplar::GenericInterval<long unsigned int> >::ArrayRef(gccs::ArrayRef<const poplar::GenericInterval<long unsigned int> >&&)’
  220 | template <class T> class ArrayRef<const T> {
      |                          ^~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   inherited here
   13 |   using ::gccs::ArrayRef<const T>::ArrayRef;
      |                                    ^~~~~~~~
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   candidate expects 1 argument, 2 provided
/opt/poplar/include/poplar/ArrayRef.hpp:12:26: note: candidate: ‘constexpr poplar::ArrayRef<poplar::GenericInterval<long unsigned int> >::ArrayRef()’
   12 | template <class T> class ArrayRef : public ::gccs::ArrayRef<const T> {
      |                          ^~~~~~~~
/opt/poplar/include/poplar/ArrayRef.hpp:12:26: note:   candidate expects 0 arguments, 2 provided
/opt/poplar/include/poplar/ArrayRef.hpp:12:26: note: candidate: ‘constexpr poplar::ArrayRef<poplar::GenericInterval<long unsigned int> >::ArrayRef(const poplar::ArrayRef<poplar::GenericInterval<long unsigned int> >&)’
/opt/poplar/include/poplar/ArrayRef.hpp:12:26: note:   candidate expects 1 argument, 2 provided
/opt/poplar/include/poplar/ArrayRef.hpp:12:26: note: candidate: ‘constexpr poplar::ArrayRef<poplar::GenericInterval<long unsigned int> >::ArrayRef(poplar::ArrayRef<poplar::GenericInterval<long unsigned int> >&&)’
/opt/poplar/include/poplar/ArrayRef.hpp:12:26: note:   candidate expects 1 argument, 2 provided
/root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp: In instantiation of ‘poplar::ArrayRef<T> jlcxxToPoplar(jlcxx::ArrayRef<T, 1>) [with T = poplar::Tensor]’:
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1724:112:   required from here
/root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:49:18: error: no matching function for call to ‘poplar::ArrayRef<poplar::Tensor>::ArrayRef(jlcxx::ArrayRef<poplar::Tensor>::julia_t*, std::size_t)’
   49 |   return poplar::ArrayRef<T>(arr.data(), arr.size());
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/ArrayRef.hpp:6,
                 from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/gccs/ArrayRef.hpp:235:13: note: candidate: ‘constexpr gccs::ArrayRef<const T>::ArrayRef(const T*, std::size_t) [with T = poplar::Tensor; std::size_t = long unsigned int]’
  235 |   constexpr ArrayRef(const T *p, std::size_t size) : ptr(p), len(size) {}
      |             ^~~~~~~~
In file included from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   inherited here
   13 |   using ::gccs::ArrayRef<const T>::ArrayRef;
      |                                    ^~~~~~~~
In file included from /opt/poplar/include/poplar/ArrayRef.hpp:6,
                 from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/gccs/ArrayRef.hpp:235:31: note:   no known conversion for argument 1 from ‘jlcxx::ArrayRef<poplar::Tensor>::julia_t*’ {aka ‘jlcxx::WrappedCppPtr*’} to ‘const poplar::Tensor*’
  235 |   constexpr ArrayRef(const T *p, std::size_t size) : ptr(p), len(size) {}
      |                      ~~~~~~~~~^
/opt/poplar/include/gccs/ArrayRef.hpp:251:3: note: candidate: ‘template<class U, class Alloc, typename std::enable_if<(std::is_same<U, poplar::Tensor>::value || (std::is_pointer<poplar::Tensor>::value && std::is_convertible<const U*, const poplar::Tensor*>::value)), bool>::type <anonymous> > gccs::ArrayRef<const T>::ArrayRef(const std::vector<U, Alloc>&) [with U = U; Alloc = Alloc; typename std::enable_if<(std::is_same<U, T>::value || (std::is_pointer<_Tp>::value && std::is_convertible<const U*, const T*>::value)), bool>::type <anonymous> = <enumerator>; T = poplar::Tensor]’
  251 |   ArrayRef(const std::vector<U, Alloc> &v) : ArrayRef(v.data(), v.size()) {}
      |   ^~~~~~~~
In file included from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   inherited here
   13 |   using ::gccs::ArrayRef<const T>::ArrayRef;
      |                                    ^~~~~~~~
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   template argument deduction/substitution failed:
/root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:49:18: note:   mismatched types ‘const std::vector<_Tp, _Alloc>’ and ‘jlcxx::ArrayRef<poplar::Tensor>::julia_t*’ {aka ‘jlcxx::WrappedCppPtr*’}
   49 |   return poplar::ArrayRef<T>(arr.data(), arr.size());
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/ArrayRef.hpp:6,
                 from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/gccs/ArrayRef.hpp:255:13: note: candidate: ‘template<long unsigned int N> constexpr gccs::ArrayRef<const T>::ArrayRef(const std::array<T, N>&) [with long unsigned int N = N; T = poplar::Tensor]’
  255 |   constexpr ArrayRef(const std::array<T, N> &a) : ArrayRef(a.data(), N) {}
      |             ^~~~~~~~
In file included from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   inherited here
   13 |   using ::gccs::ArrayRef<const T>::ArrayRef;
      |                                    ^~~~~~~~
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   template argument deduction/substitution failed:
/root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:49:18: note:   mismatched types ‘const std::array<poplar::Tensor, N>’ and ‘jlcxx::ArrayRef<poplar::Tensor>::julia_t*’ {aka ‘jlcxx::WrappedCppPtr*’}
   49 |   return poplar::ArrayRef<T>(arr.data(), arr.size());
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/ArrayRef.hpp:6,
                 from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/gccs/ArrayRef.hpp:259:13: note: candidate: ‘template<long unsigned int N> constexpr gccs::ArrayRef<const T>::ArrayRef(const T (&)[N]) [with long unsigned int N = N; T = poplar::Tensor]’
  259 |   constexpr ArrayRef(const T (&p)[N]) : ArrayRef(p, N) {}
      |             ^~~~~~~~
In file included from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   inherited here
   13 |   using ::gccs::ArrayRef<const T>::ArrayRef;
      |                                    ^~~~~~~~
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   template argument deduction/substitution failed:
/root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:49:18: note:   mismatched types ‘const poplar::Tensor [N]’ and ‘jlcxx::ArrayRef<poplar::Tensor>::julia_t*’ {aka ‘jlcxx::WrappedCppPtr*’}
   49 |   return poplar::ArrayRef<T>(arr.data(), arr.size());
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/ArrayRef.hpp:6,
                 from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/gccs/ArrayRef.hpp:262:13: note: candidate: ‘constexpr gccs::ArrayRef<const T>::ArrayRef(const std::initializer_list<_Tp>&) [with T = poplar::Tensor]’
  262 |   constexpr ArrayRef(const std::initializer_list<T> &list)
      |             ^~~~~~~~
In file included from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   inherited here
   13 |   using ::gccs::ArrayRef<const T>::ArrayRef;
      |                                    ^~~~~~~~
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   candidate expects 1 argument, 2 provided
In file included from /opt/poplar/include/poplar/ArrayRef.hpp:6,
                 from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/gccs/ArrayRef.hpp:278:13: note: candidate: ‘template<class U, typename std::enable_if<(std::is_same<U, poplar::Tensor>::value || (std::is_pointer<poplar::Tensor>::value && std::is_convertible<const U*, const poplar::Tensor*>::value)), bool>::type <anonymous> > constexpr gccs::ArrayRef<const T>::ArrayRef(const gccs::ArrayRef<U>&) [with U = U; typename std::enable_if<(std::is_same<U, T>::value || (std::is_pointer<_Tp>::value && std::is_convertible<const U*, const T*>::value)), bool>::type <anonymous> = <enumerator>; T = poplar::Tensor]’
  278 |   constexpr ArrayRef(const ArrayRef<U> &a) : ptr(a.data()), len(a.size()) {}
      |             ^~~~~~~~
In file included from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   inherited here
   13 |   using ::gccs::ArrayRef<const T>::ArrayRef;
      |                                    ^~~~~~~~
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   template argument deduction/substitution failed:
/root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:49:18: note:   mismatched types ‘const gccs::ArrayRef<T>’ and ‘jlcxx::ArrayRef<poplar::Tensor>::julia_t*’ {aka ‘jlcxx::WrappedCppPtr*’}
   49 |   return poplar::ArrayRef<T>(arr.data(), arr.size());
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/ArrayRef.hpp:6,
                 from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/gccs/ArrayRef.hpp:220:26: note: candidate: ‘constexpr gccs::ArrayRef<const poplar::Tensor>::ArrayRef(const gccs::ArrayRef<const poplar::Tensor>&)’
  220 | template <class T> class ArrayRef<const T> {
      |                          ^~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   inherited here
   13 |   using ::gccs::ArrayRef<const T>::ArrayRef;
      |                                    ^~~~~~~~
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   candidate expects 1 argument, 2 provided
In file included from /opt/poplar/include/poplar/ArrayRef.hpp:6,
                 from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/gccs/ArrayRef.hpp:220:26: note: candidate: ‘constexpr gccs::ArrayRef<const poplar::Tensor>::ArrayRef(gccs::ArrayRef<const poplar::Tensor>&&)’
  220 | template <class T> class ArrayRef<const T> {
      |                          ^~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/StringRef.hpp:5,
                 from /opt/poplar/include/poplar/Type.hpp:8,
                 from /opt/poplar/include/poplar/DataStream.hpp:8,
                 from /opt/poplar/include/poplar/Graph.hpp:7,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   inherited here
   13 |   using ::gccs::ArrayRef<const T>::ArrayRef;
      |                                    ^~~~~~~~
/opt/poplar/include/poplar/ArrayRef.hpp:13:36: note:   candidate expects 1 argument, 2 provided
/opt/poplar/include/poplar/ArrayRef.hpp:12:26: note: candidate: ‘constexpr poplar::ArrayRef<poplar::Tensor>::ArrayRef()’
   12 | template <class T> class ArrayRef : public ::gccs::ArrayRef<const T> {
      |                          ^~~~~~~~
/opt/poplar/include/poplar/ArrayRef.hpp:12:26: note:   candidate expects 0 arguments, 2 provided
/opt/poplar/include/poplar/ArrayRef.hpp:12:26: note: candidate: ‘constexpr poplar::ArrayRef<poplar::Tensor>::ArrayRef(const poplar::ArrayRef<poplar::Tensor>&)’
/opt/poplar/include/poplar/ArrayRef.hpp:12:26: note:   candidate expects 1 argument, 2 provided
/opt/poplar/include/poplar/ArrayRef.hpp:12:26: note: candidate: ‘constexpr poplar::ArrayRef<poplar::Tensor>::ArrayRef(poplar::ArrayRef<poplar::Tensor>&&)’
/opt/poplar/include/poplar/ArrayRef.hpp:12:26: note:   candidate expects 1 argument, 2 provided
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp: In instantiation of ‘jlcxx::BoxedValue<T> jlcxx::create(ArgsT&& ...) [with T = poplar::GlobalExchangeConstraint; bool finalize = true; ArgsT = {double&, jlcxx::ArrayRef<poplar::GlobalExchangeFlow, 1>&}]’:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:624:129:   required from ‘void jlcxx::Module::constructor(jl_datatype_t*, Extra ...) [with T = poplar::GlobalExchangeConstraint; ArgsT = {double, jlcxx::ArrayRef<poplar::GlobalExchangeFlow, 1>}; Extra = {}; jl_datatype_t = _jl_datatype_t]’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1101:7:   required from ‘jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {double, jlcxx::ArrayRef<poplar::GlobalExchangeFlow, 1>}; Extra = {}; T = poplar::GlobalExchangeConstraint]’
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:371:85:   required from here
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:124:16: error: no matching function for call to ‘poplar::GlobalExchangeConstraint::GlobalExchangeConstraint(double&, jlcxx::ArrayRef<poplar::GlobalExchangeFlow>&)’
  124 |   T* cpp_obj = new T(std::forward<ArgsT>(args)...);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/Target.hpp:6,
                 from /opt/poplar/include/poplar/Device.hpp:7,
                 from /opt/poplar/include/poplar/Graph.hpp:9,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/GlobalExchangeConstraints.hpp:28:3: note: candidate: ‘poplar::GlobalExchangeConstraint::GlobalExchangeConstraint(double, poplar::ArrayRef<poplar::GlobalExchangeFlow>)’
   28 |   GlobalExchangeConstraint(double bandwidth, ArrayRef<GlobalExchangeFlow> flows)
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
/opt/poplar/include/poplar/GlobalExchangeConstraints.hpp:28:75: note:   no known conversion for argument 2 from ‘jlcxx::ArrayRef<poplar::GlobalExchangeFlow>’ to ‘poplar::ArrayRef<poplar::GlobalExchangeFlow>’
   28 |   GlobalExchangeConstraint(double bandwidth, ArrayRef<GlobalExchangeFlow> flows)
      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
/opt/poplar/include/poplar/GlobalExchangeConstraints.hpp:22:8: note: candidate: ‘poplar::GlobalExchangeConstraint::GlobalExchangeConstraint(const poplar::GlobalExchangeConstraint&)’
   22 | struct GlobalExchangeConstraint {
      |        ^~~~~~~~~~~~~~~~~~~~~~~~
/opt/poplar/include/poplar/GlobalExchangeConstraints.hpp:22:8: note:   candidate expects 1 argument, 2 provided
/opt/poplar/include/poplar/GlobalExchangeConstraints.hpp:22:8: note: candidate: ‘poplar::GlobalExchangeConstraint::GlobalExchangeConstraint(poplar::GlobalExchangeConstraint&&)’
/opt/poplar/include/poplar/GlobalExchangeConstraints.hpp:22:8: note:   candidate expects 1 argument, 2 provided
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp: In instantiation of ‘jlcxx::BoxedValue<T> jlcxx::create(ArgsT&& ...) [with T = poplar::GlobalExchangeConstraint; bool finalize = false; ArgsT = {double&, jlcxx::ArrayRef<poplar::GlobalExchangeFlow, 1>&}]’:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:624:230:   required from ‘void jlcxx::Module::constructor(jl_datatype_t*, Extra ...) [with T = poplar::GlobalExchangeConstraint; ArgsT = {double, jlcxx::ArrayRef<poplar::GlobalExchangeFlow, 1>}; Extra = {}; jl_datatype_t = _jl_datatype_t]’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1101:7:   required from ‘jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {double, jlcxx::ArrayRef<poplar::GlobalExchangeFlow, 1>}; Extra = {}; T = poplar::GlobalExchangeConstraint]’
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:371:85:   required from here
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:124:16: error: no matching function for call to ‘poplar::GlobalExchangeConstraint::GlobalExchangeConstraint(double&, jlcxx::ArrayRef<poplar::GlobalExchangeFlow>&)’
  124 |   T* cpp_obj = new T(std::forward<ArgsT>(args)...);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/Target.hpp:6,
                 from /opt/poplar/include/poplar/Device.hpp:7,
                 from /opt/poplar/include/poplar/Graph.hpp:9,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/GlobalExchangeConstraints.hpp:28:3: note: candidate: ‘poplar::GlobalExchangeConstraint::GlobalExchangeConstraint(double, poplar::ArrayRef<poplar::GlobalExchangeFlow>)’
   28 |   GlobalExchangeConstraint(double bandwidth, ArrayRef<GlobalExchangeFlow> flows)
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
/opt/poplar/include/poplar/GlobalExchangeConstraints.hpp:28:75: note:   no known conversion for argument 2 from ‘jlcxx::ArrayRef<poplar::GlobalExchangeFlow>’ to ‘poplar::ArrayRef<poplar::GlobalExchangeFlow>’
   28 |   GlobalExchangeConstraint(double bandwidth, ArrayRef<GlobalExchangeFlow> flows)
      |                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
/opt/poplar/include/poplar/GlobalExchangeConstraints.hpp:22:8: note: candidate: ‘poplar::GlobalExchangeConstraint::GlobalExchangeConstraint(const poplar::GlobalExchangeConstraint&)’
   22 | struct GlobalExchangeConstraint {
      |        ^~~~~~~~~~~~~~~~~~~~~~~~
/opt/poplar/include/poplar/GlobalExchangeConstraints.hpp:22:8: note:   candidate expects 1 argument, 2 provided
/opt/poplar/include/poplar/GlobalExchangeConstraints.hpp:22:8: note: candidate: ‘poplar::GlobalExchangeConstraint::GlobalExchangeConstraint(poplar::GlobalExchangeConstraint&&)’
/opt/poplar/include/poplar/GlobalExchangeConstraints.hpp:22:8: note:   candidate expects 1 argument, 2 provided
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp: In instantiation of ‘jlcxx::BoxedValue<T> jlcxx::create(ArgsT&& ...) [with T = poplar::program::Execute; bool finalize = true; ArgsT = {poplar::ComputeSet&, poplar::Tensor&}]’:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:624:129:   required from ‘void jlcxx::Module::constructor(jl_datatype_t*, Extra ...) [with T = poplar::program::Execute; ArgsT = {poplar::ComputeSet, poplar::Tensor}; Extra = {}; jl_datatype_t = _jl_datatype_t]’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1101:7:   required from ‘jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {poplar::ComputeSet, poplar::Tensor}; Extra = {}; T = poplar::program::Execute]’
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1749:50:   required from here
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:124:16: warning: ‘poplar::program::Execute::Execute(poplar::ComputeSet, poplar::Tensor, const poplar::DebugContext&)’ is deprecated [-Wdeprecated-declarations]
  124 |   T* cpp_obj = new T(std::forward<ArgsT>(args)...);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/Graph.hpp:16,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/Program.hpp:78:3: note: declared here
   78 |   Execute(ComputeSet cs, Tensor t, const DebugContext &debugContext = {});
      |   ^~~~~~~
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp: In instantiation of ‘jlcxx::BoxedValue<T> jlcxx::create(ArgsT&& ...) [with T = poplar::program::Execute; bool finalize = false; ArgsT = {poplar::ComputeSet&, poplar::Tensor&}]’:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:624:230:   required from ‘void jlcxx::Module::constructor(jl_datatype_t*, Extra ...) [with T = poplar::program::Execute; ArgsT = {poplar::ComputeSet, poplar::Tensor}; Extra = {}; jl_datatype_t = _jl_datatype_t]’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1101:7:   required from ‘jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {poplar::ComputeSet, poplar::Tensor}; Extra = {}; T = poplar::program::Execute]’
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1749:50:   required from here
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:124:16: warning: ‘poplar::program::Execute::Execute(poplar::ComputeSet, poplar::Tensor, const poplar::DebugContext&)’ is deprecated [-Wdeprecated-declarations]
  124 |   T* cpp_obj = new T(std::forward<ArgsT>(args)...);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/Graph.hpp:16,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/Program.hpp:78:3: note: declared here
   78 |   Execute(ComputeSet cs, Tensor t, const DebugContext &debugContext = {});
      |   ^~~~~~~
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp: In instantiation of ‘jlcxx::BoxedValue<T> jlcxx::create(ArgsT&& ...) [with T = poplar::program::Execute; bool finalize = true; ArgsT = {poplar::ComputeSet&, poplar::Tensor&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}]’:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:624:129:   required from ‘void jlcxx::Module::constructor(jl_datatype_t*, Extra ...) [with T = poplar::program::Execute; ArgsT = {poplar::ComputeSet, poplar::Tensor, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}; Extra = {}; jl_datatype_t = _jl_datatype_t]’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1101:7:   required from ‘jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {poplar::ComputeSet, poplar::Tensor, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}; Extra = {}; T = poplar::program::Execute]’
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1750:63:   required from here
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:124:16: warning: ‘poplar::program::Execute::Execute(poplar::ComputeSet, poplar::Tensor, const poplar::DebugContext&)’ is deprecated [-Wdeprecated-declarations]
  124 |   T* cpp_obj = new T(std::forward<ArgsT>(args)...);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/Graph.hpp:16,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/Program.hpp:78:3: note: declared here
   78 |   Execute(ComputeSet cs, Tensor t, const DebugContext &debugContext = {});
      |   ^~~~~~~
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp: In instantiation of ‘jlcxx::BoxedValue<T> jlcxx::create(ArgsT&& ...) [with T = poplar::program::Execute; bool finalize = false; ArgsT = {poplar::ComputeSet&, poplar::Tensor&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}]’:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:624:230:   required from ‘void jlcxx::Module::constructor(jl_datatype_t*, Extra ...) [with T = poplar::program::Execute; ArgsT = {poplar::ComputeSet, poplar::Tensor, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}; Extra = {}; jl_datatype_t = _jl_datatype_t]’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1101:7:   required from ‘jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {poplar::ComputeSet, poplar::Tensor, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}; Extra = {}; T = poplar::program::Execute]’
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1750:63:   required from here
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:124:16: warning: ‘poplar::program::Execute::Execute(poplar::ComputeSet, poplar::Tensor, const poplar::DebugContext&)’ is deprecated [-Wdeprecated-declarations]
  124 |   T* cpp_obj = new T(std::forward<ArgsT>(args)...);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/Graph.hpp:16,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/Program.hpp:78:3: note: declared here
   78 |   Execute(ComputeSet cs, Tensor t, const DebugContext &debugContext = {});
      |   ^~~~~~~
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp: In instantiation of ‘jlcxx::BoxedValue<T> jlcxx::create(ArgsT&& ...) [with T = poplar::program::Call; bool finalize = true; ArgsT = {poplar::HostFunction&, jlcxx::ArrayRef<poplar::Tensor, 1>&, jlcxx::ArrayRef<poplar::Tensor, 1>&}]’:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:624:129:   required from ‘void jlcxx::Module::constructor(jl_datatype_t*, Extra ...) [with T = poplar::program::Call; ArgsT = {poplar::HostFunction, jlcxx::ArrayRef<poplar::Tensor, 1>, jlcxx::ArrayRef<poplar::Tensor, 1>}; Extra = {}; jl_datatype_t = _jl_datatype_t]’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1101:7:   required from ‘jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {poplar::HostFunction, jlcxx::ArrayRef<poplar::Tensor, 1>, jlcxx::ArrayRef<poplar::Tensor, 1>}; Extra = {}; T = poplar::program::Call]’
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1890:91:   required from here
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:124:16: error: no matching function for call to ‘poplar::program::Call::Call(poplar::HostFunction&, jlcxx::ArrayRef<poplar::Tensor>&, jlcxx::ArrayRef<poplar::Tensor>&)’
  124 |   T* cpp_obj = new T(std::forward<ArgsT>(args)...);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/Graph.hpp:16,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/Program.hpp:599:3: note: candidate: ‘poplar::program::Call::Call(poplar::HostFunction, poplar::ArrayRef<poplar::Tensor>, poplar::ArrayRef<poplar::Tensor>, const poplar::DebugContext&)’
  599 |   Call(HostFunction f, ArrayRef<Tensor> inputs, ArrayRef<Tensor> outputs,
      |   ^~~~
/opt/poplar/include/poplar/Program.hpp:599:41: note:   no known conversion for argument 2 from ‘jlcxx::ArrayRef<poplar::Tensor>’ to ‘poplar::ArrayRef<poplar::Tensor>’
  599 |   Call(HostFunction f, ArrayRef<Tensor> inputs, ArrayRef<Tensor> outputs,
      |                        ~~~~~~~~~~~~~~~~~^~~~~~
/opt/poplar/include/poplar/Program.hpp:589:3: note: candidate: ‘poplar::program::Call::Call(poplar::Function, const poplar::DebugContext&)’
  589 |   Call(Function f, const DebugContext &debugContext = {});
      |   ^~~~
/opt/poplar/include/poplar/Program.hpp:589:3: note:   candidate expects 2 arguments, 3 provided
/opt/poplar/include/poplar/Program.hpp:583:7: note: candidate: ‘poplar::program::Call::Call(const poplar::program::Call&)’
  583 | class Call : public Program {
      |       ^~~~
/opt/poplar/include/poplar/Program.hpp:583:7: note:   candidate expects 1 argument, 3 provided
/opt/poplar/include/poplar/Program.hpp:583:7: note: candidate: ‘poplar::program::Call::Call(poplar::program::Call&&)’
/opt/poplar/include/poplar/Program.hpp:583:7: note:   candidate expects 1 argument, 3 provided
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp: In instantiation of ‘jlcxx::BoxedValue<T> jlcxx::create(ArgsT&& ...) [with T = poplar::program::Call; bool finalize = false; ArgsT = {poplar::HostFunction&, jlcxx::ArrayRef<poplar::Tensor, 1>&, jlcxx::ArrayRef<poplar::Tensor, 1>&}]’:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:624:230:   required from ‘void jlcxx::Module::constructor(jl_datatype_t*, Extra ...) [with T = poplar::program::Call; ArgsT = {poplar::HostFunction, jlcxx::ArrayRef<poplar::Tensor, 1>, jlcxx::ArrayRef<poplar::Tensor, 1>}; Extra = {}; jl_datatype_t = _jl_datatype_t]’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1101:7:   required from ‘jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {poplar::HostFunction, jlcxx::ArrayRef<poplar::Tensor, 1>, jlcxx::ArrayRef<poplar::Tensor, 1>}; Extra = {}; T = poplar::program::Call]’
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1890:91:   required from here
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:124:16: error: no matching function for call to ‘poplar::program::Call::Call(poplar::HostFunction&, jlcxx::ArrayRef<poplar::Tensor>&, jlcxx::ArrayRef<poplar::Tensor>&)’
  124 |   T* cpp_obj = new T(std::forward<ArgsT>(args)...);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/Graph.hpp:16,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/Program.hpp:599:3: note: candidate: ‘poplar::program::Call::Call(poplar::HostFunction, poplar::ArrayRef<poplar::Tensor>, poplar::ArrayRef<poplar::Tensor>, const poplar::DebugContext&)’
  599 |   Call(HostFunction f, ArrayRef<Tensor> inputs, ArrayRef<Tensor> outputs,
      |   ^~~~
/opt/poplar/include/poplar/Program.hpp:599:41: note:   no known conversion for argument 2 from ‘jlcxx::ArrayRef<poplar::Tensor>’ to ‘poplar::ArrayRef<poplar::Tensor>’
  599 |   Call(HostFunction f, ArrayRef<Tensor> inputs, ArrayRef<Tensor> outputs,
      |                        ~~~~~~~~~~~~~~~~~^~~~~~
/opt/poplar/include/poplar/Program.hpp:589:3: note: candidate: ‘poplar::program::Call::Call(poplar::Function, const poplar::DebugContext&)’
  589 |   Call(Function f, const DebugContext &debugContext = {});
      |   ^~~~
/opt/poplar/include/poplar/Program.hpp:589:3: note:   candidate expects 2 arguments, 3 provided
/opt/poplar/include/poplar/Program.hpp:583:7: note: candidate: ‘poplar::program::Call::Call(const poplar::program::Call&)’
  583 | class Call : public Program {
      |       ^~~~
/opt/poplar/include/poplar/Program.hpp:583:7: note:   candidate expects 1 argument, 3 provided
/opt/poplar/include/poplar/Program.hpp:583:7: note: candidate: ‘poplar::program::Call::Call(poplar::program::Call&&)’
/opt/poplar/include/poplar/Program.hpp:583:7: note:   candidate expects 1 argument, 3 provided
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp: In instantiation of ‘jlcxx::BoxedValue<T> jlcxx::create(ArgsT&& ...) [with T = poplar::program::Call; bool finalize = true; ArgsT = {poplar::HostFunction&, jlcxx::ArrayRef<poplar::Tensor, 1>&, jlcxx::ArrayRef<poplar::Tensor, 1>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}]’:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:624:129:   required from ‘void jlcxx::Module::constructor(jl_datatype_t*, Extra ...) [with T = poplar::program::Call; ArgsT = {poplar::HostFunction, jlcxx::ArrayRef<poplar::Tensor, 1>, jlcxx::ArrayRef<poplar::Tensor, 1>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}; Extra = {}; jl_datatype_t = _jl_datatype_t]’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1101:7:   required from ‘jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {poplar::HostFunction, jlcxx::ArrayRef<poplar::Tensor, 1>, jlcxx::ArrayRef<poplar::Tensor, 1>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}; Extra = {}; T = poplar::program::Call]’
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1891:104:   required from here
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:124:16: error: no matching function for call to ‘poplar::program::Call::Call(poplar::HostFunction&, jlcxx::ArrayRef<poplar::Tensor>&, jlcxx::ArrayRef<poplar::Tensor>&, std::__cxx11::basic_string<char>&)’
  124 |   T* cpp_obj = new T(std::forward<ArgsT>(args)...);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/Graph.hpp:16,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/Program.hpp:599:3: note: candidate: ‘poplar::program::Call::Call(poplar::HostFunction, poplar::ArrayRef<poplar::Tensor>, poplar::ArrayRef<poplar::Tensor>, const poplar::DebugContext&)’
  599 |   Call(HostFunction f, ArrayRef<Tensor> inputs, ArrayRef<Tensor> outputs,
      |   ^~~~
/opt/poplar/include/poplar/Program.hpp:599:41: note:   no known conversion for argument 2 from ‘jlcxx::ArrayRef<poplar::Tensor>’ to ‘poplar::ArrayRef<poplar::Tensor>’
  599 |   Call(HostFunction f, ArrayRef<Tensor> inputs, ArrayRef<Tensor> outputs,
      |                        ~~~~~~~~~~~~~~~~~^~~~~~
/opt/poplar/include/poplar/Program.hpp:589:3: note: candidate: ‘poplar::program::Call::Call(poplar::Function, const poplar::DebugContext&)’
  589 |   Call(Function f, const DebugContext &debugContext = {});
      |   ^~~~
/opt/poplar/include/poplar/Program.hpp:589:3: note:   candidate expects 2 arguments, 4 provided
/opt/poplar/include/poplar/Program.hpp:583:7: note: candidate: ‘poplar::program::Call::Call(const poplar::program::Call&)’
  583 | class Call : public Program {
      |       ^~~~
/opt/poplar/include/poplar/Program.hpp:583:7: note:   candidate expects 1 argument, 4 provided
/opt/poplar/include/poplar/Program.hpp:583:7: note: candidate: ‘poplar::program::Call::Call(poplar::program::Call&&)’
/opt/poplar/include/poplar/Program.hpp:583:7: note:   candidate expects 1 argument, 4 provided
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp: In instantiation of ‘jlcxx::BoxedValue<T> jlcxx::create(ArgsT&& ...) [with T = poplar::program::Call; bool finalize = false; ArgsT = {poplar::HostFunction&, jlcxx::ArrayRef<poplar::Tensor, 1>&, jlcxx::ArrayRef<poplar::Tensor, 1>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&}]’:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:624:230:   required from ‘void jlcxx::Module::constructor(jl_datatype_t*, Extra ...) [with T = poplar::program::Call; ArgsT = {poplar::HostFunction, jlcxx::ArrayRef<poplar::Tensor, 1>, jlcxx::ArrayRef<poplar::Tensor, 1>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}; Extra = {}; jl_datatype_t = _jl_datatype_t]’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1101:7:   required from ‘jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {poplar::HostFunction, jlcxx::ArrayRef<poplar::Tensor, 1>, jlcxx::ArrayRef<poplar::Tensor, 1>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}; Extra = {}; T = poplar::program::Call]’
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:1891:104:   required from here
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:124:16: error: no matching function for call to ‘poplar::program::Call::Call(poplar::HostFunction&, jlcxx::ArrayRef<poplar::Tensor>&, jlcxx::ArrayRef<poplar::Tensor>&, std::__cxx11::basic_string<char>&)’
  124 |   T* cpp_obj = new T(std::forward<ArgsT>(args)...);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/poplar/include/poplar/Graph.hpp:16,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/Program.hpp:599:3: note: candidate: ‘poplar::program::Call::Call(poplar::HostFunction, poplar::ArrayRef<poplar::Tensor>, poplar::ArrayRef<poplar::Tensor>, const poplar::DebugContext&)’
  599 |   Call(HostFunction f, ArrayRef<Tensor> inputs, ArrayRef<Tensor> outputs,
      |   ^~~~
/opt/poplar/include/poplar/Program.hpp:599:41: note:   no known conversion for argument 2 from ‘jlcxx::ArrayRef<poplar::Tensor>’ to ‘poplar::ArrayRef<poplar::Tensor>’
  599 |   Call(HostFunction f, ArrayRef<Tensor> inputs, ArrayRef<Tensor> outputs,
      |                        ~~~~~~~~~~~~~~~~~^~~~~~
/opt/poplar/include/poplar/Program.hpp:589:3: note: candidate: ‘poplar::program::Call::Call(poplar::Function, const poplar::DebugContext&)’
  589 |   Call(Function f, const DebugContext &debugContext = {});
      |   ^~~~
/opt/poplar/include/poplar/Program.hpp:589:3: note:   candidate expects 2 arguments, 4 provided
/opt/poplar/include/poplar/Program.hpp:583:7: note: candidate: ‘poplar::program::Call::Call(const poplar::program::Call&)’
  583 | class Call : public Program {
      |       ^~~~
/opt/poplar/include/poplar/Program.hpp:583:7: note:   candidate expects 1 argument, 4 provided
/opt/poplar/include/poplar/Program.hpp:583:7: note: candidate: ‘poplar::program::Call::Call(poplar::program::Call&&)’
/opt/poplar/include/poplar/Program.hpp:583:7: note:   candidate expects 1 argument, 4 provided
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp: In instantiation of ‘jlcxx::BoxedValue<T> jlcxx::create(ArgsT&& ...) [with T = poplar::Graph::ConnectionDesc; bool finalize = true; ArgsT = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, jlcxx::ArrayRef<poplar::Tensor, 1>&}]’:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:624:129:   required from ‘void jlcxx::Module::constructor(jl_datatype_t*, Extra ...) [with T = poplar::Graph::ConnectionDesc; ArgsT = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, jlcxx::ArrayRef<poplar::Tensor, 1>}; Extra = {}; jl_datatype_t = _jl_datatype_t]’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1101:7:   required from ‘jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, jlcxx::ArrayRef<poplar::Tensor, 1>}; Extra = {}; T = poplar::Graph::ConnectionDesc]’
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2071:73:   required from here
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:124:16: error: no matching function for call to ‘poplar::Graph::ConnectionDesc::ConnectionDesc(std::__cxx11::basic_string<char>&, jlcxx::ArrayRef<poplar::Tensor>&)’
  124 |   T* cpp_obj = new T(std::forward<ArgsT>(args)...);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/Graph.hpp:223:5: note: candidate: ‘template<class T> poplar::Graph::ConnectionDesc::ConnectionDesc(poplar::StringRef, T, typename std::enable_if<isSimpleType<T>()>::type*)’
  223 |     ConnectionDesc(StringRef field, T v,
      |     ^~~~~~~~~~~~~~
/opt/poplar/include/poplar/Graph.hpp:223:5: note:   template argument deduction/substitution failed:
/opt/poplar/include/poplar/Graph.hpp: In substitution of ‘template<class T> poplar::Graph::ConnectionDesc::ConnectionDesc(poplar::StringRef, T, typename std::enable_if<isSimpleType<T>()>::type*) [with T = jlcxx::ArrayRef<poplar::Tensor>]’:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:124:16:   required from ‘jlcxx::BoxedValue<T> jlcxx::create(ArgsT&& ...) [with T = poplar::Graph::ConnectionDesc; bool finalize = true; ArgsT = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, jlcxx::ArrayRef<poplar::Tensor, 1>&}]’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:624:129:   required from ‘void jlcxx::Module::constructor(jl_datatype_t*, Extra ...) [with T = poplar::Graph::ConnectionDesc; ArgsT = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, jlcxx::ArrayRef<poplar::Tensor, 1>}; Extra = {}; jl_datatype_t = _jl_datatype_t]’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1101:7:   required from ‘jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, jlcxx::ArrayRef<poplar::Tensor, 1>}; Extra = {}; T = poplar::Graph::ConnectionDesc]’
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2071:73:   required from here
/opt/poplar/include/poplar/Graph.hpp:223:5: error: no type named ‘type’ in ‘struct std::enable_if<false, void>’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp: In instantiation of ‘jlcxx::BoxedValue<T> jlcxx::create(ArgsT&& ...) [with T = poplar::Graph::ConnectionDesc; bool finalize = true; ArgsT = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, jlcxx::ArrayRef<poplar::Tensor, 1>&}]’:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:624:129:   required from ‘void jlcxx::Module::constructor(jl_datatype_t*, Extra ...) [with T = poplar::Graph::ConnectionDesc; ArgsT = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, jlcxx::ArrayRef<poplar::Tensor, 1>}; Extra = {}; jl_datatype_t = _jl_datatype_t]’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1101:7:   required from ‘jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, jlcxx::ArrayRef<poplar::Tensor, 1>}; Extra = {}; T = poplar::Graph::ConnectionDesc]’
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2071:73:   required from here
/opt/poplar/include/poplar/Graph.hpp:218:5: note: candidate: ‘poplar::Graph::ConnectionDesc::ConnectionDesc(poplar::StringRef, poplar::ArrayRef<poplar::Tensor>)’
  218 |     ConnectionDesc(StringRef field, ArrayRef<Tensor> tsArr)
      |     ^~~~~~~~~~~~~~
/opt/poplar/include/poplar/Graph.hpp:218:54: note:   no known conversion for argument 2 from ‘jlcxx::ArrayRef<poplar::Tensor>’ to ‘poplar::ArrayRef<poplar::Tensor>’
  218 |     ConnectionDesc(StringRef field, ArrayRef<Tensor> tsArr)
      |                                     ~~~~~~~~~~~~~~~~~^~~~~
/opt/poplar/include/poplar/Graph.hpp:214:5: note: candidate: ‘poplar::Graph::ConnectionDesc::ConnectionDesc(poplar::StringRef, poplar::Tensor)’
  214 |     ConnectionDesc(StringRef field, Tensor t)
      |     ^~~~~~~~~~~~~~
/opt/poplar/include/poplar/Graph.hpp:214:44: note:   no known conversion for argument 2 from ‘jlcxx::ArrayRef<poplar::Tensor>’ to ‘poplar::Tensor’
  214 |     ConnectionDesc(StringRef field, Tensor t)
      |                                     ~~~~~~~^
/opt/poplar/include/poplar/Graph.hpp:193:9: note: candidate: ‘poplar::Graph::ConnectionDesc::ConnectionDesc(poplar::Graph::ConnectionDesc&&)’
  193 |   class ConnectionDesc {
      |         ^~~~~~~~~~~~~~
/opt/poplar/include/poplar/Graph.hpp:193:9: note:   candidate expects 1 argument, 2 provided
In file included from /root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/jlcxx.hpp:15,
                 from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:1:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp: In instantiation of ‘jlcxx::BoxedValue<T> jlcxx::create(ArgsT&& ...) [with T = poplar::Graph::ConnectionDesc; bool finalize = false; ArgsT = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, jlcxx::ArrayRef<poplar::Tensor, 1>&}]’:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:624:230:   required from ‘void jlcxx::Module::constructor(jl_datatype_t*, Extra ...) [with T = poplar::Graph::ConnectionDesc; ArgsT = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, jlcxx::ArrayRef<poplar::Tensor, 1>}; Extra = {}; jl_datatype_t = _jl_datatype_t]’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1101:7:   required from ‘jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, jlcxx::ArrayRef<poplar::Tensor, 1>}; Extra = {}; T = poplar::Graph::ConnectionDesc]’
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2071:73:   required from here
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:124:16: error: no matching function for call to ‘poplar::Graph::ConnectionDesc::ConnectionDesc(std::__cxx11::basic_string<char>&, jlcxx::ArrayRef<poplar::Tensor>&)’
  124 |   T* cpp_obj = new T(std::forward<ArgsT>(args)...);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp:8:
/opt/poplar/include/poplar/Graph.hpp:223:5: note: candidate: ‘template<class T> poplar::Graph::ConnectionDesc::ConnectionDesc(poplar::StringRef, T, typename std::enable_if<isSimpleType<T>()>::type*)’
  223 |     ConnectionDesc(StringRef field, T v,
      |     ^~~~~~~~~~~~~~
/opt/poplar/include/poplar/Graph.hpp:223:5: note:   template argument deduction/substitution failed:
/opt/poplar/include/poplar/Graph.hpp: In substitution of ‘template<class T> poplar::Graph::ConnectionDesc::ConnectionDesc(poplar::StringRef, T, typename std::enable_if<isSimpleType<T>()>::type*) [with T = jlcxx::ArrayRef<poplar::Tensor>]’:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:124:16:   required from ‘jlcxx::BoxedValue<T> jlcxx::create(ArgsT&& ...) [with T = poplar::Graph::ConnectionDesc; bool finalize = false; ArgsT = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, jlcxx::ArrayRef<poplar::Tensor, 1>&}]’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:624:230:   required from ‘void jlcxx::Module::constructor(jl_datatype_t*, Extra ...) [with T = poplar::Graph::ConnectionDesc; ArgsT = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, jlcxx::ArrayRef<poplar::Tensor, 1>}; Extra = {}; jl_datatype_t = _jl_datatype_t]’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1101:7:   required from ‘jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, jlcxx::ArrayRef<poplar::Tensor, 1>}; Extra = {}; T = poplar::Graph::ConnectionDesc]’
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2071:73:   required from here
/opt/poplar/include/poplar/Graph.hpp:223:5: error: no type named ‘type’ in ‘struct std::enable_if<false, void>’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp: In instantiation of ‘jlcxx::BoxedValue<T> jlcxx::create(ArgsT&& ...) [with T = poplar::Graph::ConnectionDesc; bool finalize = false; ArgsT = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, jlcxx::ArrayRef<poplar::Tensor, 1>&}]’:
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:624:230:   required from ‘void jlcxx::Module::constructor(jl_datatype_t*, Extra ...) [with T = poplar::Graph::ConnectionDesc; ArgsT = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, jlcxx::ArrayRef<poplar::Tensor, 1>}; Extra = {}; jl_datatype_t = _jl_datatype_t]’
/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include/jlcxx/module.hpp:1101:7:   required from ‘jlcxx::TypeWrapper<T>& jlcxx::TypeWrapper<T>::constructor(Extra ...) [with ArgsT = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, jlcxx::ArrayRef<poplar::Tensor, 1>}; Extra = {}; T = poplar::Graph::ConnectionDesc]’
/root/.julia/dev/IPUToolkit/deps/wrapper/gen_inline.cpp:2071:73:   required from here
/opt/poplar/include/poplar/Graph.hpp:218:5: note: candidate: ‘poplar::Graph::ConnectionDesc::ConnectionDesc(poplar::StringRef, poplar::ArrayRef<poplar::Tensor>)’
  218 |     ConnectionDesc(StringRef field, ArrayRef<Tensor> tsArr)
      |     ^~~~~~~~~~~~~~
/opt/poplar/include/poplar/Graph.hpp:218:54: note:   no known conversion for argument 2 from ‘jlcxx::ArrayRef<poplar::Tensor>’ to ‘poplar::ArrayRef<poplar::Tensor>’
  218 |     ConnectionDesc(StringRef field, ArrayRef<Tensor> tsArr)
      |                                     ~~~~~~~~~~~~~~~~~^~~~~
/opt/poplar/include/poplar/Graph.hpp:214:5: note: candidate: ‘poplar::Graph::ConnectionDesc::ConnectionDesc(poplar::StringRef, poplar::Tensor)’
  214 |     ConnectionDesc(StringRef field, Tensor t)
      |     ^~~~~~~~~~~~~~
/opt/poplar/include/poplar/Graph.hpp:214:44: note:   no known conversion for argument 2 from ‘jlcxx::ArrayRef<poplar::Tensor>’ to ‘poplar::Tensor’
  214 |     ConnectionDesc(StringRef field, Tensor t)
      |                                     ~~~~~~~^
/opt/poplar/include/poplar/Graph.hpp:193:9: note: candidate: ‘poplar::Graph::ConnectionDesc::ConnectionDesc(poplar::Graph::ConnectionDesc&&)’
  193 |   class ConnectionDesc {
      |         ^~~~~~~~~~~~~~
/opt/poplar/include/poplar/Graph.hpp:193:9: note:   candidate expects 1 argument, 2 provided
ERROR: LoadError: failed process: Process(`g++ -O0 -std=c++17 -fPIC -shared -I/home/julia-1.11.0-rc2/include/julia -I/root/.julia/artifacts/dee31c8c121f2be2dd7c7b2ec3d41b2be90cc8c7/include -I/root/.julia/dev/IPUToolkit/deps/wrapper -o /root/.julia/scratchspaces/92e0b95a-4011-435a-96f4-10064551ddbe/libpoplar/v1.11.0/libpoplar_julia.so /root/.julia/dev/IPUToolkit/deps/wrapper/template.cpp -lpopops -lpoplar`, ProcessExited(1)) [1]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants