/*public static*/ Geometry::AutoPtr DouglasPeuckerSimplifier::simplify(const Geometry* geom, double tolerance) { DouglasPeuckerSimplifier tss(geom); tss.setDistanceTolerance(tolerance); return tss.getResultGeometry(); }
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()); }
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); }