Exemple #1
0
/// 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;
  }
}
Exemple #2
0
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);
	}
    }
}
Exemple #3
0
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;
}
Exemple #4
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;
}