現在、私はopenclを使用したオンラインで見つかったサンプルプログラムと比較するプロセスを時間を計ろうとしています。しかし、このプロセスに時間を掛けると、次のように非常に奇妙な値が得られます。time.hを使用した奇妙なCLOCKS_PER_SEC値
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <CL/cl.h>
#include <time.h>
int main(void) {
int n = 100000;
size_t bytes = n * sizeof(double);
double *h_a;
double *h_b;
double *h_c;
h_a = (double*)malloc(bytes);
h_b = (double*)malloc(bytes);
h_c = (double*)malloc(bytes);
int i;
for(i = 0; i < n; i++)
{
h_a[i] = sinf(i)*sinf(i);
h_b[i] = cosf(i)*cosf(i);
}
clock_t start = clock();
for(i = 0; i < n; i++)
h_c[i] = h_a[i] + h_b[i];
clock_t stop = clock();
double time = (stop - start)/CLOCKS_PER_SEC;
printf("Clocks per Second: %E\n", CLOCKS_PER_SEC);
printf("Clocks Taken: %E\n", stop - start);
printf("Time Taken: %E\n", time);
free(h_a);
free(h_b);
free(h_c);
system("PAUSE");
return 0;
}
結果:そこにすべてのための非常に奇妙な値を与える
C:\MinGW\Work>systesttime
Clocks per Second: 1.788208E-307
Clocks Taken: 1.788208E-307
Time Taken: 0.000000E+000
Press any key to continue . . .
その。私はそれが約1,000,000でなければならないことを理解しており、なぜこれを行っているのかわかりません。これは、等しく関連していたすべてに対して6E + 256の値を与えるのに使用されていました。
あなたは 'のprintf( "第二あたりのクロック:%Eの\ nを"、CLOCKS_PER_SEC)にあなたの例のコードを減らすことができます;'、あなたに警告を与える**フォーマットは '%E' の引数を期待引数doubleは型double型ですが、引数2型はlong int型です。-Werror = format =] ** http://ideone.com/EYeVvg – mch