in modules/opencl/opencl-test.cpp [162:224]
const bool testTaskParallel(const OpenCLContext::DeviceType dev) {
const gc_scoped_pool pool;
OpenCLContext cl(dev);
if (!devices(cl) != 0)
return true;
{
istringstream is(dev == OpenCLContext::CPU? testFloatsCPU : testFloatsGPU);
failable<OpenCLProgram> clprog = readProgram("kernel.cl", is, cl);
assert(hasContent(clprog));
const value exp = mklist<value>("float_add", 2, 3);
const failable<value> r = evalKernel(createKernel(exp, content(clprog)), exp, cl);
assert(hasContent(r));
assert(content(r) == value(5));
}
if (true) return true;
{
istringstream is(dev == OpenCLContext::CPU? testFloatsCPU : testFloatsGPU);
failable<OpenCLProgram> clprog = readProgram("kernel.cl", is, cl);
assert(hasContent(clprog));
const value exp = mklist<value>("add", 2, 3);
const failable<value> r = evalKernel(createKernel(exp, content(clprog)), exp, 1, value::Number, 1, cl);
assert(hasContent(r));
assert(content(r) == value(5));
}
{
istringstream is(dev == OpenCLContext::CPU? testBoolsCPU : testBoolsGPU);
failable<OpenCLProgram> clprog = readProgram("kernel.cl", is, cl);
assert(hasContent(clprog));
const value exp = mklist<value>("int_or", true, false);
const failable<value> r = evalKernel(createKernel(exp, content(clprog)), exp, cl);
assert(hasContent(r));
assert(content(r) == trueValue);
const value exp2 = mklist<value>("int_or", false, false);
const failable<value> r2 = evalKernel(createKernel(exp2, content(clprog)), exp2, cl);
assert(hasContent(r2));
assert(content(r2) == falseValue);
}
{
istringstream is(dev == OpenCLContext::CPU? testCharsCPU : testCharsGPU);
failable<OpenCLProgram> clprog = readProgram("kernel.cl", is, cl);
assert(hasContent(clprog));
const value exp = mklist<value>("char128", 60, string("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "), 60, string("World World World World World World World World World World "));
const failable<value> r = evalKernel(createKernel(exp, content(clprog)), exp, cl);
assert(hasContent(r));
assert(content(r) == value(string("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello World World World World World World World World World World ")));
}
{
istringstream is(dev == OpenCLContext::CPU? testCharsCPU : testCharsGPU);
failable<OpenCLProgram> clprog = readProgram("kernel.cl", is, cl);
assert(hasContent(clprog));
const value exp = mklist<value>("add", 60, string("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello "), 60, string("World World World World World World World World World World "));
const failable<value> r = evalKernel(createKernel(exp, content(clprog)), exp, 1, value::String, 128, cl);
assert(hasContent(r));
assert(content(r) == value(string("Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello World World World World World World World World World World ")));
}
return true;
}