/// Initialize the task manager with runtime parameters. void TaskManager::init ( Core localId_arg, Core * neighbors_arg, Core numLocalNodes_arg ) { if ( FLAGS_load_balance.compare( "none" ) == 0 ) { doSteal = false; doShare = false; doGQ = false; } else if ( FLAGS_load_balance.compare( "steal" ) == 0 ) { doSteal = true; doShare = false; doGQ = false; } else if ( FLAGS_load_balance.compare( "share" ) == 0 ) { CHECK( false ) << "--load_balance=share currently unsupported; see tasks/StealQueue.hpp"; doSteal = false; doShare = true; doGQ = false; } else if ( FLAGS_load_balance.compare( "gq" ) == 0 ) { CHECK( false ) << "--load_balance=gq currently unsupported; see tasks/StealQueue.hpp"; doSteal = false; doShare = false; doGQ = true; } else { CHECK( false ) << "load_balance=" << FLAGS_load_balance << "; must be {none, steal, share, gq}"; } fast_srand(0); localId = localId_arg; neighbors = neighbors_arg; numLocalNodes = numLocalNodes_arg; chunkSize = FLAGS_chunk_size; // initialize neighbors to steal permutation srandom(0); for (int i=numLocalNodes; i>=2; i--) { int ri = random() % i; Core temp = neighbors[ri]; neighbors[ri] = neighbors[i-1]; neighbors[i-1] = temp; } }
void MonteCarlo(collector *C, int NMC, REAL emean, REAL estdv, REAL sigma, REAL angle, REAL azimuth) { particle *P; trace *T; int NF; unsigned int seed; NF = 0; #if DEBUG printf("entering MonteCarlo for %d samples and storing into %lx (%d)\n", NMC, (long unsigned int) C, C->NTOTAL); #endif /* create the trace and particle */ fast_srand(&seed); T = alloc_trace(); P = (particle *) malloc(sizeof(particle)); /* the Monte Carlo loop */ //what is sigma?? if (sigma > AS_REAL(0.0)) { while (NF++ < NMC) { MakeParticle(P, normal(emean, estdv,&seed), angle+normal(AS_REAL(0.0), sigma,&seed), azimuth+normal(AS_REAL(0.0), sigma,&seed), &seed); reset_trace(T); while (P->energy > AS_REAL(0.0)) { proton_event(P, T, &seed); //stepping() } if (TRACE) dump_trace(stdout, T, P); collect(C, P, T); //Hits collection } } else { while (NF++ < NMC) { MakeParticle(P, normal(emean, estdv,&seed), angle, azimuth, &seed); reset_trace(T); while (P->energy > AS_REAL(0.0)) { proton_event(P, T, &seed); } if (TRACE) dump_trace(stdout, T, P); collect(C, P, T); } } }
int main(int argc, _TCHAR* argv[]) { fast_srand(); LoadLibraryW(L"user32.dll"); LoadLibraryW(L"gdi32.dll"); for (int i = 0; i < 4096; i++){ missingtypes[i] = 0; } //TODO: tests ! /*printf("%p\n", get__HWND()); //get__LPMSG(); get__HDESK(); get__HACCEL(); get__HMENU(); get__HDWP(); get__HICON(); get__HFONT(); get__HCURSOR(); getchar();*/ HANDLE threadHandles[8]; UINT32 threadNumber; UINT32 threadArg[MAX_THREADS]; printf("Starting Fuzzing threads...\n"); for (threadNumber = 0; threadNumber < NUM_THREADS; threadNumber++){ printf("Starting thread %d\n", threadNumber); threadArg[threadNumber] = threadNumber; threadHandles[threadNumber] = CreateThread(NULL, 0, fuzzThread, &threadArg[threadNumber], 0, NULL); } /*Sleep(10000); UINT32 maxType = 0; UINT32 maxCount = 0; for (int i = 0; i < 4096; i++){ if (missingtypes[i] > maxCount){ maxCount = missingtypes[i]; maxType = i; } } printf("type:%d count: %d", maxType, maxCount); getchar();*/ Sleep(1000); printf("Starting watchdog...\n"); while (1) { UINT64 totalTicks = 0; for (UINT32 i = 0; i < threadNumber; i++) { if (threadHB[i] == 0) { //Terminate the thread TerminateThread(threadHandles[i], 0); //Black-list this syscall curSyscall[i]->enabled = 0; printf("%s blacklisted with restart of %d !\n", curSyscall[i]->name, i); //Re-create the thread threadHandles[i] = CreateThread(NULL, 0, fuzzThread, &threadArg[i], 0, NULL); threadHB[i] = 1; }else{ totalTicks += threadHB[i]; threadHB[i] = 0; } } Sleep(1000); printf("~%d syscalls/s\n", totalTicks); } return 0; return 0; }
__kernel void dla_thread( void* p ) { my_args_t* pargs = (my_args_t*)p; int baseColor; int i, n, ix, iy, ixnew, iynew; int found; int R = 10; int R2 = 5; int seq; int row1[3], row2[3], row3[3]; int rank; int x_half = pargs->fbinfo.xres_virtual / 2; int y_half = pargs->fbinfo.yres_virtual / 2; float angle, mySin, myCos, inv_rand_max = 1.0f / (float) 32767; MPI_Status status; MPI_Init(0,MPI_BUF_SIZE); MPI_Comm comm = MPI_COMM_THREAD; MPI_Comm_rank(comm, &rank); baseColor = 0x00ffffff; void* memfree = coprthr_tls_sbrk(0); fast_srand(getpid()); seq = 1; if(rank == 0) { e_dma_copy((char *) pargs->fbinfo.smem_start + (y_half * pargs->fbinfo.line_length) + ((x_half + pargs->offset) * BPP), (char *) &baseColor, 1 * BPP); } for(n = 0; n < pargs->n; n++) { angle = ((2.0f * ((float) fastrand()) * inv_rand_max) - 1.0f) * 3.14159265f; if(angle < 0.0f) { mySin = 1.275323954f * angle + 0.405284735f * angle * angle; if(mySin < 0) mySin = 0.225f * (mySin * -mySin - mySin) + mySin; else mySin = 0.225f * (mySin * mySin - mySin) + mySin; } else { mySin = 1.275323954f * angle - 0.405284735f * angle * angle; if(mySin < 0) mySin = 0.225f * (mySin * -mySin - mySin) + mySin; else mySin = 0.225f * (mySin * mySin - mySin) + mySin; } angle += 1.57079632f; if(angle > 3.14159265f) angle -= 6.28318531f; if(angle < 0.0f) { myCos = 1.275323954f * angle + 0.405284735f * angle * angle; if(myCos < 0) myCos = 0.225f * (myCos * -myCos - myCos) + myCos; else myCos = 0.225f * (myCos * myCos - myCos) + myCos; } else { myCos = 1.275323954f * angle - 0.405284735f * angle * angle; if(myCos < 0) myCos = 0.225f * (myCos * -myCos - myCos) + myCos; else myCos = 0.225f * (myCos * myCos - myCos) + myCos; } ix = ((x_half + pargs->offset) + ((R2 - 2) * myCos)); iy = (y_half + ((R2 - 2) * mySin)); while(1) { ixnew = ix + (fastrand() % 3) - 1; if(ixnew > (x_half + pargs->offset) - R2 && ixnew < (x_half + pargs->offset) + R2) { ix = ixnew; } else { continue; } iynew = iy + (fastrand() % 3) - 1; if(iynew > y_half - R2 && iynew < y_half + R2) { iy = iynew; } else { continue; } found = 0; e_dma_copy(row1, (char *) pargs->fbinfo.smem_start + ((iy - 1) * pargs->fbinfo.line_length) + ((ix - 1) * BPP), 3 * BPP); e_dma_copy(row2, (char *) pargs->fbinfo.smem_start + ((iy) * pargs->fbinfo.line_length) + ((ix - 1) * BPP), 3 * BPP); e_dma_copy(row3, (char *) pargs->fbinfo.smem_start + ((iy + 1) * pargs->fbinfo.line_length) + ((ix - 1) * BPP), 3 * BPP); if(row1[0] != pargs->fbinfo.emptyPixVal || row2[0] != pargs->fbinfo.emptyPixVal || row3[0] != pargs->fbinfo.emptyPixVal) { found = 1; break; } if(row1[1] != pargs->fbinfo.emptyPixVal || row2[1] != pargs->fbinfo.emptyPixVal || row3[1] != pargs->fbinfo.emptyPixVal) { found = 1; break; } if(row1[2] != pargs->fbinfo.emptyPixVal || row2[2] != pargs->fbinfo.emptyPixVal || row3[2] != pargs->fbinfo.emptyPixVal) { found = 1; break; } } e_dma_copy((char *) pargs->fbinfo.smem_start + (iy * pargs->fbinfo.line_length) + (ix * BPP), (char *) &baseColor, 1 * BPP); if((ix - 3 <= ((x_half + pargs->offset) - R2) || (ix + 3 >= (x_half + pargs->offset) + R2) || (iy - 3 <= y_half - R2) || (iy + 3 >= y_half + R2))) { R += 4; R2 += 2; if(seq == 1) { baseColor -= (pargs->color == 'R' ? 0x00020000 : 0x00030000); } else if(seq == 2) { baseColor -= (pargs->color == 'B' ? 0x00000002 : 0x00000003); } else { baseColor -= (pargs->color == 'G' ? 0x00000200 : 0x00000300); } seq++; if(seq > 3) seq = 1; } } coprthr_tls_brk(memfree); MPI_Finalize(); return 0; }