@@ -42,25 +42,6 @@ void SVMAllocsManager::MapBasedAllocationTracker::remove(const SvmAllocationData
4242 allocations.erase (iter);
4343}
4444
45- void SVMAllocsManager::SortedVectorBasedAllocationTracker::insert (const SvmAllocationData &allocationsPair) {
46- allocations.push_back (std::make_pair (reinterpret_cast <void *>(allocationsPair.gpuAllocations .getDefaultGraphicsAllocation ()->getGpuAddress ()), std::make_unique<SvmAllocationData>(allocationsPair)));
47- for (size_t i = allocations.size () - 1 ; i > 0 ; --i) {
48- if (allocations[i].first < allocations[i - 1 ].first ) {
49- std::iter_swap (allocations.begin () + i, allocations.begin () + i - 1 );
50- } else {
51- break ;
52- }
53- }
54- }
55-
56- void SVMAllocsManager::SortedVectorBasedAllocationTracker::remove (const SvmAllocationData &allocationsPair) {
57- auto gpuAddress = reinterpret_cast <void *>(allocationsPair.gpuAllocations .getDefaultGraphicsAllocation ()->getGpuAddress ());
58- auto removeIt = std::remove_if (allocations.begin (), allocations.end (), [&gpuAddress](const auto &other) {
59- return gpuAddress == other.first ;
60- });
61- allocations.erase (removeIt);
62- }
63-
6445void SVMAllocsManager::SvmAllocationCache::insert (size_t size, void *ptr) {
6546 std::lock_guard<std::mutex> lock (this ->mtx );
6647 allocations.emplace (std::lower_bound (allocations.begin (), allocations.end (), size), size, ptr);
@@ -132,34 +113,6 @@ SvmAllocationData *SVMAllocsManager::MapBasedAllocationTracker::get(const void *
132113 return nullptr ;
133114}
134115
135- SvmAllocationData *SVMAllocsManager::SortedVectorBasedAllocationTracker::get (const void *ptr) {
136- if (allocations.size () == 0 ) {
137- return nullptr ;
138- }
139- if (!ptr) {
140- return nullptr ;
141- }
142-
143- int begin = 0 ;
144- int end = static_cast <int >(allocations.size () - 1 );
145- while (end >= begin) {
146- int currentPos = (begin + end) / 2 ;
147- const auto &allocation = allocations[currentPos];
148- if (allocation.first == ptr || (allocation.first < ptr &&
149- (reinterpret_cast <uintptr_t >(ptr) < (reinterpret_cast <uintptr_t >(allocation.first ) + allocation.second ->size )))) {
150- return allocation.second .get ();
151- } else if (ptr < allocation.first ) {
152- end = currentPos - 1 ;
153- continue ;
154- } else {
155- begin = currentPos + 1 ;
156- continue ;
157- }
158- }
159-
160- return nullptr ;
161- }
162-
163116void SVMAllocsManager::MapOperationsTracker::insert (SvmMapOperation mapOperation) {
164117 operations.insert (std::make_pair (mapOperation.regionSvmPtr , mapOperation));
165118}
@@ -286,7 +239,7 @@ void *SVMAllocsManager::createHostUnifiedMemoryAllocation(size_t size,
286239 allocData.setAllocId (this ->allocationsCounter ++);
287240
288241 std::unique_lock<std::shared_mutex> lock (mtx);
289- this ->svmAllocs .insert (allocData);
242+ this ->svmAllocs .insert (usmPtr, allocData);
290243
291244 return usmPtr;
292245}
@@ -368,9 +321,9 @@ void *SVMAllocsManager::createUnifiedMemoryAllocation(size_t size,
368321 allocData.setAllocId (this ->allocationsCounter ++);
369322
370323 std::unique_lock<std::shared_mutex> lock (mtx);
371- this ->svmAllocs .insert (allocData);
372324
373325 auto retPtr = reinterpret_cast <void *>(unifiedMemoryAllocation->getGpuAddress ());
326+ this ->svmAllocs .insert (retPtr, allocData);
374327 UNRECOVERABLE_IF (useExternalHostPtrForCpu && (externalPtr != retPtr));
375328
376329 return retPtr;
@@ -455,8 +408,9 @@ void *SVMAllocsManager::createUnifiedKmdMigratedAllocation(size_t size, const Sv
455408 allocData.setAllocId (this ->allocationsCounter ++);
456409
457410 std::unique_lock<std::shared_mutex> lock (mtx);
458- this ->svmAllocs .insert (allocData);
459- return allocationGpu->getUnderlyingBuffer ();
411+ auto retPtr = allocationGpu->getUnderlyingBuffer ();
412+ this ->svmAllocs .insert (retPtr, allocData);
413+ return retPtr;
460414}
461415
462416void SVMAllocsManager::setUnifiedAllocationProperties (GraphicsAllocation *allocation, const SvmAllocationProperties &svmProperties) {
@@ -466,12 +420,12 @@ void SVMAllocsManager::setUnifiedAllocationProperties(GraphicsAllocation *alloca
466420
467421void SVMAllocsManager::insertSVMAlloc (const SvmAllocationData &svmAllocData) {
468422 std::unique_lock<std::shared_mutex> lock (mtx);
469- svmAllocs.insert (svmAllocData);
423+ svmAllocs.insert (reinterpret_cast < void *>(svmAllocData. gpuAllocations . getDefaultGraphicsAllocation ()-> getGpuAddress ()), svmAllocData);
470424}
471425
472426void SVMAllocsManager::removeSVMAlloc (const SvmAllocationData &svmAllocData) {
473427 std::unique_lock<std::shared_mutex> lock (mtx);
474- svmAllocs.remove (svmAllocData);
428+ svmAllocs.remove (reinterpret_cast < void *>( svmAllocData. gpuAllocations . getDefaultGraphicsAllocation ()-> getGpuAddress ()) );
475429}
476430
477431bool SVMAllocsManager::freeSVMAlloc (void *ptr, bool blocking) {
@@ -608,7 +562,7 @@ void *SVMAllocsManager::createZeroCopySvmAllocation(size_t size, const SvmAlloca
608562 allocData.size = size;
609563
610564 std::unique_lock<std::shared_mutex> lock (mtx);
611- this ->svmAllocs .insert (allocData);
565+ this ->svmAllocs .insert (usmPtr, allocData);
612566 return usmPtr;
613567}
614568
@@ -676,14 +630,14 @@ void *SVMAllocsManager::createUnifiedAllocationWithDeviceStorage(size_t size, co
676630 allocData.setAllocId (this ->allocationsCounter ++);
677631
678632 std::unique_lock<std::shared_mutex> lock (mtx);
679- this ->svmAllocs .insert (allocData);
633+ this ->svmAllocs .insert (svmPtr, allocData);
680634 return svmPtr;
681635}
682636
683637void SVMAllocsManager::freeSVMData (SvmAllocationData *svmData) {
684638 std::unique_lock<std::mutex> lockForIndirect (mtxForIndirectAccess);
685639 std::unique_lock<std::shared_mutex> lock (mtx);
686- svmAllocs.remove (* svmData);
640+ svmAllocs.remove (reinterpret_cast < void *>( svmData-> gpuAllocations . getDefaultGraphicsAllocation ()-> getGpuAddress ()) );
687641}
688642
689643void SVMAllocsManager::freeZeroCopySvmAllocation (SvmAllocationData *svmData) {
0 commit comments