From 47ced4e96bbb782b9e780e8f2cfc637b2c21ff44 Mon Sep 17 00:00:00 2001 From: Joshua Bakita Date: Mon, 19 Oct 2020 01:30:29 -0400 Subject: Enable internal DIS job looping and port to new extra.h API Changes to DIS code: - field, pointer, transitive, and update's random initialization steps moved the main job loop (so that they run on fresh state each job). - Moved free() calls outside of the job loop in matrix - Removed loose clock() call in pointer Misc fixes: - Added input file for neighborhood - Log status before, rather than after, printing in gen_input.py --- dis/Transitive/transitive.c | 57 +++++++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 28 deletions(-) (limited to 'dis/Transitive') diff --git a/dis/Transitive/transitive.c b/dis/Transitive/transitive.c index 51805a6..9337aad 100644 --- a/dis/Transitive/transitive.c +++ b/dis/Transitive/transitive.c @@ -61,42 +61,43 @@ int main(int argc, char **argv) { if ((dout = (unsigned int *)malloc(n * n * sizeof(unsigned int))) == NULL) return (-1); - for (i = 0; i < n * n; i++) { - *(din + i) = NO_PATH; - *(dout + i) = NO_PATH; - } - + SET_UP randInit(seed); - for (k = 0; k < m; k++) { - i = randInt(0, n - 1); - j = randInt(0, n - 1); - *(din + j * n + i) = randInt(MIN_EDGES, MAX_EDGES); - } - SET_UP - startTime = time(NULL); + for_each_job { + for (i = 0; i < n * n; i++) { + *(din + i) = NO_PATH; + *(dout + i) = NO_PATH; + } - START_LOOP - for (k = 0; k < n; k++) { - unsigned int old; - unsigned int new1; - unsigned int *dtemp; + for (k = 0; k < m; k++) { + i = randInt(0, n - 1); + j = randInt(0, n - 1); + *(din + j * n + i) = randInt(MIN_EDGES, MAX_EDGES); + } - for (i = 0; i < n; i++) { - for (j = 0; j < n; j++) { - old = *(din + j * n + i); - new1 = *(din + j * n + k) + *(din + k * n + i); - *(dout + j * n + i) = (new1 < old ? new1 : old); - assert(*(dout + j * n + i) <= NO_PATH); - assert(*(dout + j * n + i) <= *(din + j * n + i)); + startTime = time(NULL); + + for (k = 0; k < n; k++) { + unsigned int old; + unsigned int new1; + unsigned int *dtemp; + + for (i = 0; i < n; i++) { + for (j = 0; j < n; j++) { + old = *(din + j * n + i); + new1 = *(din + j * n + k) + *(din + k * n + i); + *(dout + j * n + i) = (new1 < old ? new1 : old); + assert(*(dout + j * n + i) <= NO_PATH); + assert(*(dout + j * n + i) <= *(din + j * n + i)); + } } + dtemp = dout; + dout = din; + din = dtemp; } - dtemp = dout; - dout = din; - din = dtemp; } - STOP_LOOP stopTime = time(NULL); for (j = 0; j < n; j++) { -- cgit v1.2.2