Create GPU Inventory device

adds Item.accelerator interface for GPU devices

Tested
```
root@gb200nvl-obmc:~# busctl introspect xyz.openbmc_project.GpuSensor /xyz/openbmc_project/inventory/NVIDIA_GB200_GPU_0
NAME                                           TYPE      SIGNATURE RESULT/VALUE FLAGS
org.freedesktop.DBus.Introspectable            interface -         -            -
.Introspect                                    method    -         s            -
org.freedesktop.DBus.Peer                      interface -         -            -
.GetMachineId                                  method    -         s            -
.Ping                                          method    -         -            -
org.freedesktop.DBus.Properties                interface -         -            -
.Get                                           method    ss        v            -
.GetAll                                        method    s         a{sv}        -
.Set                                           method    ssv       -            -
.PropertiesChanged                             signal    sa{sv}as  -            -
xyz.openbmc_project.Inventory.Item.Accelerator interface -         -            -
.Type                                          property  s         "GPU"        emits-change
```

Change-Id: I20434529860cb37889e63651bbcd97cadfa9d54e
Signed-off-by: Rohit PAI <ropai@nvidia.com>
diff --git a/src/nvidia-gpu/Inventory.hpp b/src/nvidia-gpu/Inventory.hpp
new file mode 100644
index 0000000..255a5a4
--- /dev/null
+++ b/src/nvidia-gpu/Inventory.hpp
@@ -0,0 +1,35 @@
+#pragma once
+
+#include "MctpRequester.hpp"
+
+#include <NvidiaGpuMctpVdm.hpp>
+#include <sdbusplus/asio/connection.hpp>
+#include <sdbusplus/asio/object_server.hpp>
+
+#include <array>
+#include <memory>
+#include <string>
+
+class Inventory
+{
+  public:
+    enum class DeviceType
+    {
+        Unknown,
+        GPU,
+    };
+
+    Inventory(const std::shared_ptr<sdbusplus::asio::connection>& conn,
+              sdbusplus::asio::object_server& objectServer,
+              const std::string& inventoryName,
+              mctp::MctpRequester& mctpRequester, DeviceType deviceType,
+              uint8_t eid);
+
+  private:
+    std::shared_ptr<sdbusplus::asio::dbus_interface> acceleratorInterface;
+
+    std::string name;
+    mctp::MctpRequester& mctpRequester;
+    DeviceType deviceType;
+    uint8_t eid;
+};