SEXP setKernelArgMem(SEXP sKernel, SEXP sIndex, SEXP sBuffer){
    Rcpp::XPtr<cl_kernel> kernel(sKernel);
    int argNr = Rcpp::as<int>(sIndex);
    Rcpp::XPtr<cl_mem> memObject(sBuffer);
    
    cl_int ciErr1 = clSetKernelArg(*kernel, argNr, sizeof(cl_mem), memObject);
    printOnError(ciErr1,"ROpenCL::setKernelArgMem()");
    Rcpp::XPtr<cl_kernel> tempXPtr(kernel);
    return tempXPtr;
}
Exemplo n.º 2
0
SEXP setKernelArgMem(SEXP sKernel, SEXP sIndex, SEXP sBuffer){
    Rcpp::XPtr<cl_kernel> kernel(sKernel);
    int argNr = Rcpp::as<int>(sIndex);
    Rcpp::XPtr<cl_mem> memObject(sBuffer);
    
    cl_int ciErr1 = clSetKernelArg(*kernel, argNr, sizeof(cl_mem), memObject);
    if (ciErr1 != CL_SUCCESS){ std::cout << "error setting kernel arguments\n"; };
    if (ciErr1 == CL_INVALID_KERNEL){std::cout << "invalid kernel";};
    if (ciErr1 == CL_INVALID_ARG_INDEX){std::cout << "invalid arg index";};
    if (ciErr1 == CL_INVALID_ARG_VALUE){std::cout << "invalid arg value";};
    if (ciErr1 == CL_INVALID_MEM_OBJECT){std::cout << "invalid mem object";};
    if (ciErr1 == CL_INVALID_SAMPLER){std::cout << "invalid sampler";};
    if (ciErr1 == CL_INVALID_ARG_SIZE){std::cout << "invalid arg size";};
    if (ciErr1 == CL_OUT_OF_RESOURCES){std::cout << "OOR";};
    if (ciErr1 == CL_OUT_OF_HOST_MEMORY){std::cout << "OOHM";};
    Rcpp::XPtr<cl_kernel> tempXPtr(kernel);
    return tempXPtr;
}