Tinkering with python wrapper
This commit is contained in:
@@ -86,7 +86,7 @@ namespace detail
|
||||
}
|
||||
|
||||
std::shared_ptr<isc::array>
|
||||
ndarray_to_iscarray(const np::ndarray& array, const isc::driver::Context& ctx)
|
||||
ndarray_to_iscarray(const np::ndarray& array, isc::driver::Context const & ctx)
|
||||
{
|
||||
|
||||
int d = array.get_nd();
|
||||
@@ -107,17 +107,17 @@ namespace detail
|
||||
|
||||
|
||||
|
||||
std::shared_ptr<isc::array> create_array(bp::object const & obj, bp::object odtype, isc::driver::Context context)
|
||||
std::shared_ptr<isc::array> create_array(bp::object const & obj, bp::object odtype, isc::driver::Context const & context)
|
||||
{
|
||||
return ndarray_to_iscarray(np::from_object(obj, to_np_dtype(tools::extract_dtype(odtype))), context);
|
||||
}
|
||||
|
||||
std::shared_ptr<isc::array> create_zeros_array(isc::int_t M, isc::int_t N, bp::object odtype, isc::driver::Context context)
|
||||
std::shared_ptr<isc::array> create_zeros_array(isc::int_t M, isc::int_t N, bp::object odtype, isc::driver::Context const & context)
|
||||
{
|
||||
return std::shared_ptr<isc::array>(new isc::array(isc::zeros(M, N, tools::extract_dtype(odtype), context)));
|
||||
}
|
||||
|
||||
std::shared_ptr<isc::array> create_empty_array(bp::object sizes, bp::object odtype, isc::driver::Context context)
|
||||
std::shared_ptr<isc::array> create_empty_array(bp::object sizes, bp::object odtype, isc::driver::Context const & context)
|
||||
{
|
||||
typedef std::shared_ptr<isc::array> result_type;
|
||||
|
||||
@@ -269,7 +269,7 @@ void export_core()
|
||||
bp::class_<isc::array,
|
||||
std::shared_ptr<isc::array> >
|
||||
( "array", bp::no_init)
|
||||
.def("__init__", bp::make_constructor(detail::create_array, bp::default_call_policies(), (bp::arg("obj"), bp::arg("dtype") = bp::scope().attr("float32"), bp::arg("context")=isc::driver::queues.default_context())))
|
||||
.def("__init__", bp::make_constructor(detail::create_array, bp::default_call_policies(), (bp::arg("obj"), bp::arg("dtype") = bp::scope().attr("float32"), bp::arg("context")=isc::driver::backend::default_context())))
|
||||
.def(bp::init<isc::array_expression>())
|
||||
.add_property("dtype", &isc::array::dtype)
|
||||
.add_property("context", bp::make_function(&isc::array::context, bp::return_internal_reference<>()))
|
||||
@@ -292,11 +292,11 @@ void export_core()
|
||||
|
||||
bp::class_<isc::scalar, bp::bases<isc::array> >
|
||||
("scalar", bp::no_init)
|
||||
.def("__init__", bp::make_constructor(detail::construct_scalar, bp::default_call_policies(), (bp::arg(""), bp::arg("context")=isc::driver::queues.default_context())))
|
||||
.def("__init__", bp::make_constructor(detail::construct_scalar, bp::default_call_policies(), (bp::arg(""), bp::arg("context")=isc::driver::backend::default_context())))
|
||||
;
|
||||
|
||||
//Other numpy-like initializers
|
||||
bp::def("empty", &detail::create_empty_array, (bp::arg("shape"), bp::arg("dtype") = bp::scope().attr("float32"), bp::arg("context")=isc::driver::queues.default_context()));
|
||||
bp::def("empty", &detail::create_empty_array, (bp::arg("shape"), bp::arg("dtype") = bp::scope().attr("float32"), bp::arg("context")=isc::driver::backend::default_context()));
|
||||
|
||||
//Assign
|
||||
bp::def("assign", static_cast<isc::array_expression (*)(isc::array const &, isc::array const &)>(&isc::assign));\
|
||||
@@ -320,7 +320,7 @@ void export_core()
|
||||
bp::def(#name, static_cast<isc::array_expression (*)(isc::array const &)>(&isc::name));\
|
||||
bp::def(#name, static_cast<isc::array_expression (*)(isc::array_expression const &)>(&isc::name));
|
||||
|
||||
bp::def("zeros", &detail::create_zeros_array, (bp::arg("shape"), bp::arg("dtype") = bp::scope().attr("float32"), bp::arg("context")=isc::driver::queues.default_context()));
|
||||
bp::def("zeros", &detail::create_zeros_array, (bp::arg("shape"), bp::arg("dtype") = bp::scope().attr("float32"), bp::arg("context")=isc::driver::backend::default_context()));
|
||||
|
||||
MAP_FUNCTION(abs)
|
||||
MAP_FUNCTION(acos)
|
||||
|
@@ -1,7 +1,6 @@
|
||||
#include <memory>
|
||||
|
||||
#include <boost/python/suite/indexing/vector_indexing_suite.hpp>
|
||||
#include <boost/python/suite/indexing/map_indexing_suite.hpp>
|
||||
|
||||
#include "isaac/model/model.h"
|
||||
#include "isaac/symbolic/execute.h"
|
||||
@@ -23,16 +22,33 @@ namespace detail
|
||||
|
||||
bp::list get_platforms()
|
||||
{
|
||||
std::vector<isc::driver::Platform> platforms(isc::driver::Platform::get());
|
||||
std::vector<isc::driver::Platform> platforms;
|
||||
isc::driver::backend::platforms(platforms);
|
||||
return tools::to_list(platforms.begin(), platforms.end());
|
||||
}
|
||||
|
||||
bp::list get_devices(isc::driver::Platform const & platform)
|
||||
{
|
||||
std::vector<isc::driver::Device> devices(platform.devices());
|
||||
std::vector<isc::driver::Device> devices;
|
||||
platform.devices(devices);
|
||||
return tools::to_list(devices.begin(), devices.end());
|
||||
}
|
||||
|
||||
bp::list get_queues(isc::driver::Context const & context)
|
||||
{
|
||||
std::vector<isc::driver::CommandQueue*> queues;
|
||||
isc::driver::backend::queues(context, queues);
|
||||
bp::list res;
|
||||
for(isc::driver::CommandQueue* queue:queues)
|
||||
res.append(*queue);
|
||||
return res;
|
||||
}
|
||||
|
||||
std::shared_ptr< isc::driver::CommandQueue> create_queue(isc::driver::Context const & context, isc::driver::Device const & device)
|
||||
{
|
||||
return std::shared_ptr<isc::driver::CommandQueue>(new isc::driver::CommandQueue(context, device));
|
||||
}
|
||||
|
||||
struct model_map_indexing
|
||||
{
|
||||
static isc::model& get_item(isc::model_map_t& container, bp::tuple i_)
|
||||
@@ -144,13 +160,13 @@ void export_driver()
|
||||
.add_property("nv_compute_capability", &detail::nv_compute_capability)
|
||||
;
|
||||
|
||||
bp::class_<isc::driver::Context>("context", bp::no_init)
|
||||
bp::class_<isc::driver::Context, boost::noncopyable>("context", bp::no_init)
|
||||
.def("__init__", bp::make_constructor(&detail::make_context))
|
||||
.add_property("queues", bp::make_function(static_cast<std::vector<isc::driver::CommandQueue> & (*)(const isc::driver::Context&)>( [](const isc::driver::Context & ctx) -> std::vector<isc::driver::CommandQueue> & { return isc::driver::backend[ctx]; }) , bp::return_internal_reference<>()))
|
||||
.add_property("queues", &detail::get_queues)
|
||||
.add_property("backend", &isc::driver::Context::backend)
|
||||
;
|
||||
|
||||
bp::class_<isc::driver::CommandQueue>("command_queue", bp::init<isc::driver::Context, isc::driver::Device>())
|
||||
bp::class_<isc::driver::CommandQueue>("command_queue", bp::init<isc::driver::Context const &, isc::driver::Device const &>())
|
||||
.def("synchronize", &isc::driver::CommandQueue::synchronize)
|
||||
.add_property("models", bp::make_function(&isc::models, bp::return_internal_reference<>()))
|
||||
.add_property("device", bp::make_function(&isc::driver::CommandQueue::device, bp::return_internal_reference<>()))
|
||||
|
Reference in New Issue
Block a user