Exemplo n.º 1
0
Map initRoom() {
  Map m = map_new();
  unsigned short tileMap[] = {
    2, 2, 2, 2, 2, 2, 2, 2,
    2, 2, 2, 2, 2, 2, 2, 2,
    2, 2, 2, 2, 2, 2, 2, 2,
    2, 2, 2, 2, 2, 2, 2, 2,
    2, 2, 2, 2, 2, 2, 2, 2,
    2, 2, 2, 2, 2, 2, 2, 2,
    2, 2, 2, 2, 2, 2, 2, 2,
    2, 2, 2, 2, 2, 2, 2, 2,
    
    2, 2, 2, 2, 2, 2, 2, 2,
    2, 0, 0, 0, 0, 0, 0, 2,
    2, 0, 0, 0, 0, 0, 0, 2,
    2, 0, 0, 0, 0, 0, 0, 2,
    2, 0, 0, 0, 0, 0, 0, 2,
    2, 0, 0, 0, 0, 0, 0, 2,
    2, 0, 0, 0, 0, 0, 0, 2,
    2, 2, 2, 2, 2, 2, 2, 2,    
    
    2, 2, 2, 2, 2, 2, 2, 2,
    2, 0, 0, 0, 0, 0, 0, 2,
    2, 0, 0, 0, 0, 0, 0, 2,
    2, 0, 0, 0, 0, 0, 0, 2,
    2, 0, 0, 0, 0, 0, 0, 2,
    2, 0, 0, 0, 0, 0, 0, 2,
    2, 0, 0, 0, 0, 0, 0, 2,
    2, 0, 0, 2, 2, 2, 2, 2,    
    
    2, 2, 2, 2, 2, 2, 2, 2,
    2, 1, 1, 1, 1, 1, 1, 1,
    2, 1, 1, 1, 1, 1, 1, 1,
    2, 1, 1, 2, 2, 1, 1, 2,
    2, 1, 1, 2, 2, 1, 1, 2,
    2, 1, 1, 1, 1, 1, 1, 2,
    2, 1, 1, 1, 1, 1, 1, 2,
    2, 1, 1, 2, 1, 1, 2, 2   
    };
  m = map_init(m, 
    "cage", 
    (mapVec){8, 8, 4}, 
    tileMap,
    3
  ); 
  Tile floorTile = tile_init(
    tile_new(), 
    0
  );
  Tile wallTile = tile_init(
    tile_new(), 
    3
  );
  map_add_tile(m, floorTile);
  map_add_tile(m, wallTile);
  return m;
}
Exemplo n.º 2
0
void partition (inspector_t* insp)
{
  // aliases
  insp_strategy strategy = insp->strategy;
  map_list* meshMaps = insp->meshMaps;
  map_list* partitionings = insp->partitionings;
  int tileSize = insp->avgTileSize;
  int prefetchHalo = insp->prefetchHalo;
  loop_list* loops = insp->loops;
  int nLoops = loops->size();
  int seed = insp->seed;
  loop_t* seedLoop = insp->loops->at(seed);
  set_t* seedLoopSet = seedLoop->set;
  int setSize = seedLoopSet->size;
  int nThreads = insp->nThreads;

  // partition the seed loop iteration space
  int* indMap = NULL;
  int nCore, nExec, nNonExec;
  if (partitionings) {
    indMap = inherit (seedLoop, tileSize, partitionings, &nCore, &nExec, &nNonExec, nThreads);
    insp->partitioningMode = "inherited";
  }
#ifdef SLOPE_METIS
  if (! indMap && meshMaps) {
    indMap = metis (seedLoop, tileSize, meshMaps, &nCore, &nExec, &nNonExec, nThreads);
    insp->partitioningMode = "metis";
  }
#endif
  if (! indMap) {
    indMap = chunk (seedLoop, tileSize, &nCore, &nExec, &nNonExec, nThreads);
    insp->partitioningMode = "chunk";
  }

  // initialize tiles:
  // ... start with creating as many empty tiles as needed ...
  int t;
  tile_list* tiles = new tile_list (nCore + nExec + nNonExec);
  for (t = 0; t < nCore; t++) {
    tiles->at(t) = tile_init (nLoops, LOCAL, prefetchHalo);
  }
  for (; t < nCore + nExec; t++) {
    tiles->at(t) = tile_init (nLoops, EXEC_HALO, prefetchHalo);
  }
  for (; t < nCore + nExec + nNonExec; t++) {
    tiles->at(t) = tile_init (nLoops, NON_EXEC_HALO, prefetchHalo);
  }
  // ... explicitly track the tile region (core, exec_halo, and non_exec_halo) ...
  set_t* tileRegions = set("tiles", nCore, nExec, nNonExec);
  // ... and, finally, map the partitioned seed loop to tiles
  assign_loop (seedLoop, loops, tiles, indMap, SEED);

  insp->tileRegions = tileRegions;
  insp->iter2tile = map ("i2t", set_cpy(seedLoopSet), set_cpy(tileRegions), indMap, setSize);
  insp->tiles = tiles;
}
Exemplo n.º 3
0
void grid_init(void)
{
  unsigned char i;
  unsigned char j;

  for(i=0; i<width; i++) {
    for(j=0; j<width; j++) {
      tile *tile = &grid[i][j];
      tile_init(tile, j, i, 0);
    }
  }

  tile_init(&tile_null, 0, 0, 0);

}
Exemplo n.º 4
0
int 
_aoi_new(lua_State *L) {
	int realwidth = luaL_checkinteger(L, 1);
	int realhigh = luaL_checkinteger(L, 2);
	int tile_len = luaL_checkinteger(L, 3);

	int max_x_index = realwidth / tile_len - 1;
	int max_y_index = realhigh / tile_len - 1;

	int width = (max_x_index + 1) * tile_len;
	int high = (max_y_index + 1) * tile_len;

	struct aoi_context *aoictx = malloc(sizeof(*aoictx));
	memset(aoictx,0,sizeof(*aoictx));

	aoictx->pool = malloc(sizeof(*aoictx->pool));
	memset(aoictx->pool,0,sizeof(*aoictx->pool));

	aoictx->map.realwidth = realwidth;
	aoictx->map.realhigh = realhigh;
	aoictx->map.width = width;
	aoictx->map.high = high;
	aoictx->map.max_x_index = max_x_index;
	aoictx->map.max_y_index = max_y_index;
	aoictx->map.tile_len = tile_len;   //tile length
	aoictx->map.tile_sz = (max_x_index + 1) * (max_y_index + 1);   //amount of tiles in map
	
	tile_init(&aoictx->map);

	lua_pushlightuserdata(L, aoictx);
	return 1;
}
Exemplo n.º 5
0
/**************************************************************************
...
**************************************************************************/
void handle_map_info(struct packet_map_info *pinfo)
{
  int x, y;

  map.xsize=pinfo->xsize;
  map.ysize=pinfo->ysize;
  map.is_earth=pinfo->is_earth;

  if(!(map.tiles=(struct tile*)malloc(map.xsize*map.ysize*
				      sizeof(struct tile)))) {
    log(LOG_FATAL, "malloc failed in handle_map_info");
    exit(1);
  }
  for(y=0; y<map.ysize; y++)
    for(x=0; x<map.xsize; x++)
      tile_init(map_get_tile(x, y));

  set_overview_dimensions(map.xsize, map.ysize);
}