/*public static*/
Geometry::AutoPtr
DouglasPeuckerSimplifier::simplify(const Geometry* geom,
		double tolerance)
{
	DouglasPeuckerSimplifier tss(geom);
	tss.setDistanceTolerance(tolerance);
	return tss.getResultGeometry();
}
Esempio n. 2
0
File: tss.cpp Progetto: eladraz/XDK
TaskStateSegment32* TaskStateSegment::getTSS32(uint16 selector)
{
    Selector sel(selector);
    CHECK(sel.isGDTselector());
    GDTR gdt;
    SegmentDescriptor tss(gdt, sel);
    CHECK(tss.isSystem());
    CHECK((tss.getSystemSegmentType() == SegmentDescriptor::SEGMENT_TSS32_FREE) ||
          (tss.getSystemSegmentType() == SegmentDescriptor::SEGMENT_TSS32_BUSY));
    CHECK(tss.getSegmentLimit() >= sizeof(TaskStateSegment32));
    return (TaskStateSegment32*)getPtr(tss.getOffset());
}
Esempio n. 3
0
int main(int argc, char *argv[])
{
  int tcount,
      count,
      lastsize,
      size;
  if ((argc > 4) || (argc < 3)) {
     FPRINTF(STDOUTFILE "\n\n   Usage: %s  <# species> <# processors> [<min chunk size>]\n\n", argv[0]);
     exit(1);
  }

  chunksize = 1;

  switch(argc) {
    case 4:
	  chunksize = atoi(argv[3]);
    case 3:
          n = numquarts(atoi(argv[1]));
          p = atoi(argv[2]);
  }

  FPRINTF(STDOUTFILE "proc=%6d\n", p);
  FPRINTF(STDOUTFILE "task=%6d\n", n);

  initsched(&testsched, n, p, chunksize);
  printsched(testsched);

  count=1; tcount = 0;
  FPRINTF(STDOUTFILE "\n\n---------------------------\n");
  FPRINTF(STDOUTFILE "SC(sched) - Static Chunking\n");
  FPRINTF(STDOUTFILE "---------------------------\n\n");
  do { size = sc(&testsched); 
       if (size > 0) {FPRINTF(STDOUTFILE "%6d. chunk = %6d %c\n", count++, size , (size%chunksize) ? '!' : ' ');
                      tcount+=size;}
       else FPRINTF(STDOUTFILE "%d tasks in %d chunks\n", tcount, (count-1));
     } while (size > 0);


  initsched(&testsched, n, p, chunksize);
  printsched(testsched);

  count=1; tcount = 0;
  FPRINTF(STDOUTFILE "\n\n---------------------------\n");
  FPRINTF(STDOUTFILE "SS(sched) - Self Scheduling\n");
  FPRINTF(STDOUTFILE "---------------------------\n\n");
  do { size = ss(&testsched); 
       if (size > 0) {if (count==1) FPRINTF(STDOUTFILE "%6d. chunk = %6d %c\n", count++, size , (size%chunksize) ? '!' : ' ');
                      count++;
                      tcount+=size;
                      lastsize = size;}
       else          {FPRINTF(STDOUTFILE "      ...\n");
                      FPRINTF(STDOUTFILE "%6d. chunk = %6d %c\n", count++, lastsize , (lastsize%chunksize) ? '!' : ' ');
                      FPRINTF(STDOUTFILE "%d tasks in %d chunks\n", tcount, (count-1));}
     } while (size > 0);


/**/
  count=1; tcount = 0;
  FPRINTF(STDOUTFILE "\n\n---------------------------\n");
  FPRINTF(STDOUTFILE "FSC() - Fixed-Size Chunking\n");
  FPRINTF(STDOUTFILE "---------------------------\n\n");
  do { size = fsc(); 
       if (size > 0) {FPRINTF(STDOUTFILE "%6d. chunk = %6d %c\n", count++, size , (size%chunksize) ? '!' : ' ');
                      tcount+=size;}
       else FPRINTF(STDOUTFILE "%d tasks in %d chunks\n", tcount, (count-1));
     } while (size > 0);
/**/

  initsched(&testsched, n, p, chunksize);
  printsched(testsched);

  count=1; tcount = 0;
  FPRINTF(STDOUTFILE "\n\n-----------------------------------\n");
  FPRINTF(STDOUTFILE "GSS(sched) - Guided Self Scheduling\n");
  FPRINTF(STDOUTFILE "-----------------------------------\n\n");
  do { size = gss(&testsched); 
       if (size > 0) {FPRINTF(STDOUTFILE "%6d. chunk = %6d %c\n", count++, size , (size%chunksize) ? '!' : ' ');
                      tcount+=size;}
       else FPRINTF(STDOUTFILE "%d tasks in %d chunks\n", tcount, (count-1));
     } while (size > 0);

  initsched(&testsched, n, p, chunksize);
  printsched(testsched);

  count=1; tcount = 0;
  FPRINTF(STDOUTFILE "\n\n--------------------------------------\n");
  FPRINTF(STDOUTFILE "TSS(sched) - Trapezoid Self Scheduling\n");
  FPRINTF(STDOUTFILE "--------------------------------------\n\n");
  do { size = tss(&testsched); 
       if (size > 0) {FPRINTF(STDOUTFILE "%6d. chunk = %6d %c\n", count++, size , (size%chunksize) ? '!' : ' ');
                      tcount+=size;}
       else FPRINTF(STDOUTFILE "%d tasks in %d chunks\n", tcount, (count-1));
     } while (size > 0);
  return (0);
}