Peano
Loading...
Searching...
No Matches
multicore.h
Go to the documentation of this file.
1// This file is part of the Peano project. For conditions of distribution and
2// use, please see the copyright notice at www.peano-framework.org
3
4#include <string>
5#include <set>
6#include <vector>
7#include <list>
8#include <limits>
9
10#include "config.h"
13
14#if defined(SharedOMP) || defined(SharedTBB) || defined(SharedCPP) || defined(SharedSYCL)
15#define SharedMemoryParallelisation
16#endif
17
18#pragma once
19
20namespace tarch {
151 namespace multicore {
155 class Task;
156
158
160
161 const std::set<TaskNumber> NoInDependencies = std::set<TaskNumber>();
162
170 void initSmartMPI();
171 void shutdownSmartMPI();
172
174
183
185
245 void spawnTask(
246 Task* task,
247 const std::set<TaskNumber>& inDependencies = tarch::multicore::NoInDependencies,
249 );
250
264 void waitForTasks(const std::set<TaskNumber>& inDependencies);
265
269 void waitForTask(const int taskNumber);
270
377 void spawnAndWait(const std::vector<Task*>& tasks);
378
379
380 namespace native {
397 void spawnAndWaitAsTaskLoop(const std::vector<tarch::multicore::Task*>& tasks);
398
423 void processFusedTask(Task* myTask, const std::list<tarch::multicore::Task*>& tasksOfSameType, int device);
424
551 void spawnTask(
552 Task* task,
553 const std::set<TaskNumber>& inDependencies,
554 const TaskNumber& taskNumber
555 );
556
584 void waitForTasks(const std::set<TaskNumber>& inDependencies);
585
606 void waitForAllTasks();
607 } // namespace native
608 void waitForAllTasks();
609 } // namespace multicore
610} // namespace tarch
Abstract super class for a job.
Definition Task.h:21
Interface for any task orchestration.
Definition Strategy.h:25
void spawnAndWaitAsTaskLoop(const std::vector< tarch::multicore::Task * > &tasks)
Map onto native tasking.
Definition Tasks.cpp:111
void processFusedTask(Task *myTask, const std::list< tarch::multicore::Task * > &tasksOfSameType, int device)
Process a fused task.
Definition Tasks.cpp:141
const std::set< TaskNumber > NoInDependencies
Definition multicore.h:161
void shutdownSmartMPI()
Definition multicore.cpp:49
tarch::multicore::orchestration::Strategy & getOrchestration()
Definition multicore.cpp:75
void waitForTask(const int taskNumber)
Wrapper around waitForTasks() with a single-element set.
Definition multicore.cpp:85
void waitForTasks(const std::set< TaskNumber > &inDependencies)
Wait for set of tasks.
Definition multicore.cpp:80
constexpr TaskNumber NoOutDependencies
Definition multicore.h:159
void setOrchestration(tarch::multicore::orchestration::Strategy *realisation)
Definition multicore.cpp:56
void spawnAndWait(const std::vector< Task * > &tasks)
Fork-join task submission pattern.
Definition multicore.cpp:91
tarch::multicore::orchestration::Strategy * swapOrchestration(tarch::multicore::orchestration::Strategy *realisation)
Swap the active orchestration.
Definition multicore.cpp:65
void spawnTask(Task *task, const std::set< TaskNumber > &inDependencies=tarch::multicore::NoInDependencies, const TaskNumber &taskNumber=tarch::multicore::NoOutDependencies)
Spawns a single task in a non-blocking fashion.
void initSmartMPI()
Switch on SmartMPI.
Definition multicore.cpp:33
Have to include this header, as I need access to the SYCL_EXTERNAL keyword.
Definition accelerator.h:19