[driver] adding opencl in the driver API

This commit is contained in:
Philippe Tillet
2019-03-18 23:12:14 -07:00
parent b73c3bdd25
commit 02775a226e
41 changed files with 28700 additions and 398 deletions

View File

@@ -33,28 +33,46 @@ namespace triton
namespace driver
{
buffer::buffer(driver::context const & context, size_t size) : context_(context)
{
ContextSwitcher ctx_switch(context_);
//
buffer::buffer(driver::context* ctx, CUdeviceptr cu, bool take_ownership)
: polymorphic_resource(cu, take_ownership), context_(ctx) { }
buffer::buffer(driver::context* ctx, cl_mem cl, bool take_ownership)
: polymorphic_resource(cl, take_ownership), context_(ctx) { }
driver::context* buffer::context() {
return context_;
}
//
ocl_buffer::ocl_buffer(driver::context* context, size_t size)
: buffer(context, cl_mem(), true){
cl_int err;
dispatch::clCreateBuffer(*context->cl(), CL_MEM_READ_WRITE, size, NULL, &err);
}
//
cu_buffer::cu_buffer(driver::context* context, size_t size)
: buffer(context, CUdeviceptr(), true) {
cu_context::context_switcher ctx_switch(*context_);
dispatch::cuMemAlloc(&*cu_, size);
}
buffer::buffer(driver::context const & context, CUdeviceptr cu, bool take_ownership):
context_(context), cu_(cu, take_ownership)
{ }
cu_buffer::cu_buffer(driver::context* context, CUdeviceptr cu, bool take_ownership)
: buffer(context, cu, take_ownership){
}
void buffer::set_zero(stream const & queue, size_t size)
void cu_buffer::set_zero(cu_stream const & queue, size_t size)
{
ContextSwitcher ctx_switch(context_);
dispatch::cuMemsetD8Async(*cu_, 0, size, queue);
cu_context::context_switcher ctx_switch(*context_);
dispatch::cuMemsetD8Async(*cu_, 0, size, *queue.cu());
}
handle<CUdeviceptr> const & buffer::cu() const
{ return cu_; }
handle<CUdeviceptr> & buffer::cu()
{ return cu_; }
}
}