memory conservative GPU implementation added