mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-10-31 03:54:33 +00:00 
			
		
		
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			8f84bbed1b
			...
			feature/ca
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 59282f25ec | ||
|  | b0bd173899 | 
| @@ -113,6 +113,11 @@ private: | |||||||
|   static uint64_t     DeviceToHostBytes; |   static uint64_t     DeviceToHostBytes; | ||||||
|   static uint64_t     HostToDeviceXfer; |   static uint64_t     HostToDeviceXfer; | ||||||
|   static uint64_t     DeviceToHostXfer; |   static uint64_t     DeviceToHostXfer; | ||||||
|  |    | ||||||
|  |   static uint64_t     DeviceAccesses; | ||||||
|  |   static uint64_t     HostAccesses; | ||||||
|  |   static uint64_t     DeviceAccessBytes; | ||||||
|  |   static uint64_t     HostAccessBytes; | ||||||
|   |   | ||||||
|  private: |  private: | ||||||
| #ifndef GRID_UVM | #ifndef GRID_UVM | ||||||
| @@ -152,6 +157,7 @@ private: | |||||||
|  |  | ||||||
|   //  static void  LRUupdate(AcceleratorViewEntry &AccCache); |   //  static void  LRUupdate(AcceleratorViewEntry &AccCache); | ||||||
|   static void  LRUinsert(AcceleratorViewEntry &AccCache); |   static void  LRUinsert(AcceleratorViewEntry &AccCache); | ||||||
|  |   static void  LRUinsertback(AcceleratorViewEntry &AccCache); | ||||||
|   static void  LRUremove(AcceleratorViewEntry &AccCache); |   static void  LRUremove(AcceleratorViewEntry &AccCache); | ||||||
|    |    | ||||||
|   // manage entries in the table |   // manage entries in the table | ||||||
|   | |||||||
| @@ -23,6 +23,11 @@ uint64_t  MemoryManager::HostToDeviceBytes; | |||||||
| uint64_t  MemoryManager::DeviceToHostBytes; | uint64_t  MemoryManager::DeviceToHostBytes; | ||||||
| uint64_t  MemoryManager::HostToDeviceXfer; | uint64_t  MemoryManager::HostToDeviceXfer; | ||||||
| uint64_t  MemoryManager::DeviceToHostXfer; | 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 | // Priority ordering for unlocked entries | ||||||
| @@ -86,6 +91,14 @@ void  MemoryManager::LRUinsert(AcceleratorViewEntry &AccCache) | |||||||
|   AccCache.LRU_valid = 1; |   AccCache.LRU_valid = 1; | ||||||
|   DeviceLRUBytes+=AccCache.bytes; |   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) | void  MemoryManager::LRUremove(AcceleratorViewEntry &AccCache) | ||||||
| { | { | ||||||
|   assert(AccCache.LRU_valid==1); |   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);  |   dprintf("MemoryManager: Evict(%llx) %llx\n",(uint64_t)AccCache.CpuPtr,(uint64_t)AccCache.AccPtr);  | ||||||
|   assert(AccCache.accLock==0); |   assert(AccCache.accLock==0); | ||||||
|   assert(AccCache.cpuLock==0); |   assert(AccCache.cpuLock==0); | ||||||
|  |    | ||||||
|   if(AccCache.state==AccDirty) { |   if(AccCache.state==AccDirty) { | ||||||
|     Flush(AccCache); |     Flush(AccCache); | ||||||
|   } |   } | ||||||
| @@ -231,6 +245,9 @@ uint64_t MemoryManager::AcceleratorViewOpen(uint64_t CpuPtr,size_t bytes,ViewMod | |||||||
|     EntryCreate(CpuPtr,bytes,mode,hint); |     EntryCreate(CpuPtr,bytes,mode,hint); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   DeviceAccesses++; | ||||||
|  |   DeviceAccessBytes+=bytes; | ||||||
|  |  | ||||||
|   auto AccCacheIterator = EntryLookup(CpuPtr); |   auto AccCacheIterator = EntryLookup(CpuPtr); | ||||||
|   auto & AccCache = AccCacheIterator->second; |   auto & AccCache = AccCacheIterator->second; | ||||||
|   if (!AccCache.AccPtr) { |   if (!AccCache.AccPtr) { | ||||||
| @@ -349,6 +366,10 @@ void MemoryManager::CpuViewClose(uint64_t CpuPtr) | |||||||
|   assert(AccCache.accLock==0); |   assert(AccCache.accLock==0); | ||||||
|  |  | ||||||
|   AccCache.cpuLock--; |   AccCache.cpuLock--; | ||||||
|  |  | ||||||
|  |   if(AccCache.cpuLock==0) { | ||||||
|  |     LRUinsertback(AccCache); | ||||||
|  |   } | ||||||
| } | } | ||||||
| /* | /* | ||||||
|  *  Action  State   StateNext         Flush    Clone |  *  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); |     EntryCreate(CpuPtr,bytes,mode,transient); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   HostAccesses++; | ||||||
|  |   HostAccessBytes+=bytes; | ||||||
|  |    | ||||||
|   auto AccCacheIterator = EntryLookup(CpuPtr); |   auto AccCacheIterator = EntryLookup(CpuPtr); | ||||||
|   auto & AccCache = AccCacheIterator->second; |   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; |   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; |   return AccCache.CpuPtr; | ||||||
| } | } | ||||||
| void  MemoryManager::NotifyDeletion(void *_ptr) | void  MemoryManager::NotifyDeletion(void *_ptr) | ||||||
|   | |||||||
| @@ -12,6 +12,10 @@ uint64_t  MemoryManager::HostToDeviceBytes; | |||||||
| uint64_t  MemoryManager::DeviceToHostBytes; | uint64_t  MemoryManager::DeviceToHostBytes; | ||||||
| uint64_t  MemoryManager::HostToDeviceXfer; | uint64_t  MemoryManager::HostToDeviceXfer; | ||||||
| uint64_t  MemoryManager::DeviceToHostXfer; | 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::ViewClose(void* AccPtr,ViewMode mode){}; | ||||||
| void *MemoryManager::ViewOpen(void* CpuPtr,size_t bytes,ViewMode mode,ViewAdvise hint){ return CpuPtr; }; | void *MemoryManager::ViewOpen(void* CpuPtr,size_t bytes,ViewMode mode,ViewAdvise hint){ return CpuPtr; }; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user