diff --git a/arm_compute/runtime/CL/CLTensorAllocator.h b/arm_compute/runtime/CL/CLTensorAllocator.h
index 7515074..6929d55 100644
--- a/arm_compute/runtime/CL/CLTensorAllocator.h
+++ b/arm_compute/runtime/CL/CLTensorAllocator.h
@@ -27,7 +27,7 @@
 #include "arm_compute/runtime/ITensorAllocator.h"
 
 #include "arm_compute/core/CL/OpenCL.h"
-
+#include "arm_compute/runtime/CL/SVMMemory.h"
 #include <cstdint>
 
 namespace arm_compute
@@ -68,6 +68,9 @@
      * @return pointer to the CL data.
      */
     const cl::Buffer &cl_data() const;
+    /** SVM memory */
+    void *svm_ptr();
+
     /** Enqueue a map operation of the allocated buffer on the given queue.
      *
      * @param[in,out] q        The CL command queue to use for the mapping operation.
@@ -121,6 +124,7 @@
     cl::Buffer     _buffer;                  /**< OpenCL buffer containing the tensor data. */
     uint8_t       *_mapping;                 /**< Pointer to the CPU mapping of the OpenCL buffer. */
     CLTensor      *_owner;                   /**< Owner of the allocator */
+    SVMMemory      _svm_memory;              /**< Svm memory */
 };
 }
 #endif /* __ARM_COMPUTE_CLTENSORALLOCATOR_H__ */
diff --git a/arm_compute/runtime/CL/SVMMemory.h b/arm_compute/runtime/CL/SVMMemory.h
new file mode 100644
index 0000000..1c90c27
--- /dev/null
+++ b/arm_compute/runtime/CL/SVMMemory.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2018 ARM Limited.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+#ifndef __ARM_COMPUTE_SVMMEMORY_H__
+#define __ARM_COMPUTE_SVMMEMORY_H__
+
+namespace arm_compute
+{
+    class SVMMemory final
+    {
+    public:
+        SVMMemory() = default;
+        SVMMemory(void *ptr, bool fine_grain)
+            : _ptr(ptr), _fine_grain(fine_grain), _size(0)
+        {
+        }
+        void *ptr() const
+        {
+            return _ptr;
+        }
+        bool fine_grain() const
+        {
+            return _fine_grain;
+        }
+        size_t size() const
+        {
+            return _size;
+        }
+        void *allocate(cl_context context, size_t size, cl_svm_mem_flags flags, cl_uint alignment);
+    private:
+        void *_ptr{ nullptr };
+        bool   _fine_grain{ false };
+        size_t _size{ 0 };
+    };
+}
+#endif /* __ARM_COMPUTE_SVMMEMORY_H__ */
