#include "calInt.h"
#include <unistd.h>
#include <sys/types.h>
Go to the source code of this file.
Functions | |
static void | CalPerformanceTestAnd (Cal_BddManager bddManager, Cal_Bdd *outputBddArray, int numFunctions) |
static void | CalPerformaceTestSuperscalar (Cal_BddManager bddManager, Cal_Bdd *outputBddArray, int numFunctions) |
static void | CalPerformanceTestNonSuperscalar (Cal_BddManager bddManager, Cal_Bdd *outputBddArray, int numFunctions) |
static void | CalPerformanceTestMultiway (Cal_BddManager bddManager, Cal_Bdd *outputBddArray, int numFunctions) |
static void | CalPerformanceTestOneway (Cal_BddManager bddManager, Cal_Bdd *outputBddArray, int numFunctions) |
static void | CalPerformanceTestCompose (Cal_BddManager bddManager, Cal_Bdd *outputBddArray, int numFunctions) |
static void | CalPerformanceTestQuantifyAllTogether (Cal_BddManager bddManager, Cal_Bdd *outputBddArray, int numFunctions, int bfZeroBFPlusDFOne, int cacheExistsResultsFlag, int cacheOrResultsFlag) |
static void | CalQuantifySanityCheck (Cal_BddManager bddManager, Cal_Bdd *outputBddArray, int numFunctions) |
static void | CalPerformanceTestRelProd (Cal_BddManager bddManager, Cal_Bdd *outputBddArray, int numFunctions, int bfZeroBFPlusDFOne, int cacheRelProdResultsFlag, int cacheAndResultsFlag, int cacheOrResultsFlag) |
static void | CalPerformanceTestSubstitute (Cal_BddManager bddManager, Cal_Bdd *outputBddArray, int numFunctions) |
static void | CalPerformanceTestSwapVars (Cal_BddManager bddManager, Cal_Bdd *outputBddArray, int numFunctions) |
static long | elapsedTime (void) |
static double | cpuTime (void) |
static long | pageFaults (void) |
static void | GetRandomNumbers (int lowerBound, int upperBound, int count, int *resultVector) |
int | Cal_PerformanceTest (Cal_BddManager bddManager, Cal_Bdd *outputBddArray, int numFunctions, int iteration, int seed, int andPerformanceFlag, int multiwayPerformanceFlag, int onewayPerformanceFlag, int quantifyPerformanceFlag, int composePerformanceFlag, int relprodPerformanceFlag, int swapPerformanceFlag, int substitutePerformanceFlag, int sanityCheckFlag, int computeMemoryOverheadFlag, int superscalarFlag) |
int | CalIncreasingOrderCompare (const void *a, const void *b) |
int | CalDecreasingOrderCompare (const void *a, const void *b) |
Variables | |
static int | ITERATION |
int Cal_PerformanceTest | ( | Cal_BddManager | bddManager, | |
Cal_Bdd * | outputBddArray, | |||
int | numFunctions, | |||
int | iteration, | |||
int | seed, | |||
int | andPerformanceFlag, | |||
int | multiwayPerformanceFlag, | |||
int | onewayPerformanceFlag, | |||
int | quantifyPerformanceFlag, | |||
int | composePerformanceFlag, | |||
int | relprodPerformanceFlag, | |||
int | swapPerformanceFlag, | |||
int | substitutePerformanceFlag, | |||
int | sanityCheckFlag, | |||
int | computeMemoryOverheadFlag, | |||
int | superscalarFlag | |||
) |
AutomaticEnd Function********************************************************************
Synopsis [Main routine for testing performances of various routines.]
Description [optional]
SideEffects [required]
SeeAlso [optional]
Definition at line 114 of file calPerformanceTest.c.
00125 { 00126 00127 CalUtilSRandom((long)seed); 00128 00129 ITERATION = iteration; 00130 fprintf(stdout,"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"); 00131 fprintf(stdout, "Performing %d iterations for each function\n", iteration); 00132 Cal_BddSetGCMode(bddManager, 0); 00133 #ifdef QUANTIFY 00134 quantify_start_recording_data(); 00135 #endif 00136 00137 #ifdef PURECOV 00138 purecov_clear_data(); 00139 #endif 00140 00141 if (relprodPerformanceFlag){ 00142 CalPerformanceTestRelProd(bddManager, outputBddArray, numFunctions, 1, 1, 00143 1, 1); 00144 CalUtilSRandom((long)seed); 00145 00146 } 00147 if (sanityCheckFlag == 1){ 00148 CalQuantifySanityCheck(bddManager, outputBddArray, 00149 numFunctions); 00150 CalUtilSRandom((long)seed); 00151 } 00152 if (quantifyPerformanceFlag){ 00153 CalPerformanceTestQuantifyAllTogether(bddManager, outputBddArray, 00154 numFunctions, 1, 1, 1); 00155 CalUtilSRandom((long)seed); 00156 /* 00157 CalPerformanceTestNonSuperscalarQuant(bddManager, outputBddArray, numFunctions); 00158 CalUtilSRandom((long)seed); 00159 */ 00160 } 00161 00162 if (multiwayPerformanceFlag){ 00163 CalPerformanceTestMultiway(bddManager, outputBddArray, numFunctions); 00164 CalUtilSRandom((long)seed); 00165 } 00166 if (onewayPerformanceFlag){ 00167 CalPerformanceTestOneway(bddManager, outputBddArray, numFunctions); 00168 CalUtilSRandom((long)seed); 00169 } 00170 if (andPerformanceFlag){ 00171 CalPerformanceTestAnd(bddManager, outputBddArray, numFunctions); 00172 CalUtilSRandom((long)seed); 00173 } 00174 if (composePerformanceFlag){ 00175 CalPerformanceTestCompose(bddManager, outputBddArray, numFunctions); 00176 CalUtilSRandom((long)seed); 00177 } 00178 if (swapPerformanceFlag){ 00179 CalPerformanceTestSwapVars(bddManager, outputBddArray, numFunctions); 00180 CalUtilSRandom((long)seed); 00181 } 00182 if (substitutePerformanceFlag){ 00183 CalPerformanceTestSubstitute(bddManager, outputBddArray, numFunctions); 00184 CalUtilSRandom((long)seed); 00185 } 00186 #ifdef COMPUTE_MEMORY_OVERHEAD 00187 if (computeMemoryOverheadFlag){ 00188 CalPerformaceMemoryOverhead(bddManager, outputBddArray, numFunctions); 00189 CalUtilSRandom((long)seed); 00190 } 00191 #endif 00192 if (superscalarFlag){ 00193 CalPerformaceTestSuperscalar(bddManager, outputBddArray, numFunctions); 00194 CalUtilSRandom((long)seed); 00195 CalPerformanceTestNonSuperscalar(bddManager, outputBddArray, numFunctions); 00196 CalUtilSRandom((long)seed); 00197 } 00198 #ifdef QUANTIFY 00199 quantify_stop_recording_data(); 00200 #endif 00201 #ifdef PURECOV 00202 purecov_save_data(); 00203 purecov_disable_save(); 00204 #endif 00205 fprintf(stdout,"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"); 00206 Cal_BddSetGCMode(bddManager, 1); 00207 return 0; 00208 }
int CalDecreasingOrderCompare | ( | const void * | a, | |
const void * | b | |||
) |
Function********************************************************************
Synopsis [required]
Description [optional]
SideEffects [required]
SeeAlso [optional]
Definition at line 241 of file calPerformanceTest.c.
int CalIncreasingOrderCompare | ( | const void * | a, | |
const void * | b | |||
) |
Function********************************************************************
Synopsis [required]
Description [optional]
SideEffects [required]
SeeAlso [optional]
Definition at line 224 of file calPerformanceTest.c.
static void CalPerformaceTestSuperscalar | ( | Cal_BddManager | bddManager, | |
Cal_Bdd * | outputBddArray, | |||
int | numFunctions | |||
) | [static] |
Function********************************************************************
Synopsis [Performance test routine for quantify (all variables at the same time).]
Description [optional]
SideEffects [required]
SeeAlso [optional]
Definition at line 379 of file calPerformanceTest.c.
00381 { 00382 int i,j; 00383 Cal_Bdd *bddArray, *resultArray; 00384 int *varIdArray; 00385 int num = (((numFunctions%2) == 0)? numFunctions : (numFunctions-1)); 00386 if (num == 0) return; 00387 if (num > 100) num = 100; 00388 varIdArray = Cal_MemAlloc(int, num); 00389 bddArray = Cal_MemAlloc(Cal_Bdd, num+1); 00390 bddArray[num] = (Cal_Bdd) 0; 00391 00392 00393 (void) elapsedTime(); 00394 cpuTime(); 00395 pageFaults(); 00396 for (i=0; i<ITERATION; i++){ 00397 GetRandomNumbers(0, numFunctions-1, num, varIdArray); 00398 for (j=0; j<num; j++){ 00399 bddArray[j] = outputBddArray[varIdArray[j]]; 00400 } 00401 resultArray = Cal_BddPairwiseAnd(bddManager, bddArray); 00402 for (j=0; j<num/2; j++){ 00403 Cal_BddFree(bddManager, resultArray[j]); 00404 } 00405 Cal_MemFree(resultArray); 00406 } 00407 fprintf(stdout, "%-20s%-10ld%-8.2f%-10ld\n", "SUPERSCALARAND", elapsedTime(), 00408 cpuTime(), pageFaults()); 00409 Cal_MemFree(varIdArray); 00410 Cal_MemFree(bddArray); 00411 Cal_BddManagerGC(bddManager); 00412 }
static void CalPerformanceTestAnd | ( | Cal_BddManager | bddManager, | |
Cal_Bdd * | outputBddArray, | |||
int | numFunctions | |||
) | [static] |
AutomaticStart
Function********************************************************************
Synopsis [Performance test routine for quantify (all variables at the same time).]
Description [optional]
SideEffects [required]
SeeAlso [optional]
Definition at line 261 of file calPerformanceTest.c.
00263 { 00264 int i; 00265 Cal_Bdd function1, function2; 00266 Cal_Bdd result; 00267 00268 00269 (void) elapsedTime(); 00270 cpuTime(); 00271 pageFaults(); 00272 for (i=0; i<ITERATION; i++){ 00273 function1 = outputBddArray[CalUtilRandom()%numFunctions]; 00274 function2 = outputBddArray[CalUtilRandom()%numFunctions]; 00275 result = Cal_BddAnd(bddManager, function1, function2); 00276 Cal_BddFree(bddManager, result); 00277 } 00278 fprintf(stdout, "%-20s%-10ld%-8.2f%-10ld\n", "AND", elapsedTime(), 00279 cpuTime(), pageFaults()); 00280 Cal_BddManagerGC(bddManager); 00281 }
static void CalPerformanceTestCompose | ( | Cal_BddManager | bddManager, | |
Cal_Bdd * | outputBddArray, | |||
int | numFunctions | |||
) | [static] |
Function********************************************************************
Synopsis [Performance test routine for quantify (all variables at the same time).]
Description [optional]
SideEffects [required]
SeeAlso [optional]
Definition at line 575 of file calPerformanceTest.c.
00577 { 00578 int i; 00579 int numVars = Cal_BddVars(bddManager); 00580 Cal_Bdd function; 00581 Cal_Bdd variable; 00582 Cal_Bdd substituteFunction; 00583 Cal_Bdd result; 00584 00585 00586 (void) elapsedTime(); 00587 cpuTime(); 00588 pageFaults(); 00589 for (i=0; i<ITERATION; i++){ 00590 function = outputBddArray[CalUtilRandom()%numFunctions]; 00591 variable = Cal_BddManagerGetVarWithId(bddManager,(Cal_BddId_t)CalUtilRandom()%numVars+1); 00592 substituteFunction = outputBddArray[CalUtilRandom()%numFunctions]; 00593 result = Cal_BddCompose(bddManager, function, variable, 00594 substituteFunction); 00595 Cal_BddFree(bddManager, result); 00596 } 00597 fprintf(stdout, "%-20s%-10ld%-8.2f%-10ld\n", "COMPOSE", elapsedTime(), 00598 cpuTime(), pageFaults()); 00599 Cal_BddManagerGC(bddManager); 00600 }
static void CalPerformanceTestMultiway | ( | Cal_BddManager | bddManager, | |
Cal_Bdd * | outputBddArray, | |||
int | numFunctions | |||
) | [static] |
Function********************************************************************
Synopsis [Performance test routine for quantify (all variables at the same time).]
Description [optional]
SideEffects [required]
SeeAlso [optional]
Definition at line 480 of file calPerformanceTest.c.
00482 { 00483 int i,j; 00484 Cal_Bdd result, *bddArray; 00485 int *varIdArray; 00486 int power; 00487 int num; 00488 00489 if (numFunctions <= 1) return; 00490 for (power = 1; power <= 5; power++){ 00491 num = (1<<power); 00492 if (num > numFunctions) return; 00493 varIdArray = Cal_MemAlloc(int, num); 00494 bddArray = Cal_MemAlloc(Cal_Bdd, num+1); 00495 bddArray[num] = (Cal_Bdd) 0; 00496 (void) elapsedTime(); 00497 cpuTime(); 00498 pageFaults(); 00499 for (i=0; i<ITERATION; i++){ 00500 GetRandomNumbers(0, numFunctions-1, num, varIdArray); 00501 for (j=0; j<num; j++){ 00502 bddArray[j] = outputBddArray[varIdArray[j]]; 00503 } 00504 result = Cal_BddMultiwayAnd(bddManager, bddArray); 00505 Cal_BddFree(bddManager, result); 00506 } 00507 fprintf(stdout, "%-20s%-4d%-10ld%-8.2f%-10ld\n", "MULTIWAYAND", num, 00508 elapsedTime(), cpuTime(), pageFaults()); 00509 Cal_MemFree(varIdArray); 00510 Cal_MemFree(bddArray); 00511 Cal_BddManagerGC(bddManager); 00512 } 00513 }
static void CalPerformanceTestNonSuperscalar | ( | Cal_BddManager | bddManager, | |
Cal_Bdd * | outputBddArray, | |||
int | numFunctions | |||
) | [static] |
Function********************************************************************
Synopsis [Performance test routine for quantify (all variables at the same time).]
Description [optional]
SideEffects [required]
SeeAlso [optional]
Definition at line 427 of file calPerformanceTest.c.
00429 { 00430 int i, j; 00431 Cal_Bdd *bddArray, *resultArray; 00432 int *varIdArray; 00433 00434 int num = (((numFunctions%2) == 0)? numFunctions : (numFunctions-1)); 00435 00436 if (num == 0) return; 00437 if (num > 100) num = 100; 00438 00439 varIdArray = Cal_MemAlloc(int, num); 00440 bddArray = Cal_MemAlloc(Cal_Bdd, num+1); 00441 bddArray[num] = (Cal_Bdd) 0; 00442 resultArray = Cal_MemAlloc(Cal_Bdd, num/2); 00443 00444 (void) elapsedTime(); 00445 cpuTime(); 00446 pageFaults(); 00447 for (i=0; i<ITERATION; i++){ 00448 GetRandomNumbers(0, numFunctions-1, num, varIdArray); 00449 for (j=0; j<num/2; j++){ 00450 resultArray[j] = Cal_BddAnd(bddManager, 00451 outputBddArray[varIdArray[j<<1]], 00452 outputBddArray[varIdArray[(j<<1)+1]]); 00453 } 00454 for (j=0; j<num/2; j++){ 00455 Cal_BddFree(bddManager, resultArray[j]); 00456 } 00457 } 00458 fprintf(stdout, "%-20s%-10ld%-8.2f%-10ld\n", "NONSUPERSCALARAND", elapsedTime(), 00459 cpuTime(), pageFaults()); 00460 Cal_MemFree(resultArray); 00461 Cal_MemFree(bddArray); 00462 Cal_MemFree(varIdArray); 00463 Cal_BddManagerGC(bddManager); 00464 }
static void CalPerformanceTestOneway | ( | Cal_BddManager | bddManager, | |
Cal_Bdd * | outputBddArray, | |||
int | numFunctions | |||
) | [static] |
Function********************************************************************
Synopsis [Performance test routine for quantify (all variables at the same time).]
Description [optional]
SideEffects [required]
SeeAlso [optional]
Definition at line 528 of file calPerformanceTest.c.
00530 { 00531 int i, j; 00532 Cal_Bdd result, tempResult; 00533 int *varIdArray; 00534 int power, num; 00535 00536 if (numFunctions <= 1) return; 00537 00538 for (power = 1; power <= 5; power++){ 00539 num = (1<<power); 00540 if (num > numFunctions) return; 00541 varIdArray = Cal_MemAlloc(int, num); 00542 (void) elapsedTime(); 00543 cpuTime(); 00544 pageFaults(); 00545 for (i=0; i<ITERATION; i++){ 00546 GetRandomNumbers(0, numFunctions-1, num, varIdArray); 00547 result = Cal_BddOne(bddManager); 00548 for (j=0; j<num; j++){ 00549 tempResult = Cal_BddAnd(bddManager, result, 00550 outputBddArray[varIdArray[j]]); 00551 Cal_BddFree(bddManager, result); 00552 result = tempResult; 00553 } 00554 Cal_BddFree(bddManager, result); 00555 } 00556 fprintf(stdout, "%-20s%-4d%-10ld%-8.2f%-10ld\n", "ONEWAYAND", num, 00557 elapsedTime(), cpuTime(), pageFaults()); 00558 Cal_MemFree(varIdArray); 00559 Cal_BddManagerGC(bddManager); 00560 } 00561 }
static void CalPerformanceTestQuantifyAllTogether | ( | Cal_BddManager | bddManager, | |
Cal_Bdd * | outputBddArray, | |||
int | numFunctions, | |||
int | bfZeroBFPlusDFOne, | |||
int | cacheExistsResultsFlag, | |||
int | cacheOrResultsFlag | |||
) | [static] |
Function********************************************************************
Synopsis [Performance test routine for quantify (all variables at the same time).]
Description [optional]
SideEffects [required]
SeeAlso [optional]
Definition at line 614 of file calPerformanceTest.c.
00619 { 00620 int i, j; 00621 int numVars = Cal_BddVars(bddManager); 00622 int numQuantifyVars = numVars/2; 00623 int *varIdArray = Cal_MemAlloc(int, numQuantifyVars); 00624 Cal_Bdd *assoc = Cal_MemAlloc(Cal_Bdd, numQuantifyVars+1); 00625 Cal_Bdd function, result; 00626 int assocId; 00627 00628 for (i=0; i <= numQuantifyVars; i++){ 00629 assoc[i] = (Cal_Bdd) 0; 00630 } 00631 00632 (void) elapsedTime(); 00633 cpuTime(); 00634 pageFaults(); 00635 for (i=0; i<ITERATION; i++){ 00636 function = outputBddArray[CalUtilRandom()%numFunctions]; 00637 GetRandomNumbers(1, numVars, numQuantifyVars, varIdArray); 00638 for (j=0; j<numQuantifyVars; j++){ 00639 assoc[j] = Cal_BddManagerGetVarWithId(bddManager, varIdArray[j]); 00640 } 00641 assocId = Cal_AssociationInit(bddManager, assoc, 0); 00642 Cal_AssociationSetCurrent(bddManager, assocId); 00643 result = Cal_BddExists(bddManager, function); 00644 Cal_BddFree(bddManager, result); 00645 } 00646 fprintf(stdout, "%-20s%-10ld%-8.2f%-10ld\n", "QUANTIFY", elapsedTime(), 00647 cpuTime(), pageFaults()); 00648 Cal_MemFree(assoc); 00649 Cal_MemFree(varIdArray); 00650 Cal_BddManagerGC(bddManager); 00651 }
static void CalPerformanceTestRelProd | ( | Cal_BddManager | bddManager, | |
Cal_Bdd * | outputBddArray, | |||
int | numFunctions, | |||
int | bfZeroBFPlusDFOne, | |||
int | cacheRelProdResultsFlag, | |||
int | cacheAndResultsFlag, | |||
int | cacheOrResultsFlag | |||
) | [static] |
Function********************************************************************
Synopsis [Performance test routine for quantify (all variables at the same time).]
Description [optional]
SideEffects [required]
SeeAlso [optional]
Definition at line 735 of file calPerformanceTest.c.
00739 { 00740 int i, j; 00741 int numVars = Cal_BddVars(bddManager); 00742 int numQuantifyVars = numVars/2; 00743 int *varIdArray = Cal_MemAlloc(int, numQuantifyVars); 00744 Cal_Bdd *assoc = Cal_MemAlloc(Cal_Bdd, numQuantifyVars+1); 00745 Cal_Bdd function1, function2, result; 00746 int assocId; 00747 00748 for (i=0; i <= numQuantifyVars; i++){ 00749 assoc[i] = (Cal_Bdd) 0; 00750 } 00751 00752 elapsedTime(); 00753 cpuTime(); 00754 pageFaults(); 00755 for (i=0; i<ITERATION; i++){ 00756 function1 = outputBddArray[CalUtilRandom()%numFunctions]; 00757 function2 = outputBddArray[CalUtilRandom()%numFunctions]; 00758 GetRandomNumbers(1, numVars, numQuantifyVars,varIdArray); 00759 for (j=0; j<numQuantifyVars; j++){ 00760 assoc[j] = Cal_BddManagerGetVarWithId(bddManager, varIdArray[j]); 00761 } 00762 assocId = Cal_AssociationInit(bddManager, assoc, 0); 00763 Cal_AssociationSetCurrent(bddManager, assocId); 00764 result = Cal_BddRelProd(bddManager, function1, function2); 00765 Cal_BddFree(bddManager, result); 00766 } 00767 fprintf(stdout, "%-20s%-10ld%-8.2f%-10ld\n", "RELPROD", elapsedTime(), 00768 cpuTime(), pageFaults()); 00769 Cal_MemFree(assoc); 00770 Cal_MemFree(varIdArray); 00771 Cal_BddManagerGC(bddManager); 00772 }
static void CalPerformanceTestSubstitute | ( | Cal_BddManager | bddManager, | |
Cal_Bdd * | outputBddArray, | |||
int | numFunctions | |||
) | [static] |
Function********************************************************************
Synopsis [Performance test routine for quantify (all variables at the same time).]
Description [optional]
SideEffects [required]
SeeAlso [optional]
Definition at line 788 of file calPerformanceTest.c.
00790 { 00791 int i, j; 00792 int numVars = Cal_BddVars(bddManager); 00793 int numQuantifyVars = ((numVars/2 > numFunctions/2) ? numFunctions/2 00794 : numVars/2); 00795 int *varIdArray = Cal_MemAlloc(int, numQuantifyVars); 00796 Cal_Bdd *assoc = Cal_MemAlloc(Cal_Bdd, 2*numQuantifyVars+1); 00797 Cal_Bdd function, result; 00798 00799 for (i=0; i <= 2*numQuantifyVars; i++){ 00800 assoc[i] = (Cal_Bdd) 0; 00801 } 00802 (void) elapsedTime(); 00803 cpuTime(); 00804 pageFaults(); 00805 for (i=0; i<ITERATION/5; i++){ 00806 function = outputBddArray[CalUtilRandom()%numFunctions]; 00807 GetRandomNumbers(1, numVars, numQuantifyVars,varIdArray); 00808 for (j=0; j<numQuantifyVars; j++){ 00809 assoc[(j<<1)] = Cal_BddManagerGetVarWithId(bddManager,varIdArray[j]); 00810 } 00811 GetRandomNumbers(0, numFunctions-1, numQuantifyVars, varIdArray); 00812 for (j=0; j<numQuantifyVars; j++){ 00813 assoc[(j<<1)+1] = outputBddArray[varIdArray[j]]; 00814 } 00815 Cal_TempAssociationInit(bddManager, assoc, 1); 00816 Cal_AssociationSetCurrent(bddManager, -1); 00817 result = Cal_BddSubstitute(bddManager, function); 00818 Cal_BddFree(bddManager, result); 00819 } 00820 fprintf(stdout, "%-20s%-10ld%-8.2f%-10ld\n", "SUBSTITUTE", elapsedTime(), 00821 cpuTime(), pageFaults()); 00822 Cal_MemFree(assoc); 00823 Cal_MemFree(varIdArray); 00824 Cal_TempAssociationQuit(bddManager); 00825 Cal_BddManagerGC(bddManager); 00826 }
static void CalPerformanceTestSwapVars | ( | Cal_BddManager | bddManager, | |
Cal_Bdd * | outputBddArray, | |||
int | numFunctions | |||
) | [static] |
Function********************************************************************
Synopsis [Performance test routine for quantify (all variables at the same time).]
Description [optional]
SideEffects [required]
SeeAlso [optional]
Definition at line 841 of file calPerformanceTest.c.
00843 { 00844 int i; 00845 int numVars = Cal_BddVars(bddManager); 00846 Cal_Bdd function, result; 00847 Cal_Bdd var1, var2; 00848 00849 elapsedTime(); 00850 cpuTime(); 00851 pageFaults(); 00852 for (i=0; i<ITERATION; i++){ 00853 function = outputBddArray[CalUtilRandom()%numFunctions]; 00854 var1 = Cal_BddManagerGetVarWithId(bddManager,(Cal_BddId_t)(CalUtilRandom()%numVars)+1); 00855 var2 = Cal_BddManagerGetVarWithId(bddManager,(Cal_BddId_t)(CalUtilRandom()%numVars)+1); 00856 result = Cal_BddSwapVars(bddManager, function, var1,var2); 00857 Cal_BddFree(bddManager, result); 00858 } 00859 fprintf(stdout, "%-20s%-10ld%-8.2f%-10ld\n", "SWAPVARS", elapsedTime(), 00860 cpuTime(), pageFaults()); 00861 Cal_BddManagerGC(bddManager); 00862 }
static void CalQuantifySanityCheck | ( | Cal_BddManager | bddManager, | |
Cal_Bdd * | outputBddArray, | |||
int | numFunctions | |||
) | [static] |
Function********************************************************************
Synopsis [Performance test routine for quantify (all variables at the same time).]
Description [optional]
SideEffects [required]
SeeAlso [optional]
Definition at line 669 of file calPerformanceTest.c.
00671 { 00672 int i, j; 00673 int numVars = Cal_BddVars(bddManager); 00674 int numQuantifyVars = numVars/2; 00675 int *varIdArray = Cal_MemAlloc(int, numQuantifyVars); 00676 Cal_Bdd *assoc = Cal_MemAlloc(Cal_Bdd, numQuantifyVars+1); 00677 Cal_Bdd function, oneAtATimeResult, allTogetherResult, tempResult, nonSuperscalarResult; 00678 00679 00680 for (i=0; i <= numQuantifyVars; i++){ 00681 assoc[i] = (Cal_Bdd) 0; 00682 } 00683 00684 (void) elapsedTime(); 00685 for (i=0; i<ITERATION; i++){ 00686 function = outputBddArray[CalUtilRandom()%numFunctions]; 00687 GetRandomNumbers(1, numVars, numQuantifyVars, varIdArray); 00688 for (j=0; j<numQuantifyVars; j++){ 00689 assoc[j] = Cal_BddManagerGetVarWithId(bddManager, varIdArray[j]); 00690 } 00691 Cal_TempAssociationInit(bddManager, assoc, 0); 00692 Cal_AssociationSetCurrent(bddManager, -1); 00693 allTogetherResult = Cal_BddExists(bddManager, function); 00694 00695 oneAtATimeResult = Cal_BddIdentity(bddManager, function); 00696 qsort((void *) varIdArray, (size_t)numQuantifyVars, (size_t)sizeof(int), 00697 CalDecreasingOrderCompare); 00698 for (j=0; j<numQuantifyVars; j++){ 00699 assoc[0] = 00700 Cal_BddManagerGetVarWithId(bddManager,varIdArray[j]); 00701 assoc[1] = (Cal_Bdd) 0; 00702 Cal_TempAssociationAugment(bddManager, assoc, 0); 00703 tempResult = Cal_BddExists(bddManager, oneAtATimeResult); 00704 Cal_BddFree(bddManager, oneAtATimeResult); 00705 oneAtATimeResult = tempResult; 00706 } 00707 00708 nonSuperscalarResult = Cal_BddExists(bddManager, function); 00709 00710 assert(Cal_BddIsEqual(bddManager, allTogetherResult, oneAtATimeResult)); 00711 assert(Cal_BddIsEqual(bddManager, allTogetherResult, nonSuperscalarResult)); 00712 Cal_BddFree(bddManager, oneAtATimeResult); 00713 Cal_BddFree(bddManager, allTogetherResult); 00714 Cal_BddFree(bddManager, nonSuperscalarResult); 00715 } 00716 fprintf(stdout, "Quantify Sanity Check Passed\n"); 00717 Cal_MemFree(assoc); 00718 Cal_MemFree(varIdArray); 00719 Cal_TempAssociationQuit(bddManager); 00720 }
static double cpuTime | ( | void | ) | [static] |
Function********************************************************************
Synopsis [Computes the number of page faults.]
Description [optional]
SideEffects [required]
SeeAlso [optional]
Definition at line 905 of file calPerformanceTest.c.
00906 { 00907 #if HAVE_SYS_RESOURCE_H 00908 static double timeNew, timeOld; 00909 struct rusage rusage; 00910 static int flag = 0; 00911 00912 getrusage(RUSAGE_SELF, &rusage); 00913 if (flag == 0){ 00914 timeOld = timeNew = rusage.ru_utime.tv_sec+ 00915 ((double)rusage.ru_utime.tv_usec)/1000000; 00916 flag = 1; 00917 } 00918 else { 00919 timeOld = timeNew; 00920 timeNew = rusage.ru_utime.tv_sec+ 00921 ((float)rusage.ru_utime.tv_usec)/1000000; 00922 } 00923 return timeNew - timeOld; 00924 #else /* No sys/resource.h */ 00925 return 0; 00926 #endif 00927 }
static long elapsedTime | ( | void | ) | [static] |
Function********************************************************************
Synopsis [Computes the time.]
Description [optional]
SideEffects [required]
SeeAlso [optional]
Definition at line 875 of file calPerformanceTest.c.
00876 { 00877 static long time_new, time_old; 00878 struct timeval t; 00879 static int flag = 0; 00880 00881 gettimeofday(&t, NULL); 00882 if (flag == 0){ 00883 time_old = time_new = t.tv_sec; 00884 flag = 1; 00885 } 00886 else { 00887 time_old = time_new; 00888 time_new = t.tv_sec; 00889 } 00890 return time_new-time_old; 00891 }
static void GetRandomNumbers | ( | int | lowerBound, | |
int | upperBound, | |||
int | count, | |||
int * | resultVector | |||
) | [static] |
Function********************************************************************
Synopsis [Generates "count" many random numbers ranging between "lowerBound" and "upperBound".]
Description [The restriction is that count <= upperBound-lowerBound+1. The size of the resultVector should be >= count.]
SideEffects [required]
SeeAlso [optional]
Definition at line 977 of file calPerformanceTest.c.
00978 { 00979 int i,j, tempVector[2048], number; 00980 int range = (upperBound - lowerBound + 1); 00981 00982 for (i=0; i<range; i++) tempVector[i] = lowerBound+i; 00983 for (i=0; i<count; i++){ 00984 number = (int)CalUtilRandom()% (range-i); 00985 resultVector[i] = tempVector[number]; 00986 for (j=number; j < range-i; j++){ 00987 tempVector[j] = tempVector[j+1]; 00988 } 00989 } 00990 /* 00991 fprintf(stdout,"%d\t%d\t%d\n", lowerBound, upperBound, count); 00992 for (i=0; i<count; i++) fprintf(stdout,"%d ", resultVector[i]); 00993 fprintf(stdout, "\n"); 00994 */ 00995 }
static long pageFaults | ( | void | ) | [static] |
Function********************************************************************
Synopsis [Computes the number of page faults.]
Description [optional]
SideEffects [required]
SeeAlso [optional]
Definition at line 941 of file calPerformanceTest.c.
00942 { 00943 #if HAVE_SYS_RESOURCE_H 00944 static long faultNew, faultOld; 00945 struct rusage rusage; 00946 static int flag = 0; 00947 00948 getrusage(RUSAGE_SELF, &rusage); 00949 if (flag == 0){ 00950 faultOld = faultNew = rusage.ru_majflt; 00951 flag = 1; 00952 } 00953 else { 00954 faultOld = faultNew; 00955 faultNew = rusage.ru_majflt; 00956 } 00957 return faultNew - faultOld; 00958 #else /* Don't have sys/resource.h */ 00959 return 0; 00960 #endif 00961 }
int ITERATION [static] |
CFile***********************************************************************
FileName [calPerformanceTest.c]
PackageName [cal]
Synopsis [This file contains the performance test routines for the CAL package.]
Description [optional]
SeeAlso [optional]
Author [Rajeev K. Ranjan (rajeev@eecs.berkeley.edu) Jagesh Sanghavi (sanghavi@eecs.berkeley.edu) ]
Copyright [Copyright (c) 1994-1996 The Regents of the Univ. of California. All rights reserved.
Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the above copyright notice and the following two paragraphs appear in all copies of this software.
IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.]
Revision [
]
Definition at line 62 of file calPerformanceTest.c.