Arcane  v4.1.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
AlinaSamplesCommon.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* AlinaSamplesCommon.cc (C) 2000-2026 */
9/* */
10/* Utilitary functions used by all samples. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "./AlinaSamplesCommon.h"
15
16#include "arcane/utils/Exception.h"
17#include "arcane/utils/PlatformUtils.h"
18#include "arcane/launcher/ArcaneLauncher.h"
19#include "arcane/core/ISubDomain.h"
20#include "arcane/core/IParallelMng.h"
21#include "arcane/utils/ITraceMng.h"
22#include "arcane/utils/IProfilingService.h"
23
24#include "arccore/base/ConcurrencyBase.h"
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
29namespace Arcane::Alina
30{
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34
35int SampleMainContext::
36execMain(MainFunction f, int argc, char* argv[])
37{
38 if (!f) {
39 std::cerr << "Invalid null functor 'f'\n";
40 return 1;
41 }
42
43 auto func = [&] {
44 CommandLineArguments cmd_line_args(&argc, &argv);
45 ArcaneLauncher::init(cmd_line_args);
46 StandaloneSubDomain launcher{ ArcaneLauncher::createStandaloneSubDomain({}) };
47 IProfilingService* ps = platform::getProfilingService();
48 ISubDomain* sd = launcher.subDomain();
49 ITraceMng* tm = sd->traceMng();
50 SampleMainContext ctx(tm, sd->acceleratorMng(), sd->parallelMng()->messagePassingMng());
51 std::cout << "ConcurrencyLevel=" << ConcurrencyBase::maxAllowedThread() << "\n";
52 {
53 ProfilingSentryWithInitialize ps_sentry(ps);
54 ps_sentry.setPrintAtEnd(true);
55 (*f)(ctx, argc, argv);
56 }
57 };
59}
60
61/*---------------------------------------------------------------------------*/
62/*---------------------------------------------------------------------------*/
63
64} // namespace Arcane::Alina
65
66/*---------------------------------------------------------------------------*/
67/*---------------------------------------------------------------------------*/
static void init(const CommandLineArguments &args)
Positionne les informations à partir des arguments de la ligne de commande et initialise le lanceur.
static StandaloneSubDomain createStandaloneSubDomain(const String &case_file_name)
Créé une implémentation autonome pour gérer un sous-domaine.
static Int32 maxAllowedThread()
Nombre maximum de threads autorisés pour le multi-threading.
IProfilingService * getProfilingService()
Service utilisé pour obtenir pour obtenir des informations de profiling.
Integer arcaneCallFunctionAndCatchException(std::function< void()> function)