Опис послуги
ПерекладЯ розробляю високопродуктивний код на мові Chapel, яка створювалася спеціально для продуктивних наукових обчислень у великих масштабах. Якщо ваша модель, розв'язувач або конвеєр обробки даних упирається в одне ядро, я переношу розрахунок на всі доступні ядра, а потім і на цілий кластер. Основне моє завдання — перетворити звичайний числовий код в програму, яка тримає тисячі потоків зайнятими, не змушуючи вас переписувати все вручну. Я використовую паралельні цикли forall, розподілені домени та модель locale, щоб розкласти масиви по вузлам, а там, де алгоритму потрібен більш тонкий контроль, застосовую задачний паралелізм через begin, cobegin та синхронізуючі змінні. Типові замовлення, які я беру: перенесення послідовного ядра на C або Fortran у Chapel, розпаралелювання шаблонних та матричних операцій, побудову розподілених хеш-таблиць та обходів графів, а також профілювання причин, з яких розрахунок простоює на обміні даними, а не на арифметиці. Я все вимірюю. Перш ніж назвати роботу завершеною, я показую криві сильної та слабої масштабованості, щоб ви бачили поведінку коду при зростанні числа ядер та розміру завдання, і пояснюю, звідки беруться обмеження. У результат входять чистий прокоментований вихідник, рецепт збірки під ваш компілятор та запускач, короткий звіт про масштабування та споживання памяті, а також інструкції по запуску на вашому залізці або планувальнику. Я робив код на Chapel для методів Монте-Карло, задач N тіл, кроків обчислювальної гідродинаміки та великої розрідженої лінійної алгебри. Спочатку коректність, потім швидкість: я додаю відтворювані тести та звіряю результати з довіреним еталоном ще до тюнінгу. Назвіть число вузлів, тип з'єднання та ядро, яке гальмує, і я дам чесну оцінку прискорення та трудозатрат.