From c757e51cb0966deef399fe5b4726867cb574a696 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Tue, 8 Oct 2013 12:46:06 +0100 Subject: [PATCH] fixes, small improvements in functionality --- packages/cuda/cuda.c | 2 ++ packages/cuda/cuda.yap | 20 +++++++++++++++----- packages/cuda/memory.cu | 4 +++- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/packages/cuda/cuda.c b/packages/cuda/cuda.c index deb874b12..7885fd2a5 100644 --- a/packages/cuda/cuda.c +++ b/packages/cuda/cuda.c @@ -264,6 +264,7 @@ cuda_eval( void ) } out = YAP_MkPairTerm(YAP_MkApplTerm( f, ncols, vec ), out); } + free( mat ); return YAP_Unify(YAP_ARG2, out); } @@ -275,6 +276,7 @@ static int cuda_count( void ) if (n < 0) return FALSE; + free( mat ); return YAP_Unify(YAP_ARG2, YAP_MkIntTerm(n)); } diff --git a/packages/cuda/cuda.yap b/packages/cuda/cuda.yap index c455d26f9..a965586c1 100644 --- a/packages/cuda/cuda.yap +++ b/packages/cuda/cuda.yap @@ -1,16 +1,22 @@ -:- module(bdd, [cuda_extensional/2, - cuda_rule/2, - cuda_erase/1, - cuda_eval/2, - cuda_count/2]). +:- module(cuda, [cuda_extensional/2, + cuda_inline/2, + cuda_rule/2, + cuda_erase/1, + cuda_eval/2, + cuda_count/2]). tell_warning :- print_message(warning,functionality(cuda)). +:- dynamic inline/2. + :- catch(load_foreign_files([cuda], [], init_cuda),_,fail) -> true ; tell_warning. :- meta_predicate cudda_extensional(:,-). +cuda_inline(P, Q) :- + assert(inline(P,Q)). + cuda_extensional( Call, IdFacts) :- strip_module(Call, Mod, Name/Arity), functor(S, Name, Arity), @@ -27,6 +33,10 @@ cuda_rule((Head :- Body) , IdRules) :- body_to_list( (B1, B2), LF, L0, N0, NF) :- !, body_to_list( B1, LF, LI, N0, N1), body_to_list( B2, LI, L0, N1, NF). +body_to_list( true, L, L, N, N) :- !. +body_to_list( B, [NB|L], L, N0, N) :- + inline( B, NB ), !, + N is N0+1. body_to_list( B, [B|L], L, N0, N) :- N is N0+1. diff --git a/packages/cuda/memory.cu b/packages/cuda/memory.cu index 42c3e332d..ce29061c3 100644 --- a/packages/cuda/memory.cu +++ b/packages/cuda/memory.cu @@ -1,7 +1,6 @@ #include #include #include -#include #include #include #include "lista.h" @@ -347,6 +346,9 @@ int cargafinal(int name, int cols, int **ptr) } cout << "select finala" << endl;*/ + GPUmem.clear(); + CPUmem.clear(); + *ptr = ini; return cont; }