簡體   English   中英

多個主機線程啟動單個CUDA內核

[英]Multiple host threads launching individual CUDA kernels

對於我的CUDA開發,我使用的是具有16個內核的機器,以及1個帶有16個SM的GTX 580 GPU。 對於我正在做的工作,我計划啟動16個主機線程(每個核心1個),每個線程啟動1個內核,每個線程包含1個塊和1024個線程。 我的目標是在16個SM上並行運行16個內核。 這可能/可行嗎?

我試圖盡可能多地閱讀關於獨立上下文的內容,但似乎沒有太多可用的信息。 據我了解,每個主機線程都可以擁有自己的GPU上下文。 但是,如果我使用獨立的上下文,我不確定內核是否會並行運行。

我可以將所有16個主機線程中的所有數據讀入一個巨型結構,並將其傳遞給GPU以啟動一個內核。 但是,復制太多會降低應用程序的速度。

一次只能在GPU上有一個上下文。 實現所需的並行性的一種方法是使用CUDA流。 您可以在上下文中創建16個流,並按名稱將內存和內核啟動到流中。 您可以在以下網站的快速網絡研討會中閱讀更多內容: http//developer.download.nvidia.com/CUDA/training/StreamsAndConcurrencyWebinar.pdf 完整的API參考在CUDA工具包手冊中。 可以在http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Toolkit_Reference_Manual.pdf上找到CUDA 4.2手冊。

雖然多線程應用程序可以在同一GPU上同時保存多個CUDA上下文,但這些上下文不能同時執行操作。 當激活時,每個上下文都只使用GPU,並且必須在另一個上下文(可能包括使用渲染API或顯示管理器的操作)之前產生訪問權限。

總而言之,沒有這種策略不適用於任何當前的CUDA版本或硬件。

暫無
暫無

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

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