本公開涉及計算機,尤其涉及一種訪問控制方法、裝置及服務器。
背景技術:
1、gpu服務器是一種基于gpu的應用于視頻編解碼、深度學習、科學計算等多種場景的快速、穩定、彈性的計算服務。這種服務器配備多個gpu,同時還具有較大的內存、高速的存儲器和網絡連接等功能,通常用于需要處理大規模數據、進行深度學習模型訓練、圖像識別、語音識別、自然語言處理等需要高性能計算的場合。gpu服務器的常見拓撲結構如圖1所示。gpu通過pcie設備的出站通信(pcie?outbound)訪問主機內存(host?memroy)以及其他gpu的pcie內存條(pcie?memory?base?address?registe),為了完成這個功能需要對每一張gpu的pcie出站窗口(pcie?outbound?window)都要進行如圖2所示的配置,假設gpu能夠訪問pcie的地址寬度是39bits,這就限制gpu能夠訪問的地址范圍是0~512g,這使得主機內存和各gpu的內存的和不能超過512g,如何突破這一限制是亟待解決的技術問題。
技術實現思路
1、有鑒于此,本公開提出了一種訪問控制方法、裝置及服務器。
2、根據本公開的一方面,提供了一種服務器,包括主機cpu、多個gpu、所述主機cpu的主機內存、各所述gpu的gpu內存和多個pcie交換機,各所述pcie交換機的上行口連接到所述主機cpu,所述多個gpu分為多個組,同一組內的多個gpu連接到同一個pcie交換機的不同下行口,
3、所述多個gpu中的第一gpu,用于根據所述第一gpu的pcie出站窗口記錄的地址確定出需要訪問的目標內存對應的目標地址,并將根據所述目標地址生成的訪問請求發送至所述第一gpu連接的pcie交換機,所述目標內存為所述多個gpu內存中與所述第一gpu的gpu內存不同的其余gpu內存和所述主機內存中的任意一個;
4、所述pcie交換機,用于在接收到訪問請求的情況下,將所述目標地址為虛擬地址的訪問請求轉發至所述主機cpu,以及將所述目標地址為物理地址的訪問請求轉發至連接在該pcie交換機下行口的所述目標內存所在的目標gpu;
5、其中,各所述gpu的pcie出站窗口中記錄的地址包括以下至少一種:所述主機內存的虛擬地址、與該gpu不同組的剩余gpu中有訪問需求的組外gpu對應的gpu內存的虛擬地址、與該gpu同組的其余gpu中有訪問需求的組內gpu對應的gpu內存的物理地址。
6、根據本公開的一方面,提供了一種服務器,包括主機cpu、多個gpu、所述主機cpu的主機內存、各所述gpu的gpu內存和多個pcie交換機,各所述pcie交換機的上行口連接到所述主機cpu,所述多個gpu分為多個組,同一組內的多個gpu連接到同一個pcie交換機的不同下行口,
7、所述多個gpu中的第一gpu,用于根據所述第一gpu的pcie出站窗口記錄的地址確定出需要訪問的目標內存對應的目標地址,并將根據所述目標地址生成的訪問請求發送至所述第一gpu連接的pcie交換機,所述目標內存為所述多個gpu內存中與所述第一gpu的gpu內存不同的其余gpu內存和所述主機內存中的任意一個;
8、所述pcie交換機,用于在接收到訪問請求的情況下,將所述訪問請求轉發至所述主機cpu;
9、其中,各所述gpu的pcie出站窗口中記錄的地址包括以下至少一種:所述主機內存的虛擬地址、與該gpu不同的剩余gpu中有訪問需求的gpu對應的gpu內存的虛擬地址。
10、在一種可能的實現方式中,所述主機cpu,用于在接收到訪問請求的情況下,確定出所述訪問請求中的目標地址對應的目標物理地址,并根據所述目標物理地址將所述訪問請求發送至對應的目標pcie交換機;
11、所述目標pcie交換機,用于根據所述目標物理地址將所述訪問請求發送至所述目標內存所在的目標gpu,使得所述訪問請求被所述目標gpu執行。
12、在一種可能的實現方式中,確定出所述訪問請求中的目標地址對應的目標物理地址,包括:
13、根據總地址映射關系或各gpu的物理地址確定出所述訪問請求中目標地址對應的目標物理地址;或者
14、根據所述第一gpu對應的地址子映射關系,確定出所述訪問請求中目標地址對應的目標物理地址;
15、其中,所述總地址映射關系用于指示所述主機內存的虛擬地址與物理地址之間的映射關系、有訪問需求的各gpu內存的虛擬地址與物理地址之間的映射關系;
16、所述第一gpu對應的地址子映射關系用于指示所述主機內存的虛擬地址與物理地址之間的映射關系、各所述組外gpu對應的gpu內存的虛擬地址與物理地址之間的映射關系。
17、在一種可能的實現方式中,,所述主機cpu用于:
18、為所述主機內存和有訪問需求的所述gpu內存配置虛擬地址,有訪問需求的所述gpu內存為所述服務器中多個gpu內存中的部分或全部;
19、利用內存管理單元將所述主機內存的虛擬地址映射到所述主機內存的物理地址、以及將有訪問需求的各所述gpu內存的虛擬地址映射到該gpu內存的物理地址;
20、根據所述主機內存的虛擬地址與物理地址之間的映射關系、所述gpu內存的虛擬地址與物理地址之間的映射關系創建總地址映射關系和各gpu的地址子映射關系;
21、基于各gpu的地址子映射關系配置各gpu的pcie出站窗口。
22、在一種可能的實現方式中,控制各所述pcie交換機關閉下行口的重定向功能。
23、在一種可能的實現方式中,為所述主機內存和有訪問需求的所述gpu內存所配置的虛擬地址的范圍處于各所述gpu的pcie出站窗口的限制地址范圍內。
24、根據本公開的一方面,提供了一種訪問控制方法,應用于服務器中的主機cpu,所述服務器還包括多個gpu、所述主機cpu的主機內存、各所述gpu的gpu內存和多個pcie交換機,各所述pcie交換機的上行口連接到所述主機cpu,所述多個gpu分為多個組,同一組內的多個gpu連接到同一個pcie交換機的不同下行口,所述方法包括:
25、在接收到所述pcie交換機轉發的訪問請求的情況下,確定出所述訪問請求中的目標地址對應的目標物理地址,并根據所述目標物理地址將所述訪問請求發送至對應的目標pcie交換機,以使所述目標pcie交換機根據所述目標物理地址將所述訪問請求發送至所述目標內存所在的目標gpu,使得所述訪問請求被所述目標gpu執行;
26、其中,所述訪問請求是所述多個gpu中的第一gpu根據目標地址生成后發送至pcie交換機并在所述pcie交換機確定所述目標地址為虛擬地址的情況下轉發到所述主機cpu的,所述目標地址是所述第一gpu根據第一gpu的pcie出站窗口記錄的地址和需要訪問的目標內存確定的,所述目標內存為所述多個gpu內存中與所述第一gpu的gpu內存不同的其余gpu內存和所述主機內存中的任意一個;
27、各所述gpu的pcie出站窗口中記錄的地址包括以下至少一種:所述主機內存的虛擬地址、與該gpu不同組的剩余gpu中有訪問需求的組外gpu對應的gpu內存的虛擬地址、與該gpu同組的其余gpu中有訪問需求的組內gpu對應的gpu內存的物理地址。
28、根據本公開的一方面,提供了一種訪問控制方法,應用于服務器中的主機cpu,所述服務器還包括多個gpu、所述主機cpu的主機內存、各所述gpu的gpu內存和多個pcie交換機,各所述pcie交換機的上行口連接到所述主機cpu,所述多個gpu分為多個組,同一組內的多個gpu連接到同一個pcie交換機的不同下行口,所述方法包括:
29、在接收到所述pcie交換機轉發的訪問請求的情況下,確定出所述訪問請求中的目標地址對應的目標物理地址,并根據所述目標物理地址將所述訪問請求發送至對應的目標pcie交換機,以使所述目標pcie交換機根據所述目標物理地址將所述訪問請求發送至所述目標內存所在的目標gpu,使得所述訪問請求被所述目標gpu執行;
30、其中,所述訪問請求是所述多個gpu中的第一gpu根據目標地址生成后發送至pcie交換機并被所述pcie交換機轉發到所述主機cpu的,所述目標地址是所述第一gpu根據第一gpu的pcie出站窗口記錄的地址和需要訪問的目標內存確定的,所述目標內存為所述多個gpu內存中與所述第一gpu的gpu內存不同的其余gpu內存和所述主機內存中的任意一個;
31、各所述gpu的pcie出站窗口中記錄的地址包括以下至少一種:所述主機內存的虛擬地址、與該gpu不同的剩余gpu中有訪問需求的gpu對應的gpu內存的虛擬地址。
32、根據本公開的一方面,提供了一種訪問控制方法,應用于服務器中的pcie交換機,所述服務器包括主機cpu、多個gpu、所述主機cpu的主機內存、各所述gpu的gpu內存和多個pcie交換機,各所述pcie交換機的上行口連接到所述主機cpu,所述多個gpu分為多個組,同一組內的多個gpu連接到同一個pcie交換機的不同下行口,所述方法包括:
33、在接收到來自所述多個gpu中的第一gpu發送的訪問請求的情況下,將所述訪問請求轉發至所述主機cpu;所述訪問請求是所述第一gpu根據目標地址生成的,所述目標地址是所述第一gpu根據第一gpu的pcie出站窗口記錄的地址和需要訪問的目標內存確定的,所述目標內存為所述多個gpu內存中與所述第一gpu的gpu內存不同的其余gpu內存和所述主機內存中的任意一個;或者,
34、在接收到來自所述主機cpu的訪問請求的情況下,根據所述訪問請求對應的目標物理地址將所述訪問請求發送至所述目標內存所在的目標gpu,使得所述訪問請求被所述目標gpu執行;
35、其中,各所述gpu的pcie出站窗口中記錄的地址包括以下至少一種:所述主機內存的虛擬地址、與該gpu不同的剩余gpu中有訪問需求的gpu對應的gpu內存的虛擬地址。
36、根據本公開的一方面,提供了一種訪問控制方法,應用于服務器中的pcie交換機,所述服務器包括主機cpu、多個gpu、所述主機cpu的主機內存、各所述gpu的gpu內存和多個pcie交換機,各所述pcie交換機的上行口連接到所述主機cpu,所述多個gpu分為多個組,同一組內的多個gpu連接到同一個pcie交換機的不同下行口,所述方法包括:
37、在接收到來自所述多個gpu中的第一gpu發送的訪問請求的情況下,將所述目標地址為虛擬地址的訪問請求轉發至所述主機cpu,以及將所述目標地址為物理地址的訪問請求轉發至連接在該pcie交換機下行口的所述目標內存所在的目標gpu;所述訪問請求是所述第一gpu根據目標地址生成的,所述目標地址是所述第一gpu根據第一gpu的pcie出站窗口記錄的地址和需要訪問的目標內存確定的,所述目標內存為所述多個gpu內存中與所述第一gpu的gpu內存不同的其余gpu內存和所述主機內存中的任意一個;或者,
38、在接收到來自所述主機cpu的訪問請求的情況下,根據所述訪問請求對應的目標物理地址將所述訪問請求發送至所述目標內存所在的目標gpu,使得所述訪問請求被所述目標gpu執行;
39、其中,各所述gpu的pcie出站窗口中記錄的地址包括以下至少一種:所述主機內存的虛擬地址、與該gpu不同組的剩余gpu中有訪問需求的組外gpu對應的gpu內存的虛擬地址、與該gpu同組的其余gpu中有訪問需求的組內gpu對應的gpu內存的物理地址。
40、根據本公開的一方面,提供了一種訪問控制方法,應用于服務器中的gpu,所述服務器包括主機cpu、多個gpu、所述主機cpu的主機內存、各所述gpu的gpu內存和多個pcie交換機,各所述pcie交換機的上行口連接到所述主機cpu,所述多個gpu分為多個組,同一組內的多個gpu連接到同一個pcie交換機的不同下行口,所述方法包括:
41、所述多個gpu中的第一gpu根據自身對應的pcie出站窗口記錄的地址確定出需要訪問的目標內存的目標地址,并將根據所述目標地址生成的訪問請求發送至所連接的pcie交換機,以使所述訪問請求被pcie交換機轉發至所述主機cpu,使得所述主機cpu確定出所述訪問請求中的目標地址對應的目標物理地址,并根據所述目標物理地址將所述訪問請求發送至對應的目標pcie交換機,以使所述目標pcie交換機根據所述目標物理地址將所述訪問請求發送至所述目標內存所在的目標gpu;
42、所述多個gpu中的目標gpu在接收到所述訪問請求的情況下,執行所述訪問請求;
43、其中,所述目標內存為所述多個gpu內存中與所述第一gpu的gpu內存不同的其余gpu內存和所述主機內存中的任意一個;
44、各所述gpu的pcie出站窗口中記錄的地址包括以下至少一種:所述主機內存的虛擬地址、與該gpu不同組的剩余gpu中有訪問需求的組外gpu對應的gpu內存的虛擬地址、與該gpu同組的其余gpu中有訪問需求的組內gpu對應的gpu內存的物理地址;或者,各所述gpu的pcie出站窗口中記錄的地址包括以下至少一種:所述主機內存的虛擬地址、與該gpu不同的剩余gpu中有訪問需求的gpu對應的gpu內存的虛擬地址。
45、根據本公開的另一方面,提供了一種訪問控制裝置,包括:處理器;用于存儲處理器可執行指令的存儲器;其中,所述處理器被配置為在執行所述存儲器存儲的指令時,實現上述方法。
46、根據本公開的另一方面,提供了一種非易失性計算機可讀存儲介質,其上存儲有計算機程序指令,其中,所述計算機程序指令被處理器執行時實現上述方法。
47、根據本公開的另一方面,提供了一種計算機程序產品,包括計算機可讀代碼,或者承載有計算機可讀代碼的非易失性計算機可讀存儲介質,當所述計算機可讀代碼在電子設備的處理器中運行時,所述電子設備中的處理器執行上述方法。
48、本公開實施例提供的訪問控制方法、裝置及服務器,突破了gpu訪問地址范圍的限制,且保證了服務器中內存訪問的速度和效率。
49、根據下面參考附圖對示例性實施例的詳細說明,本公開的其它特征及方面將變得清楚。