implementing with open cl