На первой странице руководства пользователя Thrust приведен пример, позволяющий сделать именно это:
thrust::host_vector<int> hv = populate(); // make data on host
thrust::device_vector<int> dv(hv.begin(), hv.end()); // copy to device
thrust::sort(dv.begin(), dv.end()); // sort on device
thrust::copy(dv.begin(), dv.end(), hv.begin()); // copy back
Вместо int
вы можете использовать собственную структуру POD и передать компаратор валгоритм сортировки.