#include "masterTest.h" #include #include "../cnf.h" #include "../gpusolver.h" #include "../time.h" i32 runTests() { i32 res = runuf20(); if (res != 0) { printf("Failed tests in uf20\n"); return res; } res = runuf50(); if (res != 0) { printf("Failed tests in uf50\n"); return res; } res = runuuf50(); if (res != 0) { printf("Failed tests in uuf50\n"); } return res; } i32 runuf20() { gpusolver* gs = initSolver(); // printf("Running against uf20\n"); u32 passed = 0; u64 tottime = 0; for (u32 i = 0; i < 1000; ++i) { char buf[128]; i32 len = sprintf(buf, "/home/lev/Downloads/uf20/uf20-0%u.cnf", i + 1); cnf* c = readDIMACS(buf); sortlastnum(c); u64 start = utime(); i32 res = gpusolve2(gs, c); u64 stop = utime(); tottime += (stop - start); freecnf(c); if (res == 1) passed++; } // printf("Passed %u / 1000 tests\n", passed); // printf("Took %lf s total, %lf s on avg\n", ((f64) tottime) / 1000000.0, ((f64) tottime) / 1000000000.0); if (passed == 1000) return 0; freeSolver(gs); return 1; } i32 runuf50() { gpusolver* gs = initSolver(); // printf("Running against uf50\n"); u32 passed = 0; u64 tottime = 0; for (u32 i = 0; i < 1000; ++i) { char buf[128]; i32 len = sprintf(buf, "/home/lev/Downloads/uf50/uf50-0%u.cnf", i + 1); cnf* c = readDIMACS(buf); sortlastnum(c); u64 start = utime(); i32 res = gpusolve2(gs, c); u64 stop = utime(); tottime += (stop - start); freecnf(c); if (res == 1) passed++; } // printf("Passed %u / 1000 tests\n", passed); // printf("Took %lf s total, %lf s on avg\n", ((f64) tottime) / 1000000.0, ((f64) tottime) / 1000000000.0); if (passed == 1000) return 0; freeSolver(gs); return 1; } i32 runuuf50() { gpusolver* gs = initSolver(); // printf("Running against uuf50\n"); u32 passed = 0; u64 tottime = 0; for (u32 i = 0; i < 1000; ++i) { char buf[128]; i32 len = sprintf(buf, "/home/lev/Downloads/uuf50/uuf50-0%u.cnf", i + 1); cnf* c = readDIMACS(buf); sortlastnum(c); u64 start = utime(); i32 res = gpusolve2(gs, c); u64 stop = utime(); tottime += (stop - start); freecnf(c); if (res == 0) passed++; } // printf("Passed %u / 1000 tests\n", passed); // printf("Took %lf s total, %lf s on avg\n", ((f64) tottime) / 1000000.0, ((f64) tottime) / 1000000000.0); if (passed == 1000) return 0; freeSolver(gs); return 1; }