Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 884a400d authored by BOUCHERIE Raphael's avatar BOUCHERIE Raphael
Browse files

added assert

parent 5fe500cd
No related branches found
No related tags found
1 merge request!6Tilesinfo struct
......@@ -3,7 +3,7 @@ CFLAGS = -Iinclude -Wall -g3
LDFLAGS = -lm
LIBHQR=src/libhqr.a
default: testing_pivgen testing_treedraw
default: testing_pivgen testing_treedraw testing_tileinit
src/queue.o: include/queue.h include/common.h
src/libhqr.o: include/common.h include/libhqr.h
......@@ -24,6 +24,9 @@ testing_pivgen : testings/testing_pivgen.o ${LIBHQR}
testing_treedraw : testings/testing_treedraw.o ${LIBHQR}
$(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS)
testing_tileinit : testings/testing_tileinit.o ${LIBHQR}
$(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS)
clean :
rm -f include/*~
rm -f src/*.o src/*~
......
......@@ -208,7 +208,7 @@ static int rdmtx_gettype(const libhqr_tree_t *qrtree, int k, int m){
static int rdmtx_currpiv(const libhqr_tree_t *qrtree, int k, int m){
int id, perm_m, p, a;
libhqr_tileinfo_t *arg = (libhqr_tileinfo_t*)(qrtree->args);
perm_m = hqr_getinvperm( qrtree, k, m );
perm_m = m;
p = qrtree->p;
a = qrtree->a;
myassert( (p==1) || (perm_m / (p*a)) == (m / (p*a)) );
......@@ -223,15 +223,11 @@ static int rdmtx_currpiv(const libhqr_tree_t *qrtree, int k, int m){
*/
static int rdmtx_nextpiv(const libhqr_tree_t *qrtree, int k, int p, int m){
int id, om, op;
int id;
libhqr_tileinfo_t *arg = (libhqr_tileinfo_t*)(qrtree->args);
int gmt = qrtree->mt;
om = m;
op = p;
m = hqr_getinvperm( qrtree, k, om);
p = hqr_getinvperm( qrtree, k, op);
myassert( m > p && p >= k );
myassert( m == gmt || op == rdmtx_currpiv( qrtree, k, om ) );
myassert( m == gmt || p == rdmtx_currpiv( qrtree, k, m ) );
if(m == qrtree->mt){
id = (k * qrtree->mt) + p;
return arg[id].first_nextpiv;
......@@ -243,15 +239,11 @@ static int rdmtx_nextpiv(const libhqr_tree_t *qrtree, int k, int p, int m){
}
static int rdmtx_prevpiv(const libhqr_tree_t *qrtree, int k, int p, int m){
int id, om, op;
int id;
libhqr_tileinfo_t *arg = (libhqr_tileinfo_t*)(qrtree->args);
int gmt = qrtree->mt;
om = m;
op = p;
m = hqr_getinvperm( qrtree, k, om );
p = hqr_getinvperm( qrtree, k, op );
myassert( m >= p && p >= k && m < gmt );
myassert( m == p || op == rdmtx_currpiv( qrtree, k, om ) );
myassert( m == p || p == rdmtx_currpiv( qrtree, k, m ) );
if(m == p){
id = (k * qrtree->mt) + p;
......@@ -361,7 +353,7 @@ static int hqr_geti( const libhqr_tree_t *qrtree, int k, int m )
int a = qrtree->a;
int p = qrtree->p;
int domino = qrtree->domino;
int lm = hqr_getinvperm( qrtree, k, m );
int lm = m;
int pos1, j, pa = p * a;
int nbextra1 = nbextra1_formula;
......@@ -397,7 +389,7 @@ static int hqr_gettype( const libhqr_tree_t *qrtree, int k, int m ) {
int p = qrtree->p;
int domino = qrtree->domino;
int lm = hqr_getinvperm( qrtree, k, m );
int lm = m;
myassert( lm >= k );
/* Element to be reduce in distributed */
......@@ -1353,19 +1345,15 @@ static void hqr_high_greedy_init(hqr_subpiv_t *arg, int minMN){
static int hqr_currpiv(const libhqr_tree_t *qrtree, int k, int m)
{
hqr_args_t *arg = (hqr_args_t*)(qrtree->args);
int tmp, tmpk, perm_m;
int tmp, tmpk;
int lm, rank;
int a = qrtree->a;
int p = qrtree->p;
int domino = qrtree->domino;
int gmt = qrtree->mt;
perm_m = hqr_getinvperm( qrtree, k, m );
lm = perm_m / p; /* Local index in the distribution over p domains */
rank = perm_m % p; /* Staring index in this distribution */
myassert( (p==1) || (perm_m / (p*a)) == (m / (p*a)) );
myassert( (p==1) || (perm_m % p) == (m % p) );
lm = m / p; /* Local index in the distribution over p domains */
rank = m % p; /* Staring index in this distribution */
/* TS level common to every case */
if ( domino ) {
......@@ -1379,7 +1367,7 @@ static int hqr_currpiv(const libhqr_tree_t *qrtree, int k, int m)
return tmp * a * p + rank ;
break;
case 1:
tmp = arg->llvl->currpiv(arg->llvl, k, perm_m);
tmp = arg->llvl->currpiv(arg->llvl, k, m);
return ( tmp == k / a ) ? k * p + rank : tmp * a * p + rank;
break;
case 2:
......@@ -1387,7 +1375,7 @@ static int hqr_currpiv(const libhqr_tree_t *qrtree, int k, int m)
break;
case 3:
if ( arg->hlvl != NULL )
return arg->hlvl->currpiv(arg->hlvl, k, perm_m);
return arg->hlvl->currpiv(arg->hlvl, k, m);
default:
return gmt;
}
......@@ -1399,20 +1387,20 @@ static int hqr_currpiv(const libhqr_tree_t *qrtree, int k, int m)
tmp = lm / a;
/* tmpk = (k + p - 1 - m%p) / p / a; */
tmpk = k / (p * a);
return ( tmp == tmpk ) ? k + (perm_m-k)%p : tmp * a * p + rank ;
return ( tmp == tmpk ) ? k + (m-k)%p : tmp * a * p + rank ;
break;
case 1:
tmp = arg->llvl->currpiv(arg->llvl, k, perm_m);
tmp = arg->llvl->currpiv(arg->llvl, k, m);
/* tmpk = (k + p - 1 - m%p) / p / a; */
tmpk = k / (p * a);
return ( tmp == tmpk ) ? k + (perm_m-k)%p : tmp * a * p + rank ;
return ( tmp == tmpk ) ? k + (m-k)%p : tmp * a * p + rank ;
break;
case 2:
return perm_m - p;
return m - p;
break;
case 3:
if ( arg->hlvl != NULL )
return arg->hlvl->currpiv(arg->hlvl, k, perm_m);
return arg->hlvl->currpiv(arg->hlvl, k, m);
default:
return gmt;
}
......@@ -1442,17 +1430,11 @@ static int hqr_nextpiv(const libhqr_tree_t *qrtree, int k, int pivot, int start)
{
hqr_args_t *arg = (hqr_args_t*)(qrtree->args);
int tmp, ls, lp, nextp;
int opivot, ostart; /* original values before permutation */
int lpivot, rpivot, lstart;
int a = qrtree->a;
int p = qrtree->p;
int gmt = qrtree->mt;
ostart = start;
opivot = pivot;
start = hqr_getinvperm( qrtree, k, ostart);
pivot = hqr_getinvperm( qrtree, k, opivot);
lpivot = pivot / p; /* Local index in the distribution over p domains */
rpivot = pivot % p; /* Staring index in this distribution */
......@@ -1460,11 +1442,11 @@ static int hqr_nextpiv(const libhqr_tree_t *qrtree, int k, int pivot, int start)
lstart = ( start == gmt ) ? arg->llvl->ldd * a : start / p;
myassert( start > pivot && pivot >= k );
myassert( start == gmt || opivot == hqr_currpiv( qrtree, k, ostart ) );
myassert( start == gmt || pivot == hqr_currpiv( qrtree, k, start ) );
/* TS level common to every case */
ls = (start < gmt) ? hqr_gettype( qrtree, k, ostart ) : -1;
lp = hqr_gettype( qrtree, k, opivot );
ls = (start < gmt) ? hqr_gettype( qrtree, k, start ) : -1;
lp = hqr_gettype( qrtree, k, pivot );
switch( ls )
{
......@@ -1572,27 +1554,21 @@ hqr_prevpiv(const libhqr_tree_t *qrtree, int k, int pivot, int start)
{
hqr_args_t *arg = (hqr_args_t*)(qrtree->args);
int tmp, ls, lp, nextp;
int opivot, ostart; /* original values before permutation */
int lpivot, rpivot, lstart;
int a = qrtree->a;
int p = qrtree->p;
int gmt = qrtree->mt;
ostart = start;
opivot = pivot;
start = hqr_getinvperm( qrtree, k, ostart );
pivot = hqr_getinvperm( qrtree, k, opivot );
lpivot = pivot / p; /* Local index in the distribution over p domains */
rpivot = pivot % p; /* Staring index in this distribution */
lstart = start / p; /* Local index in the distribution over p domains */
myassert( start >= pivot && pivot >= k && start < gmt );
myassert( start == pivot || opivot == hqr_currpiv( qrtree, k, ostart ) );
myassert( start == pivot || pivot == hqr_currpiv( qrtree, k, start ) );
/* T Slevel common to every case */
ls = hqr_gettype( qrtree, k, ostart );
lp = hqr_gettype( qrtree, k, opivot );
ls = hqr_gettype( qrtree, k, start );
lp = hqr_gettype( qrtree, k, pivot );
if ( lp == LIBHQR_KILLED_BY_TS )
return gmt;
......@@ -2860,6 +2836,10 @@ void libhqr_matrix_init(libhqr_tree_t *qrtree, const libhqr_tree_t *qrtree_init)
arg[tile_id].first_prevpiv = qrtree_init->prevpiv(qrtree_init, k, i, i);
arg[tile_id].nextpiv = qrtree_init->nextpiv(qrtree_init, k, p, i);
arg[tile_id].prevpiv = qrtree_init->prevpiv(qrtree_init, k, p, i);
assert( (arg[tile_id].nextpiv <= qrtree->mt && arg[tile_id].nextpiv >= k) || arg[tile_id].nextpiv==-1 );
assert( (arg[tile_id].prevpiv <= qrtree->mt && arg[tile_id].prevpiv >= k) || arg[tile_id].prevpiv==-1 );
assert( (arg[tile_id].first_nextpiv <= qrtree->mt && arg[tile_id].first_nextpiv >= k) || arg[tile_id].first_nextpiv==-1 );
assert( (arg[tile_id].first_prevpiv <= qrtree->mt && arg[tile_id].first_prevpiv >= k) || arg[tile_id].first_prevpiv==-1 );
}
}
qrtree->args = (void*)arg;
......
......@@ -18,20 +18,23 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include "libhqr.h"
int
main(int argc, char ** argv)
{
int rc;
libhqr_tree_t qrtree;
libhqr_tiledesc_t matrix;
libhqr_tileinfo_t *tiles;
memset( &qrtree, 0xdeadbeef, sizeof(libhqr_tree_t) );
matrix.nodes = 1;
matrix.p = 1;
matrix.mt = 3;
matrix.p = 3;
matrix.mt = 1;
matrix.nt = 1;
libhqr_hqr_init( &qrtree, LIBHQR_QR, &matrix, LIBHQR_BINARY_TREE, LIBHQR_FLAT_TREE, 1, 2, 0, 0);
libhqr_hqr_init( &qrtree, LIBHQR_QR, &matrix, 0, 0, 1, 3, 0, 0);
rc = libhqr_tree_check( &matrix, &qrtree );
libhqr_hqr_finalize( &qrtree );
free(tiles);
return 1;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment