/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace LookoutforVision { namespace Model { /** *

The platform on which a model runs on an AWS IoT Greengrass core * device.

See Also:

AWS * API Reference

*/ class TargetPlatform { public: AWS_LOOKOUTFORVISION_API TargetPlatform(); AWS_LOOKOUTFORVISION_API TargetPlatform(Aws::Utils::Json::JsonView jsonValue); AWS_LOOKOUTFORVISION_API TargetPlatform& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_LOOKOUTFORVISION_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The target operating system for the model. Linux is the only operating system * that is currently supported.

*/ inline const TargetPlatformOs& GetOs() const{ return m_os; } /** *

The target operating system for the model. Linux is the only operating system * that is currently supported.

*/ inline bool OsHasBeenSet() const { return m_osHasBeenSet; } /** *

The target operating system for the model. Linux is the only operating system * that is currently supported.

*/ inline void SetOs(const TargetPlatformOs& value) { m_osHasBeenSet = true; m_os = value; } /** *

The target operating system for the model. Linux is the only operating system * that is currently supported.

*/ inline void SetOs(TargetPlatformOs&& value) { m_osHasBeenSet = true; m_os = std::move(value); } /** *

The target operating system for the model. Linux is the only operating system * that is currently supported.

*/ inline TargetPlatform& WithOs(const TargetPlatformOs& value) { SetOs(value); return *this;} /** *

The target operating system for the model. Linux is the only operating system * that is currently supported.

*/ inline TargetPlatform& WithOs(TargetPlatformOs&& value) { SetOs(std::move(value)); return *this;} /** *

The target architecture for the model. The currently supported architectures * are X86_64 (64-bit version of the x86 instruction set) and ARM_64 (ARMv8 64-bit * CPU).

*/ inline const TargetPlatformArch& GetArch() const{ return m_arch; } /** *

The target architecture for the model. The currently supported architectures * are X86_64 (64-bit version of the x86 instruction set) and ARM_64 (ARMv8 64-bit * CPU).

*/ inline bool ArchHasBeenSet() const { return m_archHasBeenSet; } /** *

The target architecture for the model. The currently supported architectures * are X86_64 (64-bit version of the x86 instruction set) and ARM_64 (ARMv8 64-bit * CPU).

*/ inline void SetArch(const TargetPlatformArch& value) { m_archHasBeenSet = true; m_arch = value; } /** *

The target architecture for the model. The currently supported architectures * are X86_64 (64-bit version of the x86 instruction set) and ARM_64 (ARMv8 64-bit * CPU).

*/ inline void SetArch(TargetPlatformArch&& value) { m_archHasBeenSet = true; m_arch = std::move(value); } /** *

The target architecture for the model. The currently supported architectures * are X86_64 (64-bit version of the x86 instruction set) and ARM_64 (ARMv8 64-bit * CPU).

*/ inline TargetPlatform& WithArch(const TargetPlatformArch& value) { SetArch(value); return *this;} /** *

The target architecture for the model. The currently supported architectures * are X86_64 (64-bit version of the x86 instruction set) and ARM_64 (ARMv8 64-bit * CPU).

*/ inline TargetPlatform& WithArch(TargetPlatformArch&& value) { SetArch(std::move(value)); return *this;} /** *

The target accelerator for the model. Currently, Amazon Lookout for Vision * only supports NVIDIA (Nvidia graphics processing unit) and CPU accelerators. If * you specify NVIDIA as an accelerator, you must also specify the * gpu-code, trt-ver, and cuda-ver compiler * options. If you don't specify an accelerator, Lookout for Vision uses the CPU * for compilation and we highly recommend that you use the * GreengrassConfiguration$CompilerOptions field. For example, you can use * the following compiler options for CPU:

  • mcpu: * CPU micro-architecture. For example, {'mcpu': 'skylake-avx512'} *

  • mattr: CPU flags. For example, {'mattr': * ['+neon', '+vfpv4']}

*/ inline const TargetPlatformAccelerator& GetAccelerator() const{ return m_accelerator; } /** *

The target accelerator for the model. Currently, Amazon Lookout for Vision * only supports NVIDIA (Nvidia graphics processing unit) and CPU accelerators. If * you specify NVIDIA as an accelerator, you must also specify the * gpu-code, trt-ver, and cuda-ver compiler * options. If you don't specify an accelerator, Lookout for Vision uses the CPU * for compilation and we highly recommend that you use the * GreengrassConfiguration$CompilerOptions field. For example, you can use * the following compiler options for CPU:

  • mcpu: * CPU micro-architecture. For example, {'mcpu': 'skylake-avx512'} *

  • mattr: CPU flags. For example, {'mattr': * ['+neon', '+vfpv4']}

*/ inline bool AcceleratorHasBeenSet() const { return m_acceleratorHasBeenSet; } /** *

The target accelerator for the model. Currently, Amazon Lookout for Vision * only supports NVIDIA (Nvidia graphics processing unit) and CPU accelerators. If * you specify NVIDIA as an accelerator, you must also specify the * gpu-code, trt-ver, and cuda-ver compiler * options. If you don't specify an accelerator, Lookout for Vision uses the CPU * for compilation and we highly recommend that you use the * GreengrassConfiguration$CompilerOptions field. For example, you can use * the following compiler options for CPU:

  • mcpu: * CPU micro-architecture. For example, {'mcpu': 'skylake-avx512'} *

  • mattr: CPU flags. For example, {'mattr': * ['+neon', '+vfpv4']}

*/ inline void SetAccelerator(const TargetPlatformAccelerator& value) { m_acceleratorHasBeenSet = true; m_accelerator = value; } /** *

The target accelerator for the model. Currently, Amazon Lookout for Vision * only supports NVIDIA (Nvidia graphics processing unit) and CPU accelerators. If * you specify NVIDIA as an accelerator, you must also specify the * gpu-code, trt-ver, and cuda-ver compiler * options. If you don't specify an accelerator, Lookout for Vision uses the CPU * for compilation and we highly recommend that you use the * GreengrassConfiguration$CompilerOptions field. For example, you can use * the following compiler options for CPU:

  • mcpu: * CPU micro-architecture. For example, {'mcpu': 'skylake-avx512'} *

  • mattr: CPU flags. For example, {'mattr': * ['+neon', '+vfpv4']}

*/ inline void SetAccelerator(TargetPlatformAccelerator&& value) { m_acceleratorHasBeenSet = true; m_accelerator = std::move(value); } /** *

The target accelerator for the model. Currently, Amazon Lookout for Vision * only supports NVIDIA (Nvidia graphics processing unit) and CPU accelerators. If * you specify NVIDIA as an accelerator, you must also specify the * gpu-code, trt-ver, and cuda-ver compiler * options. If you don't specify an accelerator, Lookout for Vision uses the CPU * for compilation and we highly recommend that you use the * GreengrassConfiguration$CompilerOptions field. For example, you can use * the following compiler options for CPU:

  • mcpu: * CPU micro-architecture. For example, {'mcpu': 'skylake-avx512'} *

  • mattr: CPU flags. For example, {'mattr': * ['+neon', '+vfpv4']}

*/ inline TargetPlatform& WithAccelerator(const TargetPlatformAccelerator& value) { SetAccelerator(value); return *this;} /** *

The target accelerator for the model. Currently, Amazon Lookout for Vision * only supports NVIDIA (Nvidia graphics processing unit) and CPU accelerators. If * you specify NVIDIA as an accelerator, you must also specify the * gpu-code, trt-ver, and cuda-ver compiler * options. If you don't specify an accelerator, Lookout for Vision uses the CPU * for compilation and we highly recommend that you use the * GreengrassConfiguration$CompilerOptions field. For example, you can use * the following compiler options for CPU:

  • mcpu: * CPU micro-architecture. For example, {'mcpu': 'skylake-avx512'} *

  • mattr: CPU flags. For example, {'mattr': * ['+neon', '+vfpv4']}

*/ inline TargetPlatform& WithAccelerator(TargetPlatformAccelerator&& value) { SetAccelerator(std::move(value)); return *this;} private: TargetPlatformOs m_os; bool m_osHasBeenSet = false; TargetPlatformArch m_arch; bool m_archHasBeenSet = false; TargetPlatformAccelerator m_accelerator; bool m_acceleratorHasBeenSet = false; }; } // namespace Model } // namespace LookoutforVision } // namespace Aws