void MemoryDebugger::clean(void) { if (_CleanAllowed && (_size() < _capacity() / 2)) { _reserve(_size() + 16); } }
bool HostReflectionHost::HostQueue::pull(void* data, size_t size) { if(size > _used()) return false; report(" pulling " << size << " bytes from gpu->cpu queue (" << _used() << " used, " << _capacity() << " remaining, " << this->size() << " size)"); _metadata->tail = _read(data, size); report(" after pull (" << _used() << " used, " << _capacity() << " remaining, " << this->size() << " size)"); return true; }
bool HostReflectionHost::HostQueue::push(const void* data, size_t size) { assert(size < this->size()); if(size > _capacity()) return false; size_t end = _metadata->size; size_t head = _metadata->head; size_t remainder = end - head; size_t firstCopy = std::min(remainder, size); std::memcpy(_metadata->hostBegin + head, data, firstCopy); bool secondCopyNecessary = firstCopy != size; size_t secondCopy = secondCopyNecessary ? size - firstCopy : 0; std::memcpy(_metadata->hostBegin, (char*)data + firstCopy, secondCopy); _metadata->head = secondCopyNecessary ? secondCopy : head + firstCopy; return true; }
unsigned int MemoryDebugger::getOverhead(void) { return _capacity() * sizeof(MemoryAllocation); }
void MemoryDebugger::_reserve(unsigned int new_size) { if (_capacity() >= new_size) return; _resize(new_size); }
void set_capacity(size_t c) { _capacity(c); }