Commit 1320b55d authored by Philippe SWARTVAGHER's avatar Philippe SWARTVAGHER
Browse files

Address network performance sensible to data locality in model

parent 42fe986f
......@@ -79,8 +79,7 @@ class CommCompModel:
self.comm_alone_model = [self.comm_alone_bw] * len(self.x_model)
if predict_now:
self.__predict_total()
self.__predict_comm_comp()
self.predict()
def print_params(self):
print(f"max_together_i: {self.max_together_i:8d} [x={self.xs[self.max_together_i]}]")
......@@ -95,10 +94,13 @@ class CommCompModel:
print(f"comm_alone_bw: {self.comm_alone_bw:10.1f}")
print(f"xs: {self.xs}")
def __predict_total(self):
if self.total_model is not None:
return
def predict(self):
self.__predict_total()
self.__predict_comm_comp()
def __predict_total(self):
# Compute what is the total throughput the memory system can support:
# This is just a trick to know later more easily if we reach the maximum
# or not. The values can be different (higher) than lonely computations,
......@@ -114,11 +116,6 @@ class CommCompModel:
def __predict_comm_comp(self):
if self.comm_with_comp_model is not None:
assert(self.comp_with_comm_model is not None)
assert(self.comp_alone_model is not None)
return
self.comm_with_comp_model = []
self.comp_with_comm_model = []
self.comp_alone_model = []
......
#!/usr/bin/env python3
import argparse
import copy
import glob
import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator
......@@ -148,9 +149,18 @@ for numa_comp in range(topo.nb_numa_nodes_total):
# Decision of which model to apply for communications:
if cli_args.model:
if numa_comp == numa_comm and numa_comp >= topo.nb_numa_nodes_per_socket:
# Remote, diagonal
comm_values_model = model_remote.comm_with_comp_model
else:
comm_values_model = model_local.comm_with_comp_model
comm_model = copy.deepcopy(model_local)
if numa_comm >= topo.nb_numa_nodes_per_socket:
# On some machines (eg AMD with IB 200GB/s) the network
# performance is very sensible to placement, so use the
# nominal remote perf for all configuration where the comm
# memory is bound remotely.
comm_model.comm_alone_bw = model_remote.comm_alone_bw
comm_model.predict()
comm_values_model = comm_model.comm_with_comp_model
graph.add_comm_curve(
comm_values_model,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment