⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gflops.br

📁 用于GPU通用计算的编程语言BrookGPU 0.4
💻 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 + -