P4 to Git Change 1475393 by lmoriche@lmoriche_opencl_dev2 on 2017/10/26 17:01:11

SWDEV-126884 - OCL 2.1 Platform APIs
	- Implement clGetKernelSubGroupInfo, clCloneKernel, clGetHostTimer and clGetHostAndDeviceTimer

Affected files ...

... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_device.cpp#68 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_execute.cpp#25 edit
... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_program.cpp#43 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/kernel.cpp#24 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/kernel.hpp#19 edit


[ROCm/clr commit: c9b973e307]
Этот коммит содержится в:
foreman
2017-10-26 17:08:01 -04:00
родитель 1653cb9849
Коммит aac9311992
2 изменённых файлов: 29 добавлений и 6 удалений
+7 -3
Просмотреть файл
@@ -13,13 +13,17 @@ namespace amd {
Kernel::Kernel(Program& program, const Symbol& symbol, const std::string& name)
: program_(program), symbol_(symbol), name_(name) {
const KernelSignature& s = signature();
size_t stackSize = s.paramsSize();
parameters_ = new (s) KernelParameters(s);
parameters_ = new (signature()) KernelParameters(signature());
fixme_guarantee(parameters_ != NULL && "out of memory");
name_ += '\0';
}
Kernel::Kernel(const Kernel& rhs)
: program_(rhs.program_()), symbol_(rhs.symbol_), name_(rhs.name_) {
parameters_ = new(signature()) KernelParameters(*rhs.parameters_);
fixme_guarantee(parameters_ != NULL && "out of memory");
}
Kernel::~Kernel() {
// Release kernel object itself
delete parameters_;
+22 -3
Просмотреть файл
@@ -93,13 +93,29 @@ class KernelParameters : protected HeapObject {
execNewVcop_(0),
execPfpaVcop_(0) {
values_ = (address) this + alignUp(sizeof(KernelParameters), 16);
defined_ = (bool*)(values_ + signature.paramsSize());
svmBound_ = (bool*)((address)defined_ + signature.numParameters() * sizeof(bool));
defined_ = (bool*)(values_ + signature_.paramsSize());
svmBound_ = (bool*)((address)defined_ + signature_.numParameters() * sizeof(bool));
address limit = (address)&svmBound_[signature.numParameters()];
address limit = (address)&svmBound_[signature_.numParameters()];
::memset(values_, '\0', limit - values_);
}
explicit KernelParameters(const KernelParameters& rhs)
: signature_(rhs.signature_),
execInfoOffset_(rhs.execInfoOffset_),
execSvmPtr_(rhs.execSvmPtr_),
svmSystemPointersSupport_(rhs.svmSystemPointersSupport_),
validated_(rhs.validated_),
execNewVcop_(rhs.execNewVcop_),
execPfpaVcop_(rhs.execPfpaVcop_) {
values_ = (address) this + alignUp(sizeof(KernelParameters), 16);
defined_ = (bool*)(values_ + signature_.paramsSize());
svmBound_ = (bool*)((address)defined_ + signature_.numParameters() * sizeof(bool));
address limit = (address)&svmBound_[signature_.numParameters()];
::memcpy(values_, rhs.values_, limit - values_);
}
//! Reset the parameter at the given \a index (becomes undefined).
void reset(size_t index) {
defined_[index] = false;
@@ -202,6 +218,9 @@ class Kernel : public RuntimeObject {
*/
Kernel(Program& program, const Symbol& symbol, const std::string& name);
//! Construct a new kernel object from an existing one. Used by CloneKernel.
explicit Kernel(const Kernel& rhs);
//! Return the program containing this kernel.
Program& program() const { return program_(); }