Skip to content

Commit 153b3f9

Browse files
committed
[Offload]: Skip copying of unused kernel-mapped data
1 parent 02f78ec commit 153b3f9

File tree

2 files changed

+40
-34
lines changed

2 files changed

+40
-34
lines changed

offload/include/OpenMP/Mapping.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -388,10 +388,9 @@ struct LookupResult {
388388
TargetPointerResultTy TPR;
389389

390390
bool isEmpty() const {
391-
bool IsEmpty = Flags.IsContained == 0
392-
&& Flags.ExtendsBefore == 0
393-
&& Flags.ExtendsAfter == 0;
394-
return IsEmpty;
391+
bool IsEmpty = Flags.IsContained == 0 && Flags.ExtendsBefore == 0 &&
392+
Flags.ExtendsAfter == 0;
393+
return IsEmpty;
395394
}
396395
};
397396

offload/libomptarget/omptarget.cpp

Lines changed: 37 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1201,11 +1201,11 @@ class PrivateArgumentManagerTy {
12011201
/// takes a conservative approach, i.e. it may return false
12021202
/// negatives but it should never return a false positive.
12031203
static bool isArgUnused(tgt_map_type ArgType) {
1204-
bool IsArgUnused = ArgType == OMP_TGT_MAPTYPE_NONE
1205-
|| ArgType == OMP_TGT_MAPTYPE_FROM
1206-
|| ArgType == OMP_TGT_MAPTYPE_TO
1207-
|| ArgType == (OMP_TGT_MAPTYPE_FROM | OMP_TGT_MAPTYPE_TO);
1208-
return IsArgUnused;
1204+
bool IsArgUnused = ArgType == OMP_TGT_MAPTYPE_NONE ||
1205+
ArgType == OMP_TGT_MAPTYPE_FROM ||
1206+
ArgType == OMP_TGT_MAPTYPE_TO ||
1207+
ArgType == (OMP_TGT_MAPTYPE_FROM | OMP_TGT_MAPTYPE_TO);
1208+
return IsArgUnused;
12091209
}
12101210

12111211
/// Try to find redundant mappings associated with a kernel launch,
@@ -1220,13 +1220,13 @@ static std::unique_ptr<int64_t[]> maskRedundantTransfers(DeviceTy &Device, int32
12201220
bool AllArgsUnused = true;
12211221

12221222
for (int32_t I = 0; I < ArgNum; ++I) {
1223-
bool IsCustomMapped = ArgMappers && ArgMappers[I];
1223+
bool IsCustomMapped = ArgMappers && ArgMappers[I];
12241224

1225-
if (IsCustomMapped) {
1226-
ArgTypesOverride[I] = ArgTypes[I];
1227-
AllArgsUnused = false;
1228-
continue;
1229-
}
1225+
if (IsCustomMapped) {
1226+
ArgTypesOverride[I] = ArgTypes[I];
1227+
AllArgsUnused = false;
1228+
continue;
1229+
}
12301230

12311231
tgt_map_type ArgType = (tgt_map_type) ArgTypes[I];
12321232

@@ -1235,47 +1235,54 @@ static std::unique_ptr<int64_t[]> maskRedundantTransfers(DeviceTy &Device, int32
12351235
// Check for unused `map(buf[0:size])` mappings
12361236
IsArgUnused |= isArgUnused(ArgType);
12371237

1238-
bool IsArgMemberPtr = ArgType & OMP_TGT_MAPTYPE_MEMBER_OF
1239-
&& ArgType & OMP_TGT_MAPTYPE_PTR_AND_OBJ;
1238+
bool IsArgMemberPtr = ArgType & OMP_TGT_MAPTYPE_MEMBER_OF &&
1239+
ArgType & OMP_TGT_MAPTYPE_PTR_AND_OBJ;
12401240

1241-
tgt_map_type ArgTypeMemberPtrMasked = (tgt_map_type) (ArgType & ~(OMP_TGT_MAPTYPE_MEMBER_OF | OMP_TGT_MAPTYPE_PTR_AND_OBJ));
1241+
tgt_map_type ArgTypeMemberPtrMasked =
1242+
(tgt_map_type)(ArgType & ~(OMP_TGT_MAPTYPE_MEMBER_OF |
1243+
OMP_TGT_MAPTYPE_PTR_AND_OBJ));
12421244

12431245
// Check for unused `map(wrapper.buf[0:size])` mappings
1244-
IsArgUnused |= AllArgsUnused && IsArgMemberPtr && isArgUnused(ArgTypeMemberPtrMasked);
1246+
IsArgUnused |= AllArgsUnused && IsArgMemberPtr &&
1247+
isArgUnused(ArgTypeMemberPtrMasked);
12451248

12461249
if (!IsArgUnused) {
1247-
ArgTypesOverride[I] = ArgTypes[I];
1248-
AllArgsUnused = false;
1249-
continue;
1250+
ArgTypesOverride[I] = ArgTypes[I];
1251+
AllArgsUnused = false;
1252+
continue;
12501253
}
12511254

12521255
MappingInfoTy &MappingInfo = Device.getMappingInfo();
1253-
MappingInfoTy::HDTTMapAccessorTy HDTTMap = MappingInfo
1254-
.HostDataToTargetMap.getExclusiveAccessor();
1256+
MappingInfoTy::HDTTMapAccessorTy HDTTMap =
1257+
MappingInfo.HostDataToTargetMap.getExclusiveAccessor();
12551258

1256-
bool IsExistingMapping = !MappingInfo.lookupMapping(HDTTMap, ArgPtrs[I], ArgSizes[I]).isEmpty();
1259+
bool IsExistingMapping =
1260+
!MappingInfo.lookupMapping(HDTTMap, ArgPtrs[I], ArgSizes[I])
1261+
.isEmpty();
12571262

12581263
if (IsExistingMapping) {
1259-
ArgTypesOverride[I] = ArgTypes[I];
1260-
AllArgsUnused = false;
1261-
continue;
1264+
ArgTypesOverride[I] = ArgTypes[I];
1265+
AllArgsUnused = false;
1266+
continue;
12621267
}
12631268

1264-
[[maybe_unused]] const std::string Name = ArgNames && ArgNames[I] ?
1265-
getNameFromMapping(ArgNames[I]) : std::string("unknown");
1269+
[[maybe_unused]] const std::string Name =
1270+
ArgNames && ArgNames[I] ? getNameFromMapping(ArgNames[I])
1271+
: std::string("unknown");
12661272

12671273
bool IsArgFrom = ArgType & OMP_TGT_MAPTYPE_FROM;
12681274
bool IsArgTo = ArgType & OMP_TGT_MAPTYPE_TO;
12691275

12701276
[[maybe_unused]] const char *Type = IsArgFrom && IsArgTo ? "tofrom"
1271-
: IsArgFrom ? "from"
1272-
: IsArgTo ? "to"
1273-
: "unknown";
1277+
: IsArgFrom ? "from"
1278+
: IsArgTo ? "to"
1279+
: "unknown";
12741280

12751281
INFO(OMP_INFOTYPE_REDUNDANT_TRANSFER, Device.DeviceID, "%s(%s)[%" PRId64 "] %s\n", Type,
12761282
Name.c_str(), ArgSizes[I], "is not used and will not be copied");
12771283

1278-
ArgTypesOverride[I] = ArgType & ~(OMP_TGT_MAPTYPE_TO | OMP_TGT_MAPTYPE_FROM);
1284+
ArgTypesOverride[I] =
1285+
ArgType & ~(OMP_TGT_MAPTYPE_TO | OMP_TGT_MAPTYPE_FROM);
12791286
}
12801287

12811288
return ArgTypesOverride;

0 commit comments

Comments
 (0)