Example #1
0
ScopLib::ScopLib(Scop *S) : PollyScop(S) {
  scoplib = scoplib_scop_malloc();

  initializeArrays();
  initializeParameters();
  initializeScattering();
  initializeStatements();
}
Example #2
0
// REQUIRES: sudokustring only comprises of characters 0 <= x <= 9
// MODIFIES: none
// EFFECTS: Tests the validity of a sudoku string. If the sudokustring is a valid sudoku solution, returns 1. Else, returns 0.
int testSudokuString(char *sudokustring)
{
	int **sudokuarray;

	// Return -1 if the length of the input string isn't exactly 81.
	if(strlen(sudokustring) != 81){
		printf("Invalid input size %d.\n", strlen(sudokustring));
		return -1;
	}

	// Decode the string into a 9x9 array
	sudokuarray = decodeSudokuString(sudokustring);
	printSudokuPuzzle(sudokuarray);


	// Declare/Initialize the structs based on the number of threads for each one
	NumberArray row_NumberArrays[NUM_ROW_THREADS];
	NumberArray column_NumberArrays[NUM_COL_THREADS];
	NumberArray block_NumberArrays[NUM_BLOCK_THREADS];
	initializeArrays(row_NumberArrays, column_NumberArrays, block_NumberArrays);

	int i, row_cursor, col_cursor, block_cursor;

	i = 0;

	// Allocate 9-element arrays to each of the structs, with rollover cursors that
	// depend on the number of structs available
	while(i < 9)
	{
		row_cursor = i % NUM_ROW_THREADS;
		col_cursor = i % NUM_COL_THREADS;
		block_cursor = i % NUM_BLOCK_THREADS;

		if(VERBOSE) printf("i : %d. row_cursor: %d.\n", i, row_cursor);

		// Create a copy of the row, column, block, and allocate the copy to a portion in the struct for the current cursor position for row, column and block
		row_NumberArrays[row_cursor].elements[row_NumberArrays[row_cursor].array_count++] = copyOfRow(sudokuarray, i);
		column_NumberArrays[col_cursor].elements[column_NumberArrays[col_cursor].array_count++] = copyOfColumn(sudokuarray, i);
		block_NumberArrays[block_cursor].elements[block_NumberArrays[block_cursor].array_count++] = copyOfBlock(sudokuarray, i);

		i++;

		if(VERBOSE) printf("array_count: %d\n\n", row_NumberArrays[row_cursor].array_count);
	}

	// Allocate the result to the 'result' variable
	int result = testNumberArrays(row_NumberArrays, column_NumberArrays, block_NumberArrays);


	// Free the dynamic memory
	freeNumberArrays(row_NumberArrays, column_NumberArrays, block_NumberArrays);
	for(i = 0; i < 9; i++)
		free(sudokuarray[i]);
	free(sudokuarray);

	return result;
}
Example #3
0
void launchInitialization() {  
    initializeArrays();   
}
void modified(char *fName) {
    int physicalAddress;
    initializeArrays();

    readFile(fName);

    int pageTableHits = 0;
    int tlbHits = 0;
    int pageFaults = 0;
    int totalAddresses = 0;
 
    int i;
    int frameNum = 0;
    int tlbIndex = 0;
    for (i = 0; i < 1000; i++) {
        int pageNum = pageNums[i];
        int offset = offsets[i];
        int signedByte;
        
        frameNum = frameNum%128;
        int tlbCheck = checkTLB(pageNum);
        if (tlbCheck != -1) {
            physicalAddress = logicalToPhysical(i);
            signedByte = (int) frames[tlbCheck][offset];
            tlbHits++;
        } if (pageTable[pageNum] == -1) {
            pageTable[pageNum] = frameNum;
            physicalAddress = logicalToPhysical(i);
            char *f = malloc(256 * sizeof(char));
            f = getPage(pageNum, offset, f);
            if ( pageFrames[frameNum] != -1) {
                int oldPageNum = pageFrames[frameNum];
                /*if (checkTLB(oldPageNum) != -1) {
                    int tlbI = getTLBIndex(pageNum);
                    patchTLBHole(tlbI);        
                    printf("was in tlb\n");
                }*/
                pageTable[oldPageNum] = -1;
            }
            pageFrames[frameNum] = pageNum;
            frames[frameNum] = f;
            signedByte = (int) frames[frameNum][offset];
            updateTLB(pageNum, frameNum, tlbIndex);
            tlbIndex++;
            frameNum++;
            pageFaults++;
        } else {
            physicalAddress = logicalToPhysical(i);
            int fNum = pageTable[pageNum];
           signedByte = (int) frames[fNum][offset];
           updateTLB(pageNum, frameNum, tlbIndex);
           tlbIndex++;
           pageTableHits++;
        }

        printf("Virtual address: %d Physical address: %d Value: %d\n", lAddresses[i], physicalAddress, signedByte );
    }
    printf("Number of Translated Addresses = %d\n", 1000);
    printf("Page Faults = %d\n", pageFaults);
    printf("Page Fault Rate = %.3f\n", (double) pageFaults / 1000 );
    printf("TLB Hits = %d\n", tlbHits);
    printf("TLB Hit Rate = %.3f\n", (double) tlbHits / 1000);

}
Example #5
0
int main(int argc, char** argv) {
    FILE*   fileIn  = NULL;
    FILE*   fileOut = NULL;
    Symbol  symbols[ARRAY_LENGTH];
    Symbol* symbolsOrd[ARRAY_LENGTH]; //ordered pointers (by frequency)

    u64 fileLen = 0;

    BinTree* temp[2];
    BinTree* root;
    Stack    stack;

    if ( !argv[1] ) {
        printHelp();
        return EXIT_FAIL;
    }

    if ( !strcmp(argv[1], "-e") || !strcmp("--encode", argv[1]) ) {
        if ( !argv[2] || !argv[3] ) {
            printHelp();
            return EXIT_FAIL;
        }

        fileIn  = (FILE*)fopen(argv[2], "rt");
        if ( !fileIn ) {
            printf("Error: file <<%s>> doesn't exists\n", argv[2]);
            return EXIT_FAIL;
        }

        stackInit(&stack);
        initializeArrays(symbols, symbolsOrd, ARRAY_LENGTH);

        fileLen = readFile(fileIn, symbols); //read symbols; first pass
        if ( fileLen == 0 ) {
            printf("Error: file <<%s>> is empty\n", argv[2]);
            fclose(fileIn);
            return EXIT_FAIL;
        }

        fileOut = (FILE*)fopen(argv[3], "wb");
        if ( !fileOut ) {
            printf("Error: cannot create file <<%s>>\n", argv[3]);
            fclose(fileIn);
            return EXIT_FAIL;
        }

        //sort symbols by frequencies from lower to greatest
        qsort(symbolsOrd, ARRAY_LENGTH, sizeof(Symbol*), compareSym);
        fillStack(symbolsOrd, &stack, ARRAY_LENGTH); //prepare stack

        root = buildTree(&stack);

        createPath(root, 0); //0 - starting depth

        rewind(fileIn); //reopen fileIn; prepare second pass

        //write all compressed data
        saveToFile(fileIn, fileOut, symbols, root, argv[2], fileLen);

        //memory cleanup
        binTreeRemove(root);

        fclose(fileOut);
        fclose(fileIn);
    } else if ( !strcmp(argv[1], "-d") || !strcmp("--decode", argv[1]) ) {
        if ( !argv[2] ) {
            printHelp();
            return EXIT_FAIL;
        }

        fileIn = fopen(argv[2], "rb");
        if ( !fileIn ) {
            printf("Error: file <<%s>> doesn't exists\n", argv[2]);
            return EXIT_FAIL;
        }

        if ( !loadFromFile(fileIn, argv[3] ? argv[3] : NULL) ) {
            printf("Error: file <<%s>> corrupted or cannot create file <<%s>>\n",
                argv[2], argv[3]);
            fclose(fileIn);
            return EXIT_FAIL;
        }

        fclose(fileIn);
    } else {
        printHelp();
    }
    

    return EXIT_SUCCESS;
}