📄 gflops.br
字号:
// sum.br// The absolute minimal test. It tests// using a kernel to sum both 1-dimensional// and two-dimensional input streams.#include <stdio.h>void resetTimer(void);float getTimer(void);kernel void gflop( float a<>, out float c<> ) { c = a; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c;}kernel void gflop2( float2 a<>, out float2 c<> ) { c = a; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c;}kernel void gflop3( float3 a<>, out float3 c<> ) { c = a; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c;}kernel void gflop4( float4 a<>, out float4 c<> ) { c = a; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c; c += a*c;}float input_a[1000][1000];float output_c[1000][1000];float2 input_a2[1000][1000];float2 output_c2[1000][1000];float3 input_a3[1000][1000];float3 output_c3[1000][1000];float4 input_a4[1000][1000];float4 output_c4[1000][1000];main() { float msec; int i, j; { float a< 1000, 1000 >; float c< 1000, 1000 >; // initialize data for( i = 0; i < 1000; i++ ) for( j = 0; j < 1000; j++ ) input_a[i][j] = (float) i*1000+j; resetTimer(); streamRead( a, input_a ); fprintf (stderr, "float1: "); fflush(stderr); for (i=0; i<1000; i++) { gflop(a, c); if (!(i%100)) { fprintf (stderr, "."); fflush(stderr); } } streamWrite( c, output_c ); msec = getTimer(); fprintf (stderr, " %f\n", msec); } { float2 a< 1000, 1000 >; float2 c< 1000, 1000 >; resetTimer(); streamRead( a, input_a2 ); fprintf (stderr, "float2: "); fflush(stderr); for (i=0; i<1000; i++) { gflop2(a, c); if (!(i%100)) { fprintf (stderr, "."); fflush(stderr); } } streamWrite( c, output_c2 ); msec = getTimer(); fprintf (stderr, " %f\n", msec); } { float3 a< 1000, 1000 >; float3 c< 1000, 1000 >; resetTimer(); streamRead( a, input_a3 ); fprintf (stderr, "float3: "); fflush(stderr); for (i=0; i<1000; i++) { gflop3(a, c); if (!(i%100)) { fprintf (stderr, "."); fflush(stderr); } } streamWrite( c, output_c3 ); msec = getTimer(); fprintf (stderr, " %f\n", msec); } { float4 a< 1000, 1000 >; float4 c< 1000, 1000 >; resetTimer(); streamRead( a, input_a4 ); fprintf (stderr, "float4: "); fflush(stderr); for (i=0; i<1000; i++) { gflop4(a, c); if (!(i%100)) { fprintf (stderr, "."); fflush(stderr); } } streamWrite( c, output_c4 ); msec = getTimer(); fprintf (stderr, " %f\n", msec); } { float a1< 1000, 1000 >; float c1< 1000, 1000 >; float4 a4< 1000, 1000 >; float4 c4< 1000, 1000 >; resetTimer(); streamRead( a1, input_a ); streamRead( a4, input_a4 ); fprintf (stderr, "float1 & float4: "); fflush(stderr); for (i=0; i<500; i++) { gflop(a1, c1); gflop4(a4, c4); if (!(i%50)) { fprintf (stderr, "."); fflush(stderr); } } streamWrite( c1, output_c ); streamWrite( c4, output_c4 ); msec = getTimer(); fprintf (stderr, " %f\n", msec); } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -