|
@@ -53,6 +53,28 @@ struct starpu_perfmodel_history_table
|
|
|
static pthread_rwlock_t registered_models_rwlock;
|
|
|
static struct _starpu_perfmodel_list *registered_models = NULL;
|
|
|
|
|
|
+size_t _starpu_job_get_data_size(struct starpu_perfmodel *model, enum starpu_perf_archtype arch, unsigned nimpl, struct _starpu_job *j)
|
|
|
+{
|
|
|
+ struct starpu_task *task = j->task;
|
|
|
+
|
|
|
+ if (model && model->per_arch[arch][nimpl].size_base) {
|
|
|
+ return model->per_arch[arch][nimpl].size_base(task, arch, nimpl);
|
|
|
+ } else if (model && model->size_base) {
|
|
|
+ return model->size_base(task, nimpl);
|
|
|
+ } else {
|
|
|
+ unsigned nbuffers = task->cl->nbuffers;
|
|
|
+ size_t size = 0;
|
|
|
+
|
|
|
+ unsigned buffer;
|
|
|
+ for (buffer = 0; buffer < nbuffers; buffer++)
|
|
|
+ {
|
|
|
+ starpu_data_handle_t handle = task->handles[buffer];
|
|
|
+ size += _starpu_data_get_size(handle);
|
|
|
+ }
|
|
|
+ return size;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* History based model
|
|
|
*/
|