Реализация абстракции "куча" для аллокации маленьких массивов на GPGPU

В рамках проекта Brahma.FSharp разрабатывается транслятор из подмножества F# в OpenCL C. В ходе экспериментов было выяснено, что производительность выделения небольших массивов на видеокартах разных вендоров сильно различается. В частности, на картах от AMD выделение медленное и это сильно влияет на производительность некоторых прикладных алгоритмов. Чтобы исправить эту ситуацию, предлагается реализовать на стороне библиотеки свою абстракцию "куча для маленьких массивов". Для этого необходимо решить следующие задачи. * Реализовать абстракцию "куча для маленьких массивов" * Реализовать механизмы управления памятью в этой куче (выделение, чистка, возможно даже сборка мусора) * Провести экспериментальную оценку производительности полученного решения.

Требования к студенту
  • Хорошее знание языка программирования F# и стека .NET
  • Хорошее понимание принципов управления памятью: куча, стек, алгоритмы аллокации, сборка мусора
  • Базовые знания о графических ускорителях и разработке для них: OpenCL, Cuda, принципиальная архитектура GPGPU.
Уровень

2 курс, 3 курс


Руководитель

Григорьев Семен Вячеславович


Консультант

Grigorev Semyon


Источник

Кафедра системного программирования СПбГУ