SWDEV-336024 - Clear device heap to 0
The heap must be cleared once per device, but ROCclr doesn't
create a queue per device in HIP. Hence, the clear operation will
be performed during the first queue creation.
Change-Id: I52ceb06d67d11cde6d019c5ab510059f426a9bfb
[ROCm/clr commit: 04bfd93569]
Este cometimento está contido em:
@@ -788,8 +788,8 @@ bool Device::create() {
|
||||
|
||||
if (amd::IS_HIP) {
|
||||
// Allocate initial heap for device memory allocator
|
||||
static constexpr size_t HeapBufferSize = 1024 * Ki;
|
||||
heap_buffer_ = createMemory(HeapBufferSize);
|
||||
constexpr size_t kHeapBufferSize = 128 * Ki;
|
||||
heap_buffer_ = createPrivateBuffer(kHeapBufferSize);
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -1659,6 +1659,7 @@ device::VirtualDevice* Device::createVirtualDevice(amd::CommandQueue* queue) {
|
||||
return virtualDevice;
|
||||
}
|
||||
|
||||
// ================================================================================================
|
||||
bool Device::globalFreeMemory(size_t* freeMemory) const {
|
||||
const uint TotalFreeMemory = 0;
|
||||
const uint LargestFreeBlock = 1;
|
||||
@@ -1673,6 +1674,7 @@ bool Device::globalFreeMemory(size_t* freeMemory) const {
|
||||
return true;
|
||||
}
|
||||
|
||||
// ================================================================================================
|
||||
bool Device::bindExternalDevice(uint flags, void* const gfxDevice[], void* gfxContext,
|
||||
bool validateOnly) {
|
||||
#if defined(_WIN32)
|
||||
@@ -1888,17 +1890,6 @@ device::Memory* Device::createMemory(amd::Memory& owner) const {
|
||||
return memory;
|
||||
}
|
||||
|
||||
// ================================================================================================
|
||||
device::Memory* Device::createMemory(size_t size) const {
|
||||
auto buffer = new roc::Buffer(*this, size);
|
||||
static constexpr bool LocalAlloc = true;
|
||||
if ((buffer == nullptr) || !buffer->create(LocalAlloc)) {
|
||||
LogError("Couldn't allocate memory on device!");
|
||||
return nullptr;
|
||||
}
|
||||
return buffer;
|
||||
}
|
||||
|
||||
// ================================================================================================
|
||||
void* Device::hostAlloc(size_t size, size_t alignment, MemorySegment mem_seg) const {
|
||||
void* ptr = nullptr;
|
||||
|
||||
Criar uma nova questão referindo esta
Bloquear um utilizador