{
    "CpuGpuExtendedPy": {
        "version": 1,
        "categories": "tutorials",
        "description": [
            "This is a tutorial node. It exercises functionality for accessing data in extended attributes that",
            "are on the GPU as well as those whose CPU/GPU location is decided at runtime. The compute",
            "adds the two inputs 'gpuData' and 'cpuData' together, placing the result in `cpuGpuSum`, whose",
            "memory location is determined by the 'gpu' flag.",
            "This node is identical to OgnTutorialCpuGpuExtended.ogn, except is is implemented in Python."
        ],
        "language": "python",
        "tags": ["tutorial", "extended", "gpu"],
        "uiName": "Tutorial Python Node: CPU/GPU Extended Attributes",
        "inputs": {
             "cpuData": {
                "type": "any",
                "description": "Input attribute whose data always lives on the CPU",
                "uiName": "CPU Input Attribute"
             },
             "gpuData": {
                 "type": "any",
                 "memoryType": "cuda",
                 "description": "Input attribute whose data always lives on the GPU",
                 "uiName": "GPU Input Attribute"
             },
             "gpu": {
                 "type": "bool",
                 "description": "If true then put the sum on the GPU, otherwise put it on the CPU",
                 "uiName": "Results To GPU"
             }
        },
        "outputs": {
            "cpuGpuSum": {
                "type": "any",
                "memoryType": "any",
                "description": [
                    "This is the attribute with the selected data. If the 'gpu' attribute is set to true then this",
                    "attribute's contents will be entirely on the GPU, otherwise it will be on the CPU."
                ],
                "uiName": "Sum"
             }
        }
    }
}
