Переписать программу на GPU

1 000 руб. за проект
07 декабря 2019, 17:09 • 5 откликов • 52 просмотра
Реализовать вычисление энергии электростатического взаимодействия белковой молекулы. Расчеты нужно производить по формуле из вложений, где:
qi - заряд i-того атома;
r - расстояние между центрами атомов;
C = 1389.38757;
fij = 0, если атомы разделены меньше, чем тремя связями;
fij = 0.5, если атомы разделены тремя связями;
fij = 1, если атомы разделены более, чем тремя связями;
fij = 1, если атомы не связаны.

Итоговый код должен быть написан на CUDA/OpenCL, быть максимально оптимизированным и запускаться одной командой из терминала.

Входные данные:
  1. Координаты атомов в файле atoms.txt в формате "x1 y1 z1 x2 y2 z2" (пространство трёхмерное).
  2. Заряды атомов в файле charges.txt.
  3. Индексы связанных атомов в файле bonds.txt. Пример: "1 4 2 6" означает, что атом 1 связан с атомом 4 и атом 2 связан с атомом 6. Нумерация начинается с нуля.
Итоговое значение энергии приблизительно равно -64470.098.

На данный момент имеется программа, вычисляющая на CPU (C++) и неправильно работающая программа на OpenCL (выдаёт 0). Требуется исправить её или написать с нуля на CUDA/OpenCL. Предпочтительнее написать именно на CUDA.
Программу на CPU кину непосредственно исполнителю данного заказа.

Файлы