diff --git a/Src/GroupTree/StarPUUtils/FStarPUFmmPrioritiesV2.hpp b/Src/GroupTree/StarPUUtils/FStarPUFmmPrioritiesV2.hpp index e410e4e4ef748dce8ea01dee58b24d5246615d4e..c3832b1af51439082d21607dbf362dc4c2769e1e 100644 --- a/Src/GroupTree/StarPUUtils/FStarPUFmmPrioritiesV2.hpp +++ b/Src/GroupTree/StarPUUtils/FStarPUFmmPrioritiesV2.hpp @@ -23,6 +23,7 @@ class FStarPUFmmPrioritiesV2{ int insertionPositionM2MSend; int insertionPositionM2L; + int insertionPositionM2LExtern; int insertionPositionL2L; int insertionPositionL2P; int insertionPositionP2P; @@ -80,6 +81,7 @@ public: insertionPositionL2L = incPrio++; FLOG( FLog::Controller << "\t L2L " << insertionPositionL2L << "\n" ); + insertionPositionM2LExtern = incPrio++; insertionPositionM2L = incPrio++; insertionPositionL2P = incPrio++; @@ -95,6 +97,7 @@ public: insertionPositionM2MSend = -1; insertionPositionM2M = -1; + insertionPositionM2LExtern = -1; insertionPositionM2L = -1; insertionPositionL2L = -1; @@ -153,6 +156,11 @@ public: heteroprio->buckets[insertionPositionL2L].valide_archs |= STARPU_CPU; } + if(!workOnlyOnLeaves && capacities->supportM2L(FSTARPU_CPU_IDX)){ + FLOG( FLog::Controller << "\t CPU prio M2L " << cpuCountPrio << " bucket " << insertionPositionM2LExtern << "\n" ); + heteroprio->prio_mapping_per_arch_index[FSTARPU_CPU_IDX][cpuCountPrio++] = insertionPositionM2LExtern; + heteroprio->buckets[insertionPositionM2LExtern].valide_archs |= STARPU_CPU; + } if(!workOnlyOnLeaves && capacities->supportM2L(FSTARPU_CPU_IDX)){ FLOG( FLog::Controller << "\t CPU prio M2L " << cpuCountPrio << " bucket " << insertionPositionM2L << "\n" ); heteroprio->prio_mapping_per_arch_index[FSTARPU_CPU_IDX][cpuCountPrio++] = insertionPositionM2L; @@ -195,11 +203,6 @@ public: } #endif } - if(capacities->supportP2PExtern(FSTARPU_CUDA_IDX)){ - FLOG( FLog::Controller << "\t CUDA prio P2P " << cudaCountPrio << " bucket " << insertionPositionP2PExtern << "\n" ); - heteroprio->prio_mapping_per_arch_index[FSTARPU_CUDA_IDX][cudaCountPrio++] = insertionPositionP2PExtern; - heteroprio->buckets[insertionPositionP2PExtern].valide_archs |= STARPU_CUDA; - } if(!workOnlyOnLeaves && capacities->supportM2L(FSTARPU_CUDA_IDX)){ FLOG( FLog::Controller << "\t CUDA prio M2L " << cudaCountPrio << " bucket " << insertionPositionM2L << "\n" ); @@ -207,6 +210,11 @@ public: heteroprio->buckets[insertionPositionM2L].valide_archs |= STARPU_CUDA; FAssertLF(capacities->supportM2LExtern(FSTARPU_CUDA_IDX)); } + if(capacities->supportP2PExtern(FSTARPU_CUDA_IDX)){ + FLOG( FLog::Controller << "\t CUDA prio P2P " << cudaCountPrio << " bucket " << insertionPositionP2PExtern << "\n" ); + heteroprio->prio_mapping_per_arch_index[FSTARPU_CUDA_IDX][cudaCountPrio++] = insertionPositionP2PExtern; + heteroprio->buckets[insertionPositionP2PExtern].valide_archs |= STARPU_CUDA; + } if( !workOnlyOnLeaves && capacities->supportP2M(FSTARPU_CUDA_IDX)){ FLOG( FLog::Controller << "\t CUDA prio P2M send " << cudaCountPrio << " bucket " << insertionPositionP2MSend << "\n" ); @@ -262,7 +270,7 @@ public: return insertionPositionM2L; } int getInsertionPosM2LExtern(const int /*inLevel*/) const { - return insertionPositionM2L; + return insertionPositionM2LExtern; } int getInsertionPosL2L(const int inLevel) const { return insertionPositionL2L;