Как правильно переводить время вычислений на одном устройстве на другое? - PullRequest
1 голос
/ 18 октября 2019

Я работаю над Генетическим Алгоритмом, написанным на python для моей магистерской диссертации. Компания-участник хочет, чтобы время вычислений составляло не более 1 минуты. GA будет реализован на планшете Windows. Разработка GA сделана на MacBook Air 2013 года. Для оценки я хочу выполнить GA 100 раз на AWS / AZURE / .. для различных настроек параметров и различных ситуаций. Существует ли такая мера, как скорость процессора / терафлопс / ..., используемая для перевода времени вычислений моего Macbook или облачного сервиса в приблизительное время вычислений на планшете Windows. Конечно, ценятся и другие методы.

Я знаю, что компьютер сложен, и многие аспекты влияют на время вычислений. Я думаю, что самое простое решение может быть что-то вроде:

COMPUTATION_TIME_ON_MACBOOK = 50. #In seconds
SOME_SPEED_MEASURE_OF_MACBOOK = 600
SOME_SPEED_MEASURE_OF_WINDOWS_TABLET = 400

COMPUATION_TIME_ON_WINDOWS_TABLET = COMPUTATION_TIME_ON_MACBOOK * SOME_SPEED_MEASURE_OF_MACBOOK / SOME_SPEED_MEASURE_OF_WINDOWS_TABLET

print(COMPUATION_TIME_ON_WINDOWS_TABLET)
75 #An approximation of the computation time on the windows tablet in seconds

1 Ответ

0 голосов
/ 28 октября 2019

Что вам нужно сделать, это создать модель производительности с параметрами, которые, как вы предполагаете, будут достаточными - частота процессора, частота DRAM, скорость чтения и записи SDD / HDD, пропускная способность сети, пропускная способность и задержка и т. Д. - и затем запуск длянесколько аппаратных конфигураций. Когда у вас есть данные, вы можете найти коэффициенты, подгоняя вашу модель к результатам. Если вы найдете параметры, которые хорошо подходят, то вы можете использовать это. В противном случае вам может потребоваться настроить модель.

Например, если частота процессора равна X, частота DRAM равна Y, значение чтения / записи SDD равно Z, нет сети или что-либо еще, ваша модель может выглядеть следующим образом:

T(n) = (A/X +B/Y + CZ)n

Я бы порекомендовал вам выбрать один репрезентативный экземпляр проблемы на каждую итерацию, поэтому установите фиксированное значение n, а затем посмотрите, будут ли параметры изменяться и как функция от n. Удачи!

...