A CPU and GPU heterogeneous implementation of matrix multiplication by using OpenCL