/******************************** Author: Sravanthi Kota Venkata ********************************/ #include #include #include "svm.h" #include #include "extra.h" #define SVM_MEM 1<<24 int main(int argc, char* argv[]) { SET_UP mallopt(M_TOP_PAD, SVM_MEM); mallopt(M_MMAP_MAX, 0); int iter, N, Ntst, i, j, k, n; F2D* trn1, *tst1, *trn2, *tst2, *Yoffset; alphaRet* alpha; F2D *a_result, *result; F2D *s; F2D *b_result; F2D *Xtst, *Ytst; char im1[256]; int dim = 256; N = 100; Ntst = 100; iter = 10; #ifdef test N = 4; Ntst = 4; iter = 2; #endif #ifdef sim_fast N = 20; Ntst = 20; iter = 2; #endif #ifdef sim N = 16; Ntst = 16; iter = 8; #endif #ifdef sqcif N = 60; Ntst = 60; iter = 6; #endif #ifdef qcif N = 72; Ntst = 72; iter = 8; #endif #ifdef vga N = 450; Ntst = 450; iter = 15; #endif #ifdef wuxga N = 1000; Ntst = 1000; iter = 20; #endif // trn file 1 scanf("%s", im1); trn1 = readFile(im1); // trn file 2 scanf("%s", im1); trn2 = readFile(im1); // tst file 1 scanf("%s", im1); tst1 = readFile(im1); // tst file 2 scanf("%s", im1); tst2 = readFile(im1); for_each_job { alpha = getAlphaFromTrainSet(N, trn1, trn2, iter); a_result = alpha->a_result; b_result = alpha->b_result; Yoffset = fSetArray(iter, N, 0); Xtst = usps_read_partial(tst1, tst2, -1, 1, Ntst/iter, iter); Ytst = usps_read_partial(tst1, tst2, -1, 0, Ntst/iter, iter); for(i=0; i 0) { F2D *Xtemp, *XtstTemp, *X; X = alpha->X; Xtemp = fDeepCopyRange(X,j,1,0,X->width); XtstTemp = fDeepCopyRange(Xtst, n,1,0,Xtst->width); asubsref(s,i) = asubsref(s,i) + subsref(a_result,i,j) * subsref(Yoffset,i,j) * polynomial(3,Xtemp,XtstTemp, dim); fFreeHandle(Xtemp); fFreeHandle(XtstTemp); } } asubsref(s,i) = asubsref(s,i) - asubsref(b_result,i); if( asubsref(s,i) > maxs) maxs = asubsref(s,i); } fFreeHandle(s); asubsref(result,n) = maxs; } } #ifdef CHECK /** Self checking - use expected.txt from data directory **/ { int ret=0; float tol = 0.5; #ifdef GENERATE_OUTPUT fWriteMatrix(result, argv[1]); #endif ret = fSelfCheck(result, "expected_C.txt", tol); if (ret == -1) printf("Error in SVM\n"); } /** Self checking done **/ #endif fFreeHandle(trn1); fFreeHandle(tst1); fFreeHandle(trn2); fFreeHandle(tst2); fFreeHandle(Yoffset); fFreeHandle(result); fFreeHandle(alpha->a_result); fFreeHandle(alpha->b_result); fFreeHandle(alpha->X); free(alpha); fFreeHandle(Xtst); fFreeHandle(Ytst); WRITE_TO_FILE return 0; }