Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
DeviceId.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 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/* DeviceId.h (C) 2000-2022 */
9/* */
10/* Identifiant d'un composant du système. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ACCELERATOR_CORE_DEVICEID_H
13#define ARCANE_ACCELERATOR_CORE_DEVICEID_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane::Accelerator
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27/*!
28 * \brief Identifiant d'un composant du système.
29 *
30 * Le composant peut être un accélérateur ou l'hôte.
31 */
32class ARCANE_ACCELERATOR_CORE_EXPORT DeviceId
33{
34 private:
35
36 static constexpr Int32 HOST_ID = (-1);
37 static constexpr Int32 NULL_ID = (-2);
38
39 public:
40
41 //! Accélérateur par défaut (Device de numéro 0)
42 DeviceId() = default;
43
44 explicit DeviceId(Int32 id)
45 : m_device_id(id)
46 {
47 }
48
49 public:
50
51 //! Device représentant l'hôte.
52 static DeviceId hostDevice() { return DeviceId(HOST_ID); }
53
54 //! Device nulle ou invalide.
55 static DeviceId nullDevice() { return DeviceId(NULL_ID); }
56
57 public:
58
59 //! Indique si l'instance est associée à l'hôte.
60 bool isHost() const { return m_device_id == HOST_ID; }
61
62 //! Indique si l'instance n'est associée à aucune device
63 bool isNull() const { return m_device_id == NULL_ID; }
64
65 //! Indique si l'instance est associée à un accélérateur
66 bool isAccelerator() const { return m_device_id >= 0; }
67
68 //! Valeur numérique du device.
69 Int32 asInt32() const { return m_device_id; }
70
71 public:
72
73 friend ARCANE_ACCELERATOR_CORE_EXPORT
74 std::ostream&
75 operator<<(std::ostream& o, const DeviceId& device_id);
76
77 private:
78
79 Int32 m_device_id = 0;
80};
81
82/*---------------------------------------------------------------------------*/
83/*---------------------------------------------------------------------------*/
84
85} // End namespace Arcane
86
87/*---------------------------------------------------------------------------*/
88/*---------------------------------------------------------------------------*/
89
90#endif
Identifiant d'un composant du système.
Definition DeviceId.h:33
DeviceId()=default
Accélérateur par défaut (Device de numéro 0)
static DeviceId hostDevice()
Device représentant l'hôte.
Definition DeviceId.h:52
bool isHost() const
Indique si l'instance est associée à l'hôte.
Definition DeviceId.h:60
static DeviceId nullDevice()
Device nulle ou invalide.
Definition DeviceId.h:55
Int32 asInt32() const
Valeur numérique du device.
Definition DeviceId.h:69
bool isAccelerator() const
Indique si l'instance est associée à un accélérateur.
Definition DeviceId.h:66
bool isNull() const
Indique si l'instance n'est associée à aucune device.
Definition DeviceId.h:63
Espace de nom pour l'utilisation des accélérateurs.
std::ostream & operator<<(std::ostream &ostr, eItemKind item_kind)
Opérateur de sortie sur un flot.