簡體   English   中英

兩個進程可以共享相同的GPU內存嗎? (CUDA)

[英]can two process shared same GPU memory? (CUDA)

在CPU世界中,人們可以通過內存映射來實現。 可以為GPU做類似的事情嗎?

如果兩個進程可以共享相同的CUDA上下文,我認為這將是微不足道的 - 只需傳遞GPU內存指針。 是否可以在兩個進程之間共享相同的CUDA上下文?

我能想到的另一種可能性是將設備內存映射到內存映射主機內存。 由於它是內存映射的,因此可以在兩個進程之間共享。 這是否有意義/可能,是否有任何開銷?

CUDA MPS有效地允許來自2個或更多進程的CUDA活動在GPU上共享相同的上下文。 但是,這不會滿足您的要求:

兩個進程可以共享相同的GPU內存嗎?

實現此目的的一種方法是通過CUDA IPC(進程間通信)API。

這將允許您在多個進程之間共享分配的設備內存區域(即通過cudaMalloc分配的內存區域)。 這個答案包含了解CUDA IPC的其他資源。

但是,根據我的測試,這不能在多個進程之間共享主機固定內存區域(例如,通過cudaHostAlloc分配的區域)。 內存區域本身可以使用適用於您的特定操作系統的普通IPC機制共享,但不能在2個或更多進程中顯示為“固定”內存(根據我的測試)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM