{
    "CudaCpuArrays" : {
        "version": 1,
        "memoryType": "cuda",
        "cudaPointers": "cpu",
        "description": [
            "This is a tutorial node. It illustrates the alternative method of extracting pointers to GPU array data",
            "in which the pointer returned is a CPU pointer and can be dereferenced on the CPU side. Without the",
            "cudaPointers value set that pointer would be a GPU pointer to an array of GPU pointers and could",
            "only be dereferenced on the device."
        ],
        "metadata":
        {
            "uiName": "Tutorial Node: Attributes With CUDA Array Pointers In Cpu Memory"
        },
        "categories": "tutorials",
        "inputs": {
            "points": {
                "type": "float[3][]",
                "memoryType": "any",
                "description": ["Array of points to be moved"],
                "default": []
            },
            "multiplier": {
                "type": "float[3]",
                "description": ["Amplitude of the expansion for the input points"],
                "default": [1.0, 1.0, 1.0]
            }
        },
        "outputs": {
            "points": {
                "type": "float[3][]",
                "description": ["Final positions of points"]
            }
        },
        "tests": [
            {
                "inputs:multiplier": [1.0, 2.0, 3.0],
                "inputs:points": [[1.0, 1.0, 1.0], [2.0, 2.0, 2.0], [3.0, 3.0, 3.0]],
                "outputs:points": [[1.0, 2.0, 3.0], [2.0, 4.0, 6.0], [3.0, 6.0, 9.0]]
            }
        ]
    }
}
