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

📄 streamcopy.br

📁 用于GPU通用计算的编程语言BrookGPU 0.4
💻 BR
字号:
#include <stdio.h>#include <string.h>#include <assert.h>#include <math.h>kernel void copyKernel(float4 src<>, out float4 dst<>) {  dst = src;}void doCopy(float* src, float* dst, int dimx, int dimy) {    float4 srcStream<dimx, dimy>;  float4 dstStream<dimx, dimy>;    streamRead(srcStream, src);  copyKernel(srcStream, dstStream);  streamWrite(dstStream, dst);}int fequals(float a, float b) {    float TOLERANCE = 0.05f;    return (fabs(a-b) < TOLERANCE);}int main(int argc, char* argv[]) {  int i,j,k;  int verbose = 0;  int success;  int minx, maxx;  int miny, maxy;  int numElements;  float* src;  float* dst;  i=1;  if (i<argc && strcmp(argv[i], "-v")==0) {    i++;    verbose = 1;  }    if(i+4<argc) {    fprintf(stderr, "Too few commandline arguments.\n");    fprintf(stderr, "Usage: %s [-v] minx maxx miny maxy\n", argv[0]);    exit(1);  }    minx = atoi(argv[i]);  maxx = atoi(argv[i+1]);  miny = atoi(argv[i+2]);  maxy = atoi(argv[i+3]);  assert(minx!=0 && maxx!=0 && 	 miny!=0 && maxy!=0);  for (j=miny;j<=maxy;j++) {    for (i=minx;i<=maxx;i++) {      success = 1;      numElements = 4 * i * j;      src = (float*)malloc( sizeof(float) * numElements);      dst = (float*)malloc( sizeof(float) * numElements);            for (k=0;k<numElements;k++) {	/* keep elements small, prevent overflow */	src[k] = (float)(k % 100);	dst[k] = 0.0f;      }      doCopy(src, dst, i, j);      for (k=0;k<numElements;k++) {	if (!fequals(src[k], dst[k])) {	  if (verbose) 	    printf("[stream size %dx%d] pixel (%d,%d)[%d]: expected %f obtained %f\n",		    i, j, (k/4) % i, (k/4) / i, k%4, src[k], dst[k]);	  success = 0;	}      }            if (!success)	printf("stream size %dx%d failed.\n", i, j);	         }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -