В Раст экосистеме уже есть несколько неплохих реализаций аллокаторов GPU памяти: gpu-allocator и Vulkano[^1] основанные на свободных списках, а так же gpu-alloc, основанный (как я понял), на гибриде свободных списков и buddy.
Перечисленные решения являются аллокаторами общего назначения, и имеют свои сильные и слабые стороны. В своем решении я решил пойти по пути избыточной внутренней фрагментации в угоду скорости выделения памяти. Кроме того, моё решение немного более дружелюбно в случае многопоточного доступа. У моего аллокатора память разного типа может выделяться параллельно в разных потоках.
Данное решение рассчитано на вариант использования, при котором пользователь часто выделяет и освобождает не слишком большое количество не слишком большой памяти переменного размера, а так же, возможно, выделяет куски большого, но константого размера, и использу