const bool testTaskParallel()

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;
}