Описание услуги
Я разрабатываю высокопроизводительные численные ядра на языке Futhark — это чисто функциональный дата-параллельный язык, который компилируется в CUDA и OpenCL. Если у вас есть горячий цикл, симуляция или большой объём операций над массивами, который упирается в процессор, я перепишу его так, чтобы он считался на видеокарте, и вам не придётся вручную писать ни строчки низкоуровневого кода для устройства. Futhark даёт сильные гарантии: никаких побочных эффектов, никаких сюрпризов с алиасингом, а компилятор сам сливает map, reduce, scan и сегментные операции в плотные ядра. Обычный порядок работы такой. Сначала я профилирую ваш текущий конвейер и нахожу участки, которые действительно параллельны. Затем выражаю их на Futhark через чисто функциональные комбинаторы, сохраняя читаемость и детерминированность. Я сравниваю результат с вашей базовой версией, подбираю размеры блоков и схемы доступа к памяти и повторяю, пока цифры не станут убедительными. В конце я встраиваю всё обратно в ваш стек: Futhark генерирует библиотеку на C, а я оборачиваю её так, чтобы вызывать из Python через ctypes или небольшое расширение, либо линкую прямо в хост-программу на C или C++. За годы работы я ускорял расчёт опционов методом Монте-Карло, фильтры изображений и сигналов, физические стенсилы, процедуры линейной алгебры и предобработку для машинного обучения. Вы получаете чистый исходник, скрипт сборки, набор тестов, сверяющих вывод GPU с эталоном, результаты замеров и короткую записку о том, как пересобрать и расширить код. Опишите задачу и целевое железо — и я оценю реальное ускорение ещё до старта.