/** * 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 SageMaker { namespace Model { /** *

Contains information about the output location for the compiled model and the * target device that the model runs on. TargetDevice and * TargetPlatform are mutually exclusive, so you need to choose one * between the two to specify your target device or platform. If you cannot find * your device you want to use from the TargetDevice list, use * TargetPlatform to describe the platform of your edge device and * CompilerOptions if there are specific settings that are required or * recommended to use for particular TargetPlatform.

See Also:

AWS * API Reference

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

Identifies the S3 bucket where you want Amazon SageMaker to store the model * artifacts. For example, s3://bucket-name/key-name-prefix.

*/ inline const Aws::String& GetS3OutputLocation() const{ return m_s3OutputLocation; } /** *

Identifies the S3 bucket where you want Amazon SageMaker to store the model * artifacts. For example, s3://bucket-name/key-name-prefix.

*/ inline bool S3OutputLocationHasBeenSet() const { return m_s3OutputLocationHasBeenSet; } /** *

Identifies the S3 bucket where you want Amazon SageMaker to store the model * artifacts. For example, s3://bucket-name/key-name-prefix.

*/ inline void SetS3OutputLocation(const Aws::String& value) { m_s3OutputLocationHasBeenSet = true; m_s3OutputLocation = value; } /** *

Identifies the S3 bucket where you want Amazon SageMaker to store the model * artifacts. For example, s3://bucket-name/key-name-prefix.

*/ inline void SetS3OutputLocation(Aws::String&& value) { m_s3OutputLocationHasBeenSet = true; m_s3OutputLocation = std::move(value); } /** *

Identifies the S3 bucket where you want Amazon SageMaker to store the model * artifacts. For example, s3://bucket-name/key-name-prefix.

*/ inline void SetS3OutputLocation(const char* value) { m_s3OutputLocationHasBeenSet = true; m_s3OutputLocation.assign(value); } /** *

Identifies the S3 bucket where you want Amazon SageMaker to store the model * artifacts. For example, s3://bucket-name/key-name-prefix.

*/ inline OutputConfig& WithS3OutputLocation(const Aws::String& value) { SetS3OutputLocation(value); return *this;} /** *

Identifies the S3 bucket where you want Amazon SageMaker to store the model * artifacts. For example, s3://bucket-name/key-name-prefix.

*/ inline OutputConfig& WithS3OutputLocation(Aws::String&& value) { SetS3OutputLocation(std::move(value)); return *this;} /** *

Identifies the S3 bucket where you want Amazon SageMaker to store the model * artifacts. For example, s3://bucket-name/key-name-prefix.

*/ inline OutputConfig& WithS3OutputLocation(const char* value) { SetS3OutputLocation(value); return *this;} /** *

Identifies the target device or the machine learning instance that you want * to run your model on after the compilation has completed. Alternatively, you can * specify OS, architecture, and accelerator using TargetPlatform fields. It * can be used instead of TargetPlatform.

*/ inline const TargetDevice& GetTargetDevice() const{ return m_targetDevice; } /** *

Identifies the target device or the machine learning instance that you want * to run your model on after the compilation has completed. Alternatively, you can * specify OS, architecture, and accelerator using TargetPlatform fields. It * can be used instead of TargetPlatform.

*/ inline bool TargetDeviceHasBeenSet() const { return m_targetDeviceHasBeenSet; } /** *

Identifies the target device or the machine learning instance that you want * to run your model on after the compilation has completed. Alternatively, you can * specify OS, architecture, and accelerator using TargetPlatform fields. It * can be used instead of TargetPlatform.

*/ inline void SetTargetDevice(const TargetDevice& value) { m_targetDeviceHasBeenSet = true; m_targetDevice = value; } /** *

Identifies the target device or the machine learning instance that you want * to run your model on after the compilation has completed. Alternatively, you can * specify OS, architecture, and accelerator using TargetPlatform fields. It * can be used instead of TargetPlatform.

*/ inline void SetTargetDevice(TargetDevice&& value) { m_targetDeviceHasBeenSet = true; m_targetDevice = std::move(value); } /** *

Identifies the target device or the machine learning instance that you want * to run your model on after the compilation has completed. Alternatively, you can * specify OS, architecture, and accelerator using TargetPlatform fields. It * can be used instead of TargetPlatform.

*/ inline OutputConfig& WithTargetDevice(const TargetDevice& value) { SetTargetDevice(value); return *this;} /** *

Identifies the target device or the machine learning instance that you want * to run your model on after the compilation has completed. Alternatively, you can * specify OS, architecture, and accelerator using TargetPlatform fields. It * can be used instead of TargetPlatform.

*/ inline OutputConfig& WithTargetDevice(TargetDevice&& value) { SetTargetDevice(std::move(value)); return *this;} /** *

Contains information about a target platform that you want your model to run * on, such as OS, architecture, and accelerators. It is an alternative of * TargetDevice.

The following examples show how to configure * the TargetPlatform and CompilerOptions JSON strings * for popular target platforms:

  • Raspberry Pi 3 Model B+

    * "TargetPlatform": {"Os": "LINUX", "Arch": "ARM_EABIHF"},

    * "CompilerOptions": {'mattr': ['+neon']}

  • Jetson * TX2

    "TargetPlatform": {"Os": "LINUX", "Arch": "ARM64", * "Accelerator": "NVIDIA"},

    "CompilerOptions": {'gpu-code': * 'sm_62', 'trt-ver': '6.0.1', 'cuda-ver': '10.0'}

  • EC2 * m5.2xlarge instance OS

    "TargetPlatform": {"Os": "LINUX", "Arch": * "X86_64", "Accelerator": "NVIDIA"},

    "CompilerOptions": * {'mcpu': 'skylake-avx512'}

  • RK3399

    * "TargetPlatform": {"Os": "LINUX", "Arch": "ARM64", "Accelerator": * "MALI"}

  • ARMv7 phone (CPU)

    * "TargetPlatform": {"Os": "ANDROID", "Arch": "ARM_EABI"},

    * "CompilerOptions": {'ANDROID_PLATFORM': 25, 'mattr': ['+neon']} *

  • ARMv8 phone (CPU)

    "TargetPlatform": {"Os": * "ANDROID", "Arch": "ARM64"},

    "CompilerOptions": * {'ANDROID_PLATFORM': 29}

*/ inline const TargetPlatform& GetTargetPlatform() const{ return m_targetPlatform; } /** *

Contains information about a target platform that you want your model to run * on, such as OS, architecture, and accelerators. It is an alternative of * TargetDevice.

The following examples show how to configure * the TargetPlatform and CompilerOptions JSON strings * for popular target platforms:

  • Raspberry Pi 3 Model B+

    * "TargetPlatform": {"Os": "LINUX", "Arch": "ARM_EABIHF"},

    * "CompilerOptions": {'mattr': ['+neon']}

  • Jetson * TX2

    "TargetPlatform": {"Os": "LINUX", "Arch": "ARM64", * "Accelerator": "NVIDIA"},

    "CompilerOptions": {'gpu-code': * 'sm_62', 'trt-ver': '6.0.1', 'cuda-ver': '10.0'}

  • EC2 * m5.2xlarge instance OS

    "TargetPlatform": {"Os": "LINUX", "Arch": * "X86_64", "Accelerator": "NVIDIA"},

    "CompilerOptions": * {'mcpu': 'skylake-avx512'}

  • RK3399

    * "TargetPlatform": {"Os": "LINUX", "Arch": "ARM64", "Accelerator": * "MALI"}

  • ARMv7 phone (CPU)

    * "TargetPlatform": {"Os": "ANDROID", "Arch": "ARM_EABI"},

    * "CompilerOptions": {'ANDROID_PLATFORM': 25, 'mattr': ['+neon']} *

  • ARMv8 phone (CPU)

    "TargetPlatform": {"Os": * "ANDROID", "Arch": "ARM64"},

    "CompilerOptions": * {'ANDROID_PLATFORM': 29}

*/ inline bool TargetPlatformHasBeenSet() const { return m_targetPlatformHasBeenSet; } /** *

Contains information about a target platform that you want your model to run * on, such as OS, architecture, and accelerators. It is an alternative of * TargetDevice.

The following examples show how to configure * the TargetPlatform and CompilerOptions JSON strings * for popular target platforms:

  • Raspberry Pi 3 Model B+

    * "TargetPlatform": {"Os": "LINUX", "Arch": "ARM_EABIHF"},

    * "CompilerOptions": {'mattr': ['+neon']}

  • Jetson * TX2

    "TargetPlatform": {"Os": "LINUX", "Arch": "ARM64", * "Accelerator": "NVIDIA"},

    "CompilerOptions": {'gpu-code': * 'sm_62', 'trt-ver': '6.0.1', 'cuda-ver': '10.0'}

  • EC2 * m5.2xlarge instance OS

    "TargetPlatform": {"Os": "LINUX", "Arch": * "X86_64", "Accelerator": "NVIDIA"},

    "CompilerOptions": * {'mcpu': 'skylake-avx512'}

  • RK3399

    * "TargetPlatform": {"Os": "LINUX", "Arch": "ARM64", "Accelerator": * "MALI"}

  • ARMv7 phone (CPU)

    * "TargetPlatform": {"Os": "ANDROID", "Arch": "ARM_EABI"},

    * "CompilerOptions": {'ANDROID_PLATFORM': 25, 'mattr': ['+neon']} *

  • ARMv8 phone (CPU)

    "TargetPlatform": {"Os": * "ANDROID", "Arch": "ARM64"},

    "CompilerOptions": * {'ANDROID_PLATFORM': 29}

*/ inline void SetTargetPlatform(const TargetPlatform& value) { m_targetPlatformHasBeenSet = true; m_targetPlatform = value; } /** *

Contains information about a target platform that you want your model to run * on, such as OS, architecture, and accelerators. It is an alternative of * TargetDevice.

The following examples show how to configure * the TargetPlatform and CompilerOptions JSON strings * for popular target platforms:

  • Raspberry Pi 3 Model B+

    * "TargetPlatform": {"Os": "LINUX", "Arch": "ARM_EABIHF"},

    * "CompilerOptions": {'mattr': ['+neon']}

  • Jetson * TX2

    "TargetPlatform": {"Os": "LINUX", "Arch": "ARM64", * "Accelerator": "NVIDIA"},

    "CompilerOptions": {'gpu-code': * 'sm_62', 'trt-ver': '6.0.1', 'cuda-ver': '10.0'}

  • EC2 * m5.2xlarge instance OS

    "TargetPlatform": {"Os": "LINUX", "Arch": * "X86_64", "Accelerator": "NVIDIA"},

    "CompilerOptions": * {'mcpu': 'skylake-avx512'}

  • RK3399

    * "TargetPlatform": {"Os": "LINUX", "Arch": "ARM64", "Accelerator": * "MALI"}

  • ARMv7 phone (CPU)

    * "TargetPlatform": {"Os": "ANDROID", "Arch": "ARM_EABI"},

    * "CompilerOptions": {'ANDROID_PLATFORM': 25, 'mattr': ['+neon']} *

  • ARMv8 phone (CPU)

    "TargetPlatform": {"Os": * "ANDROID", "Arch": "ARM64"},

    "CompilerOptions": * {'ANDROID_PLATFORM': 29}

*/ inline void SetTargetPlatform(TargetPlatform&& value) { m_targetPlatformHasBeenSet = true; m_targetPlatform = std::move(value); } /** *

Contains information about a target platform that you want your model to run * on, such as OS, architecture, and accelerators. It is an alternative of * TargetDevice.

The following examples show how to configure * the TargetPlatform and CompilerOptions JSON strings * for popular target platforms:

  • Raspberry Pi 3 Model B+

    * "TargetPlatform": {"Os": "LINUX", "Arch": "ARM_EABIHF"},

    * "CompilerOptions": {'mattr': ['+neon']}

  • Jetson * TX2

    "TargetPlatform": {"Os": "LINUX", "Arch": "ARM64", * "Accelerator": "NVIDIA"},

    "CompilerOptions": {'gpu-code': * 'sm_62', 'trt-ver': '6.0.1', 'cuda-ver': '10.0'}

  • EC2 * m5.2xlarge instance OS

    "TargetPlatform": {"Os": "LINUX", "Arch": * "X86_64", "Accelerator": "NVIDIA"},

    "CompilerOptions": * {'mcpu': 'skylake-avx512'}

  • RK3399

    * "TargetPlatform": {"Os": "LINUX", "Arch": "ARM64", "Accelerator": * "MALI"}

  • ARMv7 phone (CPU)

    * "TargetPlatform": {"Os": "ANDROID", "Arch": "ARM_EABI"},

    * "CompilerOptions": {'ANDROID_PLATFORM': 25, 'mattr': ['+neon']} *

  • ARMv8 phone (CPU)

    "TargetPlatform": {"Os": * "ANDROID", "Arch": "ARM64"},

    "CompilerOptions": * {'ANDROID_PLATFORM': 29}

*/ inline OutputConfig& WithTargetPlatform(const TargetPlatform& value) { SetTargetPlatform(value); return *this;} /** *

Contains information about a target platform that you want your model to run * on, such as OS, architecture, and accelerators. It is an alternative of * TargetDevice.

The following examples show how to configure * the TargetPlatform and CompilerOptions JSON strings * for popular target platforms:

  • Raspberry Pi 3 Model B+

    * "TargetPlatform": {"Os": "LINUX", "Arch": "ARM_EABIHF"},

    * "CompilerOptions": {'mattr': ['+neon']}

  • Jetson * TX2

    "TargetPlatform": {"Os": "LINUX", "Arch": "ARM64", * "Accelerator": "NVIDIA"},

    "CompilerOptions": {'gpu-code': * 'sm_62', 'trt-ver': '6.0.1', 'cuda-ver': '10.0'}

  • EC2 * m5.2xlarge instance OS

    "TargetPlatform": {"Os": "LINUX", "Arch": * "X86_64", "Accelerator": "NVIDIA"},

    "CompilerOptions": * {'mcpu': 'skylake-avx512'}

  • RK3399

    * "TargetPlatform": {"Os": "LINUX", "Arch": "ARM64", "Accelerator": * "MALI"}

  • ARMv7 phone (CPU)

    * "TargetPlatform": {"Os": "ANDROID", "Arch": "ARM_EABI"},

    * "CompilerOptions": {'ANDROID_PLATFORM': 25, 'mattr': ['+neon']} *

  • ARMv8 phone (CPU)

    "TargetPlatform": {"Os": * "ANDROID", "Arch": "ARM64"},

    "CompilerOptions": * {'ANDROID_PLATFORM': 29}

*/ inline OutputConfig& WithTargetPlatform(TargetPlatform&& value) { SetTargetPlatform(std::move(value)); return *this;} /** *

Specifies additional parameters for compiler options in JSON format. The * compiler options are TargetPlatform specific. It is required for * NVIDIA accelerators and highly recommended for CPU compliations. For any other * cases, it is optional to specify CompilerOptions.

  • *

    CPU: Compilation for CPU supports the following compiler * options.

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

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

  • ARM: Details of * ARM CPU compilations.

    • NEON: NEON is an * implementation of the Advanced SIMD extension used in ARMv7 processors.

      *

      For example, add {'mattr': ['+neon']} to the compiler options if * compiling for ARM 32-bit platform with the NEON support.

  • *
  • NVIDIA: Compilation for NVIDIA GPU supports the following * compiler options.

    • gpu_code: Specifies the * targeted architecture.

    • trt-ver: Specifies the * TensorRT versions in x.y.z. format.

    • cuda-ver: * Specifies the CUDA version in x.y format.

    For example, * {'gpu-code': 'sm_72', 'trt-ver': '6.0.1', 'cuda-ver': '10.1'}

    *
  • ANDROID: Compilation for the Android OS supports the * following compiler options:

    • ANDROID_PLATFORM: * Specifies the Android API levels. Available levels range from 21 to 29. For * example, {'ANDROID_PLATFORM': 28}.

    • * mattr: Add {'mattr': ['+neon']} to compiler options if * compiling for ARM 32-bit platform with NEON support.

*/ inline const Aws::String& GetCompilerOptions() const{ return m_compilerOptions; } /** *

Specifies additional parameters for compiler options in JSON format. The * compiler options are TargetPlatform specific. It is required for * NVIDIA accelerators and highly recommended for CPU compliations. For any other * cases, it is optional to specify CompilerOptions.

  • *

    CPU: Compilation for CPU supports the following compiler * options.

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

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

  • ARM: Details of * ARM CPU compilations.

    • NEON: NEON is an * implementation of the Advanced SIMD extension used in ARMv7 processors.

      *

      For example, add {'mattr': ['+neon']} to the compiler options if * compiling for ARM 32-bit platform with the NEON support.

  • *
  • NVIDIA: Compilation for NVIDIA GPU supports the following * compiler options.

    • gpu_code: Specifies the * targeted architecture.

    • trt-ver: Specifies the * TensorRT versions in x.y.z. format.

    • cuda-ver: * Specifies the CUDA version in x.y format.

    For example, * {'gpu-code': 'sm_72', 'trt-ver': '6.0.1', 'cuda-ver': '10.1'}

    *
  • ANDROID: Compilation for the Android OS supports the * following compiler options:

    • ANDROID_PLATFORM: * Specifies the Android API levels. Available levels range from 21 to 29. For * example, {'ANDROID_PLATFORM': 28}.

    • * mattr: Add {'mattr': ['+neon']} to compiler options if * compiling for ARM 32-bit platform with NEON support.

*/ inline bool CompilerOptionsHasBeenSet() const { return m_compilerOptionsHasBeenSet; } /** *

Specifies additional parameters for compiler options in JSON format. The * compiler options are TargetPlatform specific. It is required for * NVIDIA accelerators and highly recommended for CPU compliations. For any other * cases, it is optional to specify CompilerOptions.

  • *

    CPU: Compilation for CPU supports the following compiler * options.

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

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

  • ARM: Details of * ARM CPU compilations.

    • NEON: NEON is an * implementation of the Advanced SIMD extension used in ARMv7 processors.

      *

      For example, add {'mattr': ['+neon']} to the compiler options if * compiling for ARM 32-bit platform with the NEON support.

  • *
  • NVIDIA: Compilation for NVIDIA GPU supports the following * compiler options.

    • gpu_code: Specifies the * targeted architecture.

    • trt-ver: Specifies the * TensorRT versions in x.y.z. format.

    • cuda-ver: * Specifies the CUDA version in x.y format.

    For example, * {'gpu-code': 'sm_72', 'trt-ver': '6.0.1', 'cuda-ver': '10.1'}

    *
  • ANDROID: Compilation for the Android OS supports the * following compiler options:

    • ANDROID_PLATFORM: * Specifies the Android API levels. Available levels range from 21 to 29. For * example, {'ANDROID_PLATFORM': 28}.

    • * mattr: Add {'mattr': ['+neon']} to compiler options if * compiling for ARM 32-bit platform with NEON support.

*/ inline void SetCompilerOptions(const Aws::String& value) { m_compilerOptionsHasBeenSet = true; m_compilerOptions = value; } /** *

Specifies additional parameters for compiler options in JSON format. The * compiler options are TargetPlatform specific. It is required for * NVIDIA accelerators and highly recommended for CPU compliations. For any other * cases, it is optional to specify CompilerOptions.

  • *

    CPU: Compilation for CPU supports the following compiler * options.

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

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

  • ARM: Details of * ARM CPU compilations.

    • NEON: NEON is an * implementation of the Advanced SIMD extension used in ARMv7 processors.

      *

      For example, add {'mattr': ['+neon']} to the compiler options if * compiling for ARM 32-bit platform with the NEON support.

  • *
  • NVIDIA: Compilation for NVIDIA GPU supports the following * compiler options.

    • gpu_code: Specifies the * targeted architecture.

    • trt-ver: Specifies the * TensorRT versions in x.y.z. format.

    • cuda-ver: * Specifies the CUDA version in x.y format.

    For example, * {'gpu-code': 'sm_72', 'trt-ver': '6.0.1', 'cuda-ver': '10.1'}

    *
  • ANDROID: Compilation for the Android OS supports the * following compiler options:

    • ANDROID_PLATFORM: * Specifies the Android API levels. Available levels range from 21 to 29. For * example, {'ANDROID_PLATFORM': 28}.

    • * mattr: Add {'mattr': ['+neon']} to compiler options if * compiling for ARM 32-bit platform with NEON support.

*/ inline void SetCompilerOptions(Aws::String&& value) { m_compilerOptionsHasBeenSet = true; m_compilerOptions = std::move(value); } /** *

Specifies additional parameters for compiler options in JSON format. The * compiler options are TargetPlatform specific. It is required for * NVIDIA accelerators and highly recommended for CPU compliations. For any other * cases, it is optional to specify CompilerOptions.

  • *

    CPU: Compilation for CPU supports the following compiler * options.

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

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

  • ARM: Details of * ARM CPU compilations.

    • NEON: NEON is an * implementation of the Advanced SIMD extension used in ARMv7 processors.

      *

      For example, add {'mattr': ['+neon']} to the compiler options if * compiling for ARM 32-bit platform with the NEON support.

  • *
  • NVIDIA: Compilation for NVIDIA GPU supports the following * compiler options.

    • gpu_code: Specifies the * targeted architecture.

    • trt-ver: Specifies the * TensorRT versions in x.y.z. format.

    • cuda-ver: * Specifies the CUDA version in x.y format.

    For example, * {'gpu-code': 'sm_72', 'trt-ver': '6.0.1', 'cuda-ver': '10.1'}

    *
  • ANDROID: Compilation for the Android OS supports the * following compiler options:

    • ANDROID_PLATFORM: * Specifies the Android API levels. Available levels range from 21 to 29. For * example, {'ANDROID_PLATFORM': 28}.

    • * mattr: Add {'mattr': ['+neon']} to compiler options if * compiling for ARM 32-bit platform with NEON support.

*/ inline void SetCompilerOptions(const char* value) { m_compilerOptionsHasBeenSet = true; m_compilerOptions.assign(value); } /** *

Specifies additional parameters for compiler options in JSON format. The * compiler options are TargetPlatform specific. It is required for * NVIDIA accelerators and highly recommended for CPU compliations. For any other * cases, it is optional to specify CompilerOptions.

  • *

    CPU: Compilation for CPU supports the following compiler * options.

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

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

  • ARM: Details of * ARM CPU compilations.

    • NEON: NEON is an * implementation of the Advanced SIMD extension used in ARMv7 processors.

      *

      For example, add {'mattr': ['+neon']} to the compiler options if * compiling for ARM 32-bit platform with the NEON support.

  • *
  • NVIDIA: Compilation for NVIDIA GPU supports the following * compiler options.

    • gpu_code: Specifies the * targeted architecture.

    • trt-ver: Specifies the * TensorRT versions in x.y.z. format.

    • cuda-ver: * Specifies the CUDA version in x.y format.

    For example, * {'gpu-code': 'sm_72', 'trt-ver': '6.0.1', 'cuda-ver': '10.1'}

    *
  • ANDROID: Compilation for the Android OS supports the * following compiler options:

    • ANDROID_PLATFORM: * Specifies the Android API levels. Available levels range from 21 to 29. For * example, {'ANDROID_PLATFORM': 28}.

    • * mattr: Add {'mattr': ['+neon']} to compiler options if * compiling for ARM 32-bit platform with NEON support.

*/ inline OutputConfig& WithCompilerOptions(const Aws::String& value) { SetCompilerOptions(value); return *this;} /** *

Specifies additional parameters for compiler options in JSON format. The * compiler options are TargetPlatform specific. It is required for * NVIDIA accelerators and highly recommended for CPU compliations. For any other * cases, it is optional to specify CompilerOptions.

  • *

    CPU: Compilation for CPU supports the following compiler * options.

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

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

  • ARM: Details of * ARM CPU compilations.

    • NEON: NEON is an * implementation of the Advanced SIMD extension used in ARMv7 processors.

      *

      For example, add {'mattr': ['+neon']} to the compiler options if * compiling for ARM 32-bit platform with the NEON support.

  • *
  • NVIDIA: Compilation for NVIDIA GPU supports the following * compiler options.

    • gpu_code: Specifies the * targeted architecture.

    • trt-ver: Specifies the * TensorRT versions in x.y.z. format.

    • cuda-ver: * Specifies the CUDA version in x.y format.

    For example, * {'gpu-code': 'sm_72', 'trt-ver': '6.0.1', 'cuda-ver': '10.1'}

    *
  • ANDROID: Compilation for the Android OS supports the * following compiler options:

    • ANDROID_PLATFORM: * Specifies the Android API levels. Available levels range from 21 to 29. For * example, {'ANDROID_PLATFORM': 28}.

    • * mattr: Add {'mattr': ['+neon']} to compiler options if * compiling for ARM 32-bit platform with NEON support.

*/ inline OutputConfig& WithCompilerOptions(Aws::String&& value) { SetCompilerOptions(std::move(value)); return *this;} /** *

Specifies additional parameters for compiler options in JSON format. The * compiler options are TargetPlatform specific. It is required for * NVIDIA accelerators and highly recommended for CPU compliations. For any other * cases, it is optional to specify CompilerOptions.

  • *

    CPU: Compilation for CPU supports the following compiler * options.

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

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

  • ARM: Details of * ARM CPU compilations.

    • NEON: NEON is an * implementation of the Advanced SIMD extension used in ARMv7 processors.

      *

      For example, add {'mattr': ['+neon']} to the compiler options if * compiling for ARM 32-bit platform with the NEON support.

  • *
  • NVIDIA: Compilation for NVIDIA GPU supports the following * compiler options.

    • gpu_code: Specifies the * targeted architecture.

    • trt-ver: Specifies the * TensorRT versions in x.y.z. format.

    • cuda-ver: * Specifies the CUDA version in x.y format.

    For example, * {'gpu-code': 'sm_72', 'trt-ver': '6.0.1', 'cuda-ver': '10.1'}

    *
  • ANDROID: Compilation for the Android OS supports the * following compiler options:

    • ANDROID_PLATFORM: * Specifies the Android API levels. Available levels range from 21 to 29. For * example, {'ANDROID_PLATFORM': 28}.

    • * mattr: Add {'mattr': ['+neon']} to compiler options if * compiling for ARM 32-bit platform with NEON support.

*/ inline OutputConfig& WithCompilerOptions(const char* value) { SetCompilerOptions(value); return *this;} private: Aws::String m_s3OutputLocation; bool m_s3OutputLocationHasBeenSet; TargetDevice m_targetDevice; bool m_targetDeviceHasBeenSet; TargetPlatform m_targetPlatform; bool m_targetPlatformHasBeenSet; Aws::String m_compilerOptions; bool m_compilerOptionsHasBeenSet; }; } // namespace Model } // namespace SageMaker } // namespace Aws