From 8f2a3ebf44c82f07333c800a3dbe290d6a2ee5cb Mon Sep 17 00:00:00 2001 From: foreman Date: Mon, 11 Sep 2017 17:58:22 -0400 Subject: [PATCH] P4 to Git Change 1457530 by wchau@wchau_WIN_OCL_HSA on 2017/09/11 17:14:57 SWDEV-126884 - OCL 2.1 Platform APIs Affected files ... ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/amdocl.def.in#17 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/amdocl.map#4 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/amdocl.map.in#19 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_command.cpp#14 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_context.cpp#56 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_execute.cpp#24 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_icd.cpp#30 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_icd_amd.h#20 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_program.cpp#42 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_svm.cpp#21 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/khronos/headers/opencl2.1/CL/cl.h#5 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/khronos/headers/opencl2.2/CL/cl.h#2 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/command.hpp#86 edit [ROCm/clr commit: 5199f1bc48d883d0ec3ae574cc022b6fa8cd50e1] --- .../clr/rocclr/runtime/platform/command.hpp | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/projects/clr/rocclr/runtime/platform/command.hpp b/projects/clr/rocclr/runtime/platform/command.hpp index 91d4f18f82..2e6a0e075a 100644 --- a/projects/clr/rocclr/runtime/platform/command.hpp +++ b/projects/clr/rocclr/runtime/platform/command.hpp @@ -1232,6 +1232,50 @@ class SvmUnmapMemoryCommand : public Command { void* svmPtr() const { return svmPtr_; } }; +/*! \brief Enqueues a command to indicate which device a set of ranges of SVM allocations + * should be associated with. + */ +class SvmMigrateMemCommand: public Command { + private: + cl_mem_migration_flags migrationFlags_; //!< Migration flags + std::vector svmPointers_; //!< The list of SVM pointers + std::vector svmSizes_; //!< Number of bytes to be migrated for svm_pointers[i] + + public: + SvmMigrateMemCommand(HostQueue& queue, const EventWaitList& eventWaitList, + cl_uint numSvmPointers, const void** svmPointers, + const size_t *size, cl_mem_migration_flags flags) + : Command(queue, CL_COMMAND_SVM_MIGRATE_MEM, eventWaitList), migrationFlags_(flags) { + for (cl_uint i=0; i < numSvmPointers; i++) { + svmPointers_.push_back(svmPointers[i]); + if (size == NULL) { + svmSizes_.push_back(0); + } + else { + svmSizes_.push_back(size[i]); + } + } + } + + virtual void submit(device::VirtualDevice& device) { + //TODO: implement the submit function to the support device + // i.e. device.submitSvmMigrateMem(*this); + return; + } + + //! Returns the migration flags + cl_mem_migration_flags migrationFlags() const { return migrationFlags_; } + + //! Returns the number of svm pointers in the command + cl_uint numSvmPointers() const { return (cl_uint)svmPointers_.size(); } + + //! Returns a pointer to the svm pointers + const void* svmPointer(uint i) const { return svmPointers_[i]; } + + //! Returns a pointer to the size of svm range + const size_t svmSize(uint i) const { return svmSizes_[i]; } +}; + /*! \brief A generic transfer memory from/to file command. * * \details Currently supports buffers only. Buffers