From 601b78794817d489e7d7e0f717d431be625e19b8 Mon Sep 17 00:00:00 2001 From: Samuel Thibault <samuel.thibault@ens-lyon.org> Date: Mon, 22 Oct 2018 15:21:45 +0200 Subject: [PATCH] ooc: Only require page alignment when using o_direct backend --- runtime/starpu/control/runtime_descriptor.c | 28 ++++++++++++--------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/runtime/starpu/control/runtime_descriptor.c b/runtime/starpu/control/runtime_descriptor.c index 8da522d28..f1837489c 100644 --- a/runtime/starpu/control/runtime_descriptor.c +++ b/runtime/starpu/control/runtime_descriptor.c @@ -175,18 +175,22 @@ void RUNTIME_desc_create( CHAM_desc_t *desc ) #endif if (desc->ooc) { - int lastmm = desc->lm - (desc->lmt-1) * desc->mb; - int lastnn = desc->ln - (desc->lnt-1) * desc->nb; - int64_t eltsze = CHAMELEON_Element_Size(desc->dtyp); - int pagesize = getpagesize(); - - if ( ((desc->mb * desc->nb * eltsze) % pagesize != 0) || - ((lastmm * desc->nb * eltsze) % pagesize != 0) || - ((desc->mb * lastnn * eltsze) % pagesize != 0) || - ((lastmm * lastnn * eltsze) % pagesize != 0) ) - { - chameleon_error("RUNTIME_desc_create", "Matrix and tile size not suitable for out-of-core: all tiles have to be multiples of 4096. Tip : choose 'n' and 'nb' as both multiples of 32."); - return; + char *backend = getenv("STARPU_DISK_SWAP_BACKEND"); + + if (backend && strcmp(backend, "unistd_o_direct") == 0) { + int lastmm = desc->lm - (desc->lmt-1) * desc->mb; + int lastnn = desc->ln - (desc->lnt-1) * desc->nb; + int64_t eltsze = CHAMELEON_Element_Size(desc->dtyp); + int pagesize = getpagesize(); + + if ( ((desc->mb * desc->nb * eltsze) % pagesize != 0) || + ((lastmm * desc->nb * eltsze) % pagesize != 0) || + ((desc->mb * lastnn * eltsze) % pagesize != 0) || + ((lastmm * lastnn * eltsze) % pagesize != 0) ) + { + chameleon_error("RUNTIME_desc_create", "Matrix and tile size not suitable for out-of-core: all tiles have to be multiples of the system page size. Tip : choose 'n' and 'nb' as both multiples of 32."); + return; + } } } -- GitLab