now using direct buffers for allreduce