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