gem5/splash2/codes/apps/volrend/map.C
Sanchayan Maity 2fcc51c2c1 Commit splash2 benchmark
While at it also add the libpthread static library amd m5op_x86
for matrix multiplication test code as well.

Note that the splash2 benchmark code does not comply with gem5
coding guidelines. Academic guys never seem to follow 80 columns
and no whitespace guideline :(.
2017-04-26 20:50:15 +05:30

137 lines
4.9 KiB
C

/*************************************************************************/
/* */
/* Copyright (c) 1994 Stanford University */
/* */
/* All rights reserved. */
/* */
/* Permission is given to use, copy, and modify this software for any */
/* non-commercial purpose as long as this copyright notice is not */
/* removed. All other uses, including redistribution in whole or in */
/* part, are forbidden without prior written permission. */
/* */
/* This software is provided with absolutely no warranty and no */
/* support. */
/* */
/*************************************************************************/
/******************************************************************************
* *
* map.c: Loads 3D density map. *
* *
******************************************************************************/
#include <cstring>
#include "incl.h"
/* The following declarations show the layout of the .den file. */
/* If changed, the version number must be incremented and code */
/* written to handle loading of both old and current versions. */
/* Version for new .den files: */
#define MAP_CUR_VERSION 1 /* Initial release */
short map_version; /* Version of this .den file */
short orig_min[NM], /* Dimensions of original data file */
orig_max[NM], /* (CT: from <file>.header file */
orig_len[NM]; /* ED: from <file>.mi file) */
short extr_min[NM], /* Portion of file extracted for this map */
extr_max[NM], /* (mins and maxes will be subset of */
extr_len[NM]; /* orig and lengths will be <= orig) */
short map_min[NM], /* Dimensions of this map */
map_max[NM], /* (mins will be 0 in this program and */
map_len[NM]; /* lens may be != extr if warps > 0) */
short map_warps; /* Number of warps since extraction */
/* (0 = none) */
int map_length; /* Total number of densities in map */
/* (= product of lens) */
DENSITY *map_address; /* Pointer to map */
/* End of layout of .den file. */
EXTERN_ENV
void Load_Map(filename)
char filename[];
{
char local_filename[FILENAME_STRING_SIZE];
int fd;
strcpy(local_filename,filename);
strcat(local_filename,".den");
fd = Open_File(local_filename);
Read_Shorts(fd,(unsigned char *)&map_version, (long)sizeof(map_version));
if (map_version != MAP_CUR_VERSION)
Error(" Can't load version %d file\n",map_version);
Read_Shorts(fd,(unsigned char *)orig_min,(long)sizeof(orig_min));
Read_Shorts(fd,(unsigned char *)orig_max,(long)sizeof(orig_max));
Read_Shorts(fd,(unsigned char *)orig_len,(long)sizeof(orig_len));
Read_Shorts(fd,(unsigned char *)extr_min,(long)sizeof(extr_min));
Read_Shorts(fd,(unsigned char *)extr_max,(long)sizeof(extr_max));
Read_Shorts(fd,(unsigned char *)extr_len,(long)sizeof(extr_len));
Read_Shorts(fd,(unsigned char *)map_min,(long)sizeof(map_min));
Read_Shorts(fd,(unsigned char *)map_max,(long)sizeof(map_max));
Read_Shorts(fd,(unsigned char *)map_len,(long)sizeof(map_len));
Read_Shorts(fd,(unsigned char *)&map_warps,(long)sizeof(map_warps));
Read_Longs(fd,(unsigned char *)&map_length,(long)sizeof(map_length));
Allocate_Map(&map_address,map_length);
printf(" Loading map from .den file...\n");
Read_Bytes(fd,(unsigned char *)map_address,(long)(map_length*sizeof(DENSITY)));
Close_File(fd);
}
void Allocate_Map(address, length)
DENSITY **address;
long length;
{
long i;
printf(" Allocating density map of %ld bytes...\n",
length*sizeof(DENSITY));
*address = (DENSITY *)NU_MALLOC(length*sizeof(DENSITY),0);
if (*address == NULL)
Error(" No space available for map.\n");
else
for (i=0; i<length; i++) *(*address+i) = 0;
}
void Deallocate_Map(address)
DENSITY **address;
{
printf(" Deallocating density map...\n");
/* G_FREE(*address); */
*address = NULL;
}