У меня есть C++ код, который вычисляет факториал типа ИНТ данных, добавление типа поплавка данных и времени выполнения каждой функции следующим образом:Как рассчитать GFLOP для funtion в C++-программе?
long Sample_C:: factorial(int n)
{
int counter;
long fact = 1;
for (int counter = 1; counter <= n; counter++)
{
fact = fact * counter;
}
Sleep(100);
return fact;
}
float Sample_C::add(float a, float b)
{
return a+b;
}
int main(){
Sample_C object;
clock_t start = clock();
object.factorial(6);
clock_t end = clock();
double time =(double)(end - start);// finding execution time of factorial()
cout<< time;
clock_t starts = clock();
object.add(1.1,5.5);
clock_t ends = clock();
double total_time = (double)(ends -starts);// finding execution time of add()
cout<< total_time;
return 0;
}
Теперь я хочу, чтобы иметь MESURE GFlops для функции «добавить» , Итак, любезно предложите, как я его окуриваю. Как, я совершенно новый для GFLOPs, любезно скажите мне, что мы можем иметь GFLOP, рассчитанные для функций, имеющих только типы данных foat? а также значение GFLOPs зависит от разных функций?
Если вы выполняете операцию 'add' миллион раз, проверяя время, которое требуется, вы должны выяснить, сколько операций можно выполнить за одну секунду. Однако будьте предупреждены, что это не значение FLOPS, которое вы получите, так как вы также включите время для вызова функции, а не только операцию '+'. –
Если вас интересует только операция '+', у меня возникнет соблазн написать сборку и быть очень конкретным относительно того, что вы на самом деле рассчитываете. Когда приходит ваш компилятор C++, он, вероятно, собирается оптимизировать вызов функции, если вы не укажете его иначе, но он также может оптимизировать операцию добавления. – ilent2
Вы уверены, что хотите оценить GFLOP для добавления функции или вас просто интересует измерение/оценка времени выполнения? – ilent2