Files
triton/lib/cl/queues.cpp
2015-01-12 13:24:06 -05:00

49 lines
1.1 KiB
C++

#include "atidlas/cl/queues.h"
#include <assert.h>
namespace atidlas
{
namespace cl
{
void synchronize(cl::Context const & context)
{
std::vector<cl::CommandQueue> & q = queues[context];
for(std::vector<cl::CommandQueue>::iterator it = q.begin() ; it != q.end() ; ++it)
it->finish();
}
queues_t init_queues()
{
queues_t result;
std::vector<cl::Platform> platforms;
cl::Platform::get(&platforms);
for(std::vector<cl::Platform>::iterator it = platforms.begin() ; it != platforms.end() ; ++it)
{
std::vector<cl::Device> devices;
it->getDevices(CL_DEVICE_TYPE_ALL, &devices);
for(std::vector<cl::Device>::iterator itt = devices.begin() ; itt != devices.end() ; ++itt)
{
std::vector<cl::Device> current(1, *itt);
cl::Context context(current);
cl::CommandQueue queue(context, *itt);
result.insert(std::make_pair(context, std::vector<cl::CommandQueue>(1, queue)));
}
}
return result;
}
cl::Context default_context()
{ return queues.begin()->second.front().getInfo<CL_QUEUE_CONTEXT>(); }
queues_t queues = init_queues();
kernels_t kernels = kernels_t();
}
}