From f21a37f54ef6136d1b487fc43840de414ef2fd35 Mon Sep 17 00:00:00 2001 From: foreman Date: Thu, 20 Oct 2016 19:02:38 -0400 Subject: [PATCH] P4 to Git Change 1329590 by gandryey@gera-w8 on 2016/10/20 18:27:28 SWDEV-86035 - Add PAL backend to OpenCL - Disable data segment load for internal blit kernels. It should affect V2 binaries only http://ocltc.amd.com/reviews/r/11630/ Affected files ... ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprogram.cpp#9 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprogram.hpp#7 edit [ROCm/clr commit: abe89a3d9c6310b52e2b490dc3be69948e3c31b9] --- .../clr/rocclr/runtime/device/pal/palprogram.cpp | 13 ++++++++----- .../clr/rocclr/runtime/device/pal/palprogram.hpp | 11 ++++++++++- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/projects/clr/rocclr/runtime/device/pal/palprogram.cpp b/projects/clr/rocclr/runtime/device/pal/palprogram.cpp index 6c3ec5029b..9223e7fd1b 100644 --- a/projects/clr/rocclr/runtime/device/pal/palprogram.cpp +++ b/projects/clr/rocclr/runtime/device/pal/palprogram.cpp @@ -28,7 +28,7 @@ HSAILProgram::HSAILProgram(Device& device) , rawBinary_(nullptr) , kernels_(nullptr) , maxScratchRegs_(0) - , isNull_(false) + , flags_(0) , executable_(nullptr) , loaderContext_(this) { @@ -48,7 +48,7 @@ HSAILProgram::HSAILProgram(NullDevice& device) , rawBinary_(nullptr) , kernels_(nullptr) , maxScratchRegs_(0) - , isNull_(true) + , flags_(0) , executable_(nullptr) , loaderContext_(this) { @@ -442,6 +442,9 @@ HSAILProgram::linkImpl(amd::option::Options* options) aclType continueCompileFrom = ACL_TYPE_LLVMIR_BINARY; bool finalize = true; bool hsaLoad = true; + internal_ = (compileOptions_.find("-cl-internal-kernel") != + std::string::npos) ? true : false; + // If !binaryElf_ then program must have been created using clCreateProgramWithBinary if (!binaryElf_) { continueCompileFrom = getNextCompilationStageFromBinary(options); @@ -911,7 +914,7 @@ void* ORCAHSALoaderContext::GpuMemAlloc(size_t size, size_t align, bool zero) { assert(size); assert(align); assert(sizeof(void*) == 8 || sizeof(void*) == 4); - if (program_->isNull()) { + if (program_->isNull() || program_->isInternal()) { return new char[size]; } @@ -937,7 +940,7 @@ bool ORCAHSALoaderContext::GpuMemCopy(void *dst, size_t offset, const void *src, if (0 == size) { return true; } - if (program_->isNull()) { + if (program_->isNull() || program_->isInternal()) { memcpy(reinterpret_cast
(dst) + offset, src, size); return true; } @@ -949,7 +952,7 @@ bool ORCAHSALoaderContext::GpuMemCopy(void *dst, size_t offset, const void *src, void ORCAHSALoaderContext::GpuMemFree(void *ptr, size_t size) { - if (program_->isNull()) { + if (program_->isNull() || program_->isInternal()) { delete[] reinterpret_cast(ptr); } else { diff --git a/projects/clr/rocclr/runtime/device/pal/palprogram.hpp b/projects/clr/rocclr/runtime/device/pal/palprogram.hpp index 719bb3f8e3..dbd900081b 100644 --- a/projects/clr/rocclr/runtime/device/pal/palprogram.hpp +++ b/projects/clr/rocclr/runtime/device/pal/palprogram.hpp @@ -178,6 +178,9 @@ public: //! Returns TRUE if the program just compiled bool isNull() const { return isNull_; } + //! Returns TRUE if the program used internally by runtime + bool isInternal() const { return internal_; } + //! Returns TRUE if the program contains static samplers bool isStaticSampler() const { return (staticSamplers_.size() != 0); } @@ -267,7 +270,13 @@ private: Memory* kernels_; //!< Table with kernel object pointers uint maxScratchRegs_; //!< Maximum number of scratch regs used in the program by individual kernel std::list staticSamplers_; //!< List od internal static samplers - bool isNull_; //!< Null program no memory allocations + union { + struct { + uint32_t isNull_ : 1; //!< Null program no memory allocations + uint32_t internal_ : 1; //!< Internal blit program + }; + uint32_t flags_; //!< Program flags + }; amd::hsa::loader::Loader* loader_; //!< Loader object amd::hsa::loader::Executable* executable_; //!< Executable for HSA Loader ORCAHSALoaderContext loaderContext_; //!< Context for HSA Loader