mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-10-25 02:04:48 +01:00 
			
		
		
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			2111e7ab5f
			...
			feature/ca
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 59282f25ec | ||
|  | b0bd173899 | 
| @@ -113,6 +113,11 @@ private: | ||||
|   static uint64_t     DeviceToHostBytes; | ||||
|   static uint64_t     HostToDeviceXfer; | ||||
|   static uint64_t     DeviceToHostXfer; | ||||
|    | ||||
|   static uint64_t     DeviceAccesses; | ||||
|   static uint64_t     HostAccesses; | ||||
|   static uint64_t     DeviceAccessBytes; | ||||
|   static uint64_t     HostAccessBytes; | ||||
|   | ||||
|  private: | ||||
| #ifndef GRID_UVM | ||||
| @@ -152,6 +157,7 @@ private: | ||||
|  | ||||
|   //  static void  LRUupdate(AcceleratorViewEntry &AccCache); | ||||
|   static void  LRUinsert(AcceleratorViewEntry &AccCache); | ||||
|   static void  LRUinsertback(AcceleratorViewEntry &AccCache); | ||||
|   static void  LRUremove(AcceleratorViewEntry &AccCache); | ||||
|    | ||||
|   // manage entries in the table | ||||
|   | ||||
| @@ -23,6 +23,11 @@ uint64_t  MemoryManager::HostToDeviceBytes; | ||||
| uint64_t  MemoryManager::DeviceToHostBytes; | ||||
| uint64_t  MemoryManager::HostToDeviceXfer; | ||||
| uint64_t  MemoryManager::DeviceToHostXfer; | ||||
| uint64_t  MemoryManager::DeviceAccesses; | ||||
| uint64_t  MemoryManager::HostAccesses; | ||||
| uint64_t  MemoryManager::DeviceAccessBytes; | ||||
| uint64_t  MemoryManager::HostAccessBytes; | ||||
|   | ||||
|  | ||||
| //////////////////////////////////// | ||||
| // Priority ordering for unlocked entries | ||||
| @@ -86,6 +91,14 @@ void  MemoryManager::LRUinsert(AcceleratorViewEntry &AccCache) | ||||
|   AccCache.LRU_valid = 1; | ||||
|   DeviceLRUBytes+=AccCache.bytes; | ||||
| } | ||||
| void  MemoryManager::LRUinsertback(AcceleratorViewEntry &AccCache) | ||||
| { | ||||
|   assert(AccCache.LRU_valid==0); | ||||
|   LRU.push_back(AccCache.CpuPtr); | ||||
|   AccCache.LRU_entry = --LRU.end(); | ||||
|   AccCache.LRU_valid = 1; | ||||
|   DeviceLRUBytes+=AccCache.bytes; | ||||
| } | ||||
| void  MemoryManager::LRUremove(AcceleratorViewEntry &AccCache) | ||||
| { | ||||
|   assert(AccCache.LRU_valid==1); | ||||
| @@ -129,6 +142,7 @@ void MemoryManager::Evict(AcceleratorViewEntry &AccCache) | ||||
|   dprintf("MemoryManager: Evict(%llx) %llx\n",(uint64_t)AccCache.CpuPtr,(uint64_t)AccCache.AccPtr);  | ||||
|   assert(AccCache.accLock==0); | ||||
|   assert(AccCache.cpuLock==0); | ||||
|    | ||||
|   if(AccCache.state==AccDirty) { | ||||
|     Flush(AccCache); | ||||
|   } | ||||
| @@ -231,6 +245,9 @@ uint64_t MemoryManager::AcceleratorViewOpen(uint64_t CpuPtr,size_t bytes,ViewMod | ||||
|     EntryCreate(CpuPtr,bytes,mode,hint); | ||||
|   } | ||||
|  | ||||
|   DeviceAccesses++; | ||||
|   DeviceAccessBytes+=bytes; | ||||
|  | ||||
|   auto AccCacheIterator = EntryLookup(CpuPtr); | ||||
|   auto & AccCache = AccCacheIterator->second; | ||||
|   if (!AccCache.AccPtr) { | ||||
| @@ -349,6 +366,10 @@ void MemoryManager::CpuViewClose(uint64_t CpuPtr) | ||||
|   assert(AccCache.accLock==0); | ||||
|  | ||||
|   AccCache.cpuLock--; | ||||
|  | ||||
|   if(AccCache.cpuLock==0) { | ||||
|     LRUinsertback(AccCache); | ||||
|   } | ||||
| } | ||||
| /* | ||||
|  *  Action  State   StateNext         Flush    Clone | ||||
| @@ -371,6 +392,9 @@ uint64_t MemoryManager::CpuViewOpen(uint64_t CpuPtr,size_t bytes,ViewMode mode,V | ||||
|     EntryCreate(CpuPtr,bytes,mode,transient); | ||||
|   } | ||||
|  | ||||
|   HostAccesses++; | ||||
|   HostAccessBytes+=bytes; | ||||
|    | ||||
|   auto AccCacheIterator = EntryLookup(CpuPtr); | ||||
|   auto & AccCache = AccCacheIterator->second; | ||||
|  | ||||
| @@ -416,6 +440,12 @@ uint64_t MemoryManager::CpuViewOpen(uint64_t CpuPtr,size_t bytes,ViewMode mode,V | ||||
|  | ||||
|   AccCache.transient= transient? EvictNext : 0; | ||||
|  | ||||
|   // If view is opened on host remove from LRU | ||||
|   // Host close says evict next from device | ||||
|   if(AccCache.LRU_valid==1){ | ||||
|     LRUremove(AccCache); | ||||
|   } | ||||
|    | ||||
|   return AccCache.CpuPtr; | ||||
| } | ||||
| void  MemoryManager::NotifyDeletion(void *_ptr) | ||||
|   | ||||
| @@ -12,6 +12,10 @@ uint64_t  MemoryManager::HostToDeviceBytes; | ||||
| uint64_t  MemoryManager::DeviceToHostBytes; | ||||
| uint64_t  MemoryManager::HostToDeviceXfer; | ||||
| uint64_t  MemoryManager::DeviceToHostXfer; | ||||
| uint64_t  MemoryManager::DeviceAccesses; | ||||
| uint64_t  MemoryManager::HostAccesses; | ||||
| uint64_t  MemoryManager::DeviceAccessBytes; | ||||
| uint64_t  MemoryManager::HostAccessBytes; | ||||
|  | ||||
| void  MemoryManager::ViewClose(void* AccPtr,ViewMode mode){}; | ||||
| void *MemoryManager::ViewOpen(void* CpuPtr,size_t bytes,ViewMode mode,ViewAdvise hint){ return CpuPtr; }; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user