diff --git a/eib_bandwidth/eib_bandwidth.c b/eib_bandwidth/eib_bandwidth.c index 7475bcb..851004e 100644 --- a/eib_bandwidth/eib_bandwidth.c +++ b/eib_bandwidth/eib_bandwidth.c @@ -15,14 +15,14 @@ extern spe_program_handle_t simple_spu; extern int ptn; -#define SPU_THREADS 8 +#define SPU_THREADS 6 typedef struct pattern_s{ int id1; int id2; }pattern_t; - +#if SPU_THREADS==8 pattern_t patterns[][4] ={ { {1, 3}, @@ -70,8 +70,37 @@ pattern_t patterns[][4] ={ } }; +#endif - +#if SPU_THREADS==6 +pattern_t patterns[][4] ={ + { + {0,3}, + {1,4}, + {2,5} + }, + { + {0,1}, + {2,3}, + {4,5} + }, + { + {0,2}, + {1,4}, + {3,5} + }, + { + {0,5}, + {1,4}, + {2,3} + }, + { + {0,4}, + {1,5}, + {2,3} + } +}; +#endif int friend_spu[8]; @@ -80,7 +109,7 @@ void display_friend_spu(void) { int i; printf("We are testing pattern: \n"); - for (i = 0; i < 4; i++){ + for (i = 0; i < SPU_THREADS; i++){ printf("%d<->%d\n", i, friend_spu[i]); } } @@ -89,9 +118,9 @@ process_pattern(pattern_t* p) { int i; - for (i = 0; i < 4 ;i ++){ - if (p[i].id1 < 0 || p[i].id1 > 7 - || p[i].id2 < 0 || p[i].id2 > 7){ + for (i = 0; i < SPU_THREADS/2 ;i ++){ + if (p[i].id1 < 0 || p[i].id1 > (SPU_THREADS - 1) + || p[i].id2 < 0 || p[i].id2 > (SPU_THREADS - 1)){ fprintf(stderr, "ERROR: invalid pattern\n"); return -1; } @@ -286,7 +315,7 @@ int main(int argc, char **argv) //avetime = (gettime() - 0.000465)/NUM_TEST; printf("time spent %f, EIB bandwidth=%f GB/s\n", - avetime, (8*BUFSIZE/avetime)*NUM_TEST*1.0e-9 ); + avetime, (SPU_THREADS*BUFSIZE/avetime)*NUM_TEST*1.0e-9 ); /* Wait for SPU-thread to complete execution. */