TWI525540B - 具有橫跨多個處理器之平行資料執行緒的映射處理邏輯 - Google Patents

具有橫跨多個處理器之平行資料執行緒的映射處理邏輯 Download PDF

Info

Publication number
TWI525540B
TWI525540B TW099124642A TW99124642A TWI525540B TW I525540 B TWI525540 B TW I525540B TW 099124642 A TW099124642 A TW 099124642A TW 99124642 A TW99124642 A TW 99124642A TW I525540 B TWI525540 B TW I525540B
Authority
TW
Taiwan
Prior art keywords
processor
working group
parallel data
memory
core
Prior art date
Application number
TW099124642A
Other languages
English (en)
Other versions
TW201112118A (en
Inventor
班尼迪克特 加司特
杰亞恩斯 古馬拉巫
拉瑞特 摩瑞奇特
Original Assignee
高級微裝置公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 高級微裝置公司 filed Critical 高級微裝置公司
Publication of TW201112118A publication Critical patent/TW201112118A/zh
Application granted granted Critical
Publication of TWI525540B publication Critical patent/TWI525540B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)

Description

具有橫跨多個處理器之平行資料執行緒的映射處理邏輯
本發明係一般性地關於電腦處理器及平行資料緒。
電腦及其他此種資料處理裝置係具有至少一個通常稱為控制處理單元(CPU)之控制處理器。此種電腦及處理裝置復可具有用於各種型態之專用處理之其他處理器,例如圖形處理單元(GPU)。舉例而言,GPU係設計成特別適用於圖形處理作業。GPU一般包括適合用於在平行資料流上執行相同指令之多個處理元件,例如平行資料處理。一般來說,CPU作為主機或控制處理器而使用,且將例如圖形處理之專門功能交給其他例如GPU之處理器處理。
由於已經有多核心CPU可供使用(各個多核心CPU具有多個處理核心),故在CPU中可具有用於專門功能之實質的處理能力。多核心CPU或GPU之一個或更多計算核心係可為相同晶片(例如AMD FusionTM)之一部分或在不同晶片中(例如具有NVIDIA GPU之Intel XeonTM)。近來,具有CPU及GPU兩者特性之混合核心(例如CellSPETM、Intel LarrabeeTM)已普遍地提倡於通用GPU(General Purpose GPU,GPGPU)類型計算。GPGPU類型計算主張使用CPU以主要地執行控制編碼且將效能關鍵性之平行資料編碼(perfomance critical data-parallel code)卸載至GPU。GPU係主要使用為加速器。多核心CPU及GPGPU計算模型之組合包括作為加速器目標之CPU核心及GPU核心兩者。許多多核心CPU核心在很多方面具有可比得上GPU之效能。舉例而言,許多CPU核心之每秒之浮點運算(floating point operations per second,FLOPS)如今係比得上一些GPU核心中之FLOPS。
已開發出用於具有CPU及GPU之異質計算平台之許多框架(framework)。此些框架包括由史丹福大學(Stanford University)推出之BrookGPU、由NVUDIA推出之CUDA及由稱作Khronos Group之工業財團推出之OpenCL。OpenCL框架提供類似C之開發環境,供使用者創造用於GPU之應用程式。OpenCL令使用者能例如指定用於卸載一些計算(例如平行資料計算)至GPU之指令。OpenCL亦提供編譯器及運行環境(runtime environment),在其中,可在異質計算系統內編譯及執行編碼。
因此,需要能夠讓CPU能力有效地使用於一般在GPU上處理之功能的執行。
本發明揭露用以在處理器核心上執行處理邏輯之複數個平行資料緒之系統及方法。用以在處理器核心上執行處理邏輯之複數個平行資料緒之方法包括將該等平行資料緒群集成一個或更多工作組、使來自該一個或更多工作組之第一工作組關聯於該處理器核心上之操作系統緒、及將來自該第一工作組之緒配置成在該操作系統緒內之使用者層級緒。該處理邏輯可包括先前已配置成在GPU上執行之GPU核函式。該處理器核心可包括CPU核心,例如,多核心CPU之處理器核心。
另一種實施例係用以執行GPU核函式之方法,其包括加載該GPU核函式至主機處理器、形成一個或更多工作組(其中,各工作組包括平行資料緒)及使該工作組關聯於耦合至該主機處理器之一個或更多處理器核心之操作系統緒。各該工作組可關聯於一個或更多操作系統緒,且各操作系統緒係配置成只在一處理器核心上執行。該方法復包括將各工作組之平行資料緒配置成在各自關聯之操作系統緒內之使用者層級緒之步驟。
另一種實施例係用以在處理器核心上執行處理邏輯之複數個平行資料緒之系統。該系統包括:包括該處理器核心之至少一個處理器、耦合於該處理器核心之至少一個記憶體及GPU核函式排程器。該GPU核函式排程器係配置成將該等平行資料緒群集成一個或更多工作組、使來自該一個或更多工作組之第一工作組關聯於該處理器核心上之操作系統緒、及將來自該第一工作組之緒執行成在該操作系統緒內之使用者層級緒。
另一種實施例係電腦程式產品,其包括紀錄有電腦程式邏輯之電腦可讀取媒體,該電腦程式邏輯係用以令至少一處理器將複數個平行資料緒群集成一個或更多工作組、使來自一個或更多該工作組之第一工作組關聯於該處理器核心上之操作系統緒、及將來自該第一工作組之緒執行成在該操作系統緒內之使用者層級緒。
本發明之進一步實施例、特徵及優勢,連帶本發明之各種實施例之結構及作動,係在以下參考附加圖示作詳細敘述。
本發明之實施例可藉由應用CPU(中央處理器單元)及GPU(圖形處理單元)處理器上相同或類似的編碼基底並促進此些編碼基底之除錯而產生實質上的優點。雖然本發明係以用於特殊應用之實施例在此處作描述,應了解到其並非用於限制本發明。在相同技術領域具有習知技藝之人士將意識到在本敘述之範圍內及本發明會有明顯效用之其它領域中之其它修正、應用及實施例。
本發明之實施例可用於任何電腦系統、計算裝置、娛樂系統、媒體系統、遊戲系統、通訊裝置、個人數位助理、或任何使用一個或多個處理器之系統。本發明係對於包括異質計算系統之系統特別地有效。在此處所使用之術語「異質計算系統(heterogeneous computing system)」係為有多種處理器可供使用之計算系統。
本發明之實施例能夠使相同的編碼基底在不同的處理器上執行,例如在GPU及CPU上執行。本發明之實施例例如能特別地有利於具有多核心CPU及/或GPU之處理系統,因為對於一種類型之處理器所開發之編碼能以微量氣力或無需額外氣力而配置在另一種類型之處理器上。舉例言之,使用本發明之實施例,用以在GPU上執行而開發之編碼,亦被稱為GPU核函式(kernel),能配置成在CPU上執行。
又,本發明能夠以協助除錯執行緒之方式將GPU核函式(其通常包括大量資料平行執行緒)配置於CPU及其他處理器上。
異質計算系統
依據本發明之一實施例之作為範例之異質計算系統100係顯示在第1圖中。異質計算系統100可包括一個或多個CPU,例如CPU 101,以及一個或多個GPU,例如GPU 102。異質計算系統100復可包括至少一個系統記憶體103、至少一個持久性儲存裝置104、至少一個系統匯流排105、至少一個輸入/輸出裝置106、GPU核函式排程器109及除錯器108。
CPU 101可包括任何商業上可得之控制處理器或客製化控制處理器。CPU 101係例如執行用以控制異質計算系統100之操作之控制邏輯。CPU 101可為多核心CPU,例如具有二個CPU核心141及142之多核心CPU。CPU 101除了任何控制電路,復可包括CPU快取記憶體,例如CPU核心141及142各自之快取記憶體143及144。CPU快取記憶體143及144可分別使用於在CPU核心141及142上執行應用程式之期間短暫地保存指令及/或參數值。舉例而言,CPU快取記憶體143可使用於在CPU核心141上執行控制邏輯指令之期間短暫地保存來自系統記憶體103之一個或多個控制邏輯指令、變數的值、或固定參數的值。在一些實施例中,CPU 101復可包括專用向量指令處理單元。舉例而言,CPU核心142可包括能有效地處理向量指令之資料流SIMD延伸(SSE)單元。熟知本技術領域之人士將理解CPU 101可包括多於或少於本實施例中之CPU核心,且可具有無快取記憶體或更多複雜的快取記憶體階層。
GPU 102可包括任何商業上可得之圖形處理器或定製設計之圖形處理器。GPU 102例如可執行用於所選擇之功能之專用編碼。通常,GPU 102可用於執行圖形功能,例如繪圖管線計算,比如幾何計算,及顯示器上之顯像。
GPU 102可包括GPU全域快取記憶體110以及一個或更多計算單元112及113。GPU 102可包括或耦合有圖形記憶體107。各計算單元112及113係分別關聯至GPU區域記憶體114及115。各計算單元包括一個或更多GPU處理元件(processing element,PE)。舉例言之,計算單元112包括GPU處理元件121及122,且計算單元113包括GPU處理元件123及124。各GPU處理元件121、122、123及124係分別關聯於至少一個私有記憶體(private memory,PM)131、132、133及134。各GPU處理元件可包括一個或更多個純量及向量浮點單元。GPU處理元件復可包括特殊用途單元,例如逆平方根單元及正弦/餘弦單元。GPU全域快取記憶體110可耦合至例如系統記憶體103之系統記憶體及/或例如圖形記憶體107之圖形記憶體。
系統記憶體103可包括至少一個非持久性記憶體,例如動態隨機存取記憶體(DRAM)。系統記憶體103可在部份應用程式或其他處理邏輯之執行期間保存處理邏輯指令、常數值及變數值。舉例而言,在一實施例中,GPU核函式排程器109之控制邏輯及/或其他處理邏輯可在藉由CPU 101執行GPU核函式排程器109之期間處於系統記憶體103內。在此處所使用之術語“處理邏輯”係指控制流指令、用於執行計算之指令及關於資源之相關存取之指令。
持久性記憶體104包括一個或更多能儲存數位資料之儲存裝置,例如磁碟、光碟或快閃記憶體。持久性記憶體104可例如至少儲存GPU核函式排程器109及除錯器108之指令邏輯之部份。舉例而言,在異質計算系統100啟動時,作業系統及其他應用軟體可從持久性儲存104被加載至系統記憶體103。
系統匯流排105可包括週邊元件互連(peripheral component interconnection,PCI)匯流排、高級微控制匯流排架構(Advanced Microcontroller Bus Architecture,AMBA)匯流排、工業標準架構(Industry Standard Architecture,ISA)匯流排或此種裝置。系統匯流排105復可包括例如區域網路(LAN)之網路。系統匯流排105包括耦合包含異質計算系統100之元件在內的元件之功能。
輸入/輸出介面106包括一個或更多連接使用者輸入/輸出裝置之介面,例如鍵盤、滑鼠、顯示器及/或觸控螢幕。舉例而言,可透過連接使用者介面106之鍵盤及滑鼠以提供使用者輸入給異質計算系統100。異質計算系統100之輸出,例如GPU核函式排程器109及除錯器108,可透過使用者界面106輸出至顯示器。
圖形記憶體107耦合至系統匯流排105及GPU 102。圖形記憶體107通常係使用於保存從系統記憶體103傳輸而來之資料以供GPU快速存取。舉例而言,介於GPU 102及圖形記憶體107間之介面可數倍快於系統匯流排介面105。
除錯器108包括對在異質計算系統100上執行之應用程式編碼及其他處理邏輯進行除錯之功能。舉例而言,除錯器108可包括在應用程式編碼及/或其他處理邏輯之執行期間監測一個或更多個變數之功能。在異質計算環境中,除錯器108可能需要有監測在CPU以及GPU上執行之應用程式編碼及其他處理邏輯之能力。
GPU核函式排程器109包括將特別寫成在GPU上執行的功能及處理邏輯予以排程於GPU上或是在CPU上之功能。在下文中將關聯於第2圖進一步描述GPU核函式排程器109。熟知本技術領域人士將瞭解到,除錯器108及GPU核函式排程器109可使用軟體、韌體、硬體或其任何組合而加以實施。當使用成軟體時,舉例而言,GPU核函式排程器109係可為以C語言或開放計算語言(Open Computing Language,OpenCL)寫成之電腦程式,當被編譯及執行時,其係存在於系統記憶體103中。可將GPU核函式排程器109以原始編碼形式及/或經編譯之可執行形式儲存在持久性記憶體104。在一實施例中,GPU核函式排程器109及/或除錯器108之某些或所有功能,係以硬體描述語言予以特定,例如Verilog、RTL、netlists,以便能最終透過遮罩作業/光罩之產生而組構製造程序,以產生體現了在此處描述之本發明之實施樣態之硬體裝置。
熟知本技術領域人員將了解到,異質計算系統100可包括比顯示在第1圖中者更多或更少之元件。舉例而言,異質計算系統100可包括一個或更多個網路介面及/或例如開放計算語言框架之軟體應用。
GPU核函式
在此處使用之術語“GPU核函式”包括在GPU上執行一個或更多功能或作業之編碼及/或處理邏輯。舉例而言,GPU核函式係針對矩陣乘法、矩陣轉置、重分(subdivision)、方程式求解及許多的其他作業而發展。在GPGPU模型中,舉例而言,GPU核函式係為可藉由CPU卸載以在GPU上執行之功能及/或其他操作之編碼片段。在典型GPGPU應用中,相同的GPU核函式編碼會在多個平行資料流內同時執行。此係所謂的“平行資料”計算。舉例而言,在相乘二個矩陣時,來自此二源矩陣之相對應元素中之多個對(pair)可使用不同處理核心而同時相乘。儘管係為簡單的範例,矩陣乘法可例示在GPU上之平行資料作業。
在以上矩陣乘法之範例中,用於結果矩陣之各元素之計算可考慮為執行(緒)之獨立的緒(thread)。對應結果矩陣之各元素之緒可以平行方式而執行。在GPU 102中,舉例而言,緒可能同時在各處理元件121、122、123及124上執行。
若欲相乘多個矩陣對(例如常見在圖形應用中者),則各個矩陣對可分配給計算元素,例如計算元件112及113。
可關聯於GPU 102而敘述GPU核函式之執行。GPU核函式通常執行為平行的多緒。各平行緒係“工作項”。各工作項可在處理元件(例如處理元件121、122、123或124)上執行。分配於計算元素之工作項係為所謂的“工作組”。
一般而言,在工作項之間之同步係限於單一工作組中。此限制係通常在具有大量緒之環境中採用,以便可有效地管理緒的數量。然而,在某些實施例中,同步可能不限於單一工作組中之工作項。
GPU核函式排程器
第2圖顯示依據本發明實施例之GPU核函式排程器109之元件。GPU核函式排程器109可包括編碼分析器201、CPU記憶體映射器203、工作組排程器205及緒排程器207。熟知本技術領域人士將體認到GPU核函式排程器109可包括額外元件及/或元件201至207之不同組合。
編碼分析器201包括分析編碼之功能,例如開放計算語言編碼。編碼分析器201可辨識編碼片段及/或被分析的編碼中之GPU核函式,其可有利地被排程於CPU或替代性地在GPU上。編碼分析器201復可包括得知目標平台之詳細情況之功能。舉例而言,編碼分析器201可辨識CPU核心之數量及在目標平台上可得之GPU核心。其復可辨識系統記憶體、全域GPU快取記憶及其類似者之數量。
CPU記憶體映射器203包括下述功能:判定能對之發送編碼以執行之CPU的記憶體可用性,及準備用於執行映射的GPU核函式之CPU記憶體。
工作組排程器205包括對工作組進行排程之功能。舉例而言,工作組排程器205可判定可使用於執行各工作組之GPU之計算單元之適當組集(set)。在另一實施例中,工作組排程器復可判定GPU核函式之工作項緒應如何分組成工作組以便工作組可分配至一個或或更多CPU核心上之緒。工作組排程器復可包括將GPU核函式緒之工作組映射至CPU或CPU核心之功能。
緒排程器207包括將GPU核函式之緒排程在GPU或CPU上之功能。舉例而言,緒排程器207可依可符合緒之處理需求的方式來判定對於處理元件121、122、123及124之緒的分配。在一實施例中,緒排程器207判定可在GPU 102之哪個處理元件對各工作項進行排程。在另一實施例中,緒排程器207對CPU 101上之工作項緒進行排程。舉例而言,緒排程器207可將一個工作組之工作項緒排程於單一CPU核心上,例如CPU核心142。下文將關聯於第1至6圖而進一步描述依據本發明之實施例的模組201至207之功能性。
在CPU核心上映射並執行GPU核函式
第3圖顯示依據本發明實施例中用於在異質計算系統上執行編碼之程序300。程序300可例如執行在異質計算系統100上。在一實施例中,程序300可代表GPU核函式排程器109之處理邏輯之流程。
在未喪失一般性之前提下,以下敘述係主要基於OpenCL框架。熟知本技術領域人士將意識到本發明之實施例可使用其他開發及執行框架而實施,例如,但不限定為,統一計算架構(Compute Unified Device Architecture,CUDA)、BrookGPU框架及其類似者。如先前所述,OpenCL提供開發環境、編譯器及運行環境,其中,編碼可在異質計算系統中開發、編譯及執行。
OpenCL亦提供可被使用者應用程式所呼叫之內建的程式庫函數及應用程式介面(application programming interface,API)以執行各項功能,例如,配置GPU核函式以在所選擇的處理器上執行。一般而言,OpenCL框架主要執行在主機系統及藉由配置命令(例如,包括GPU核函式之可執行編碼)給各處理器而控制所耦合之處理器之作業。舉例而言,OpenCL主要可執行在CPU核心141上,且藉由配置欲於各個裝置上執行的命令而控制GPU 102、CPU核心141及142之運作。
於步驟301中,加載用於一個或更多應用程式之編碼。所加載的編碼可為原始編碼或其他形式之預先編譯編碼,例如位元組碼。在一些實施例中,編碼亦可包括嵌入式編譯函數。舉例而言,可基於應用程式中之嵌入式函數呼叫而從程式庫中動態地連結一些函數。為了敘述之目的,將假設所加載的編碼係為例如OpenCL之程式語言之原始編碼形式。原始編碼初始係位在例如持久性儲存裝置104。在步驟301之加載編碼步驟中,原始編碼可被加載至記憶體,例如系統記憶體103。應注意的是,所加載的編碼可包括原始編碼、預先編譯的編碼及/或編譯的二進制之組合。舉例而言,在可實施程序300於其內之OpenCL開發、編譯及執行框架係允許GPU核函式之原始編碼及/或編譯的二進制之加載。OpenCL程式例如可包括GPU核函式、控制流編碼及其他由GPU核函式呼叫之函數。
在步驟303中,分析所加載的編碼。編碼之分析可包括解析編碼。在一些實施例中,在步驟303中分析之編碼可包括有效的OpenCL編碼或於例如C語言之另一程式語言或框架中之編碼。在分析步驟303中,可確定所需求的CPU資源。舉例而言,分析及/或解析可判定需被排程在一個或更多CPU核心上的緒(工作項)之總數。又,分析步驟303可使用於判定記憶體需求,例如GPU核函式所使用之私有記憶體及區域記憶體之實際數量。在一實施例中,可使用編碼分析器201之處理邏輯以實施步驟301及303。
在步驟305中,異質計算系統100係配置成運行於步驟301中加載之編碼。舉例而言,基於步驟303中執行之編碼分析,可分配一些CPU及GPU以運行所加載的編碼。步驟305復可包括配置記憶體資源,例如記憶體103,以準備用於所加載的編碼之執行。
對於所加載的編碼中之各函數及/或GPU核函式重複步驟307至323。舉例而言,可以由上至下方式而掃描所加載的原始編碼而辨識各函數及/或GPU核函式。在步驟307中,辨識函數及/或GPU核函式。在一實施例中,例如,可藉由例如OpenCL中之_kernel識別器之預定識別器辨識GPU核函式。
在步驟309中,判定在步驟307中辨識的編碼片段係執行在CPU或GPU上。舉例而言,預設行為可為:在CPU上執行除GPU核函式以外之所有函數及在GPU上執行所有GPU核函式。另一種考量係可例如基於嵌入在編碼中之辨別器判定命令或函數是否係平行資料。平行資料命令或函數較宜排程至GPU。亦可使用其它標準,例如,加載平衡需求及應用程式特徵。
(在步驟309中)若處理邏輯及/或編碼片段係被判定為要在GPU上執行,則其於步驟311中係被排程為實施在GPU上。在一些實施例中,處理邏輯及/或編碼片段係被排程為在特定GPU上實施。
在步驟311中,處理邏輯及/或編碼片段係排程在所選擇的GPU上。步驟311可包括判定GPU之結構,例如,GPU中計算裝置之數量及在各計算裝置內之處理元件之數量。步驟311復可包括創造用於該GPU之內容及命令佇列(queue)、創造關於內容之記憶體物件、編譯及創造GPU核函式物件、發送對應的命令至命令佇列以執行GPU核函式物件、及實施所發送的命令之任何同步。
判定GPU之結構可包括,例如,使用OpenCL API呼叫以尋求系統中可用之計算裝置(例如CPU、GPU),接著尋求一個或更多所辨識的計算裝置的區域資訊。從計算裝置之列表,可尋問GPU裝置以判定GPU處理元件之數目、範圍限制、工作組大小、不同記憶體空間之大小、最大記憶體物件大小及其類似者。
於排程處理邏輯及/或編碼片段以在所選擇的GPU中執行時,可將包括含有編碼片段之可執行編碼(例如,可執行核函式物件)之命令排程至在所選擇的GPU之內容中創造的命令佇列。在此處所使用的“內容(context)”定義為用於GPU核函式之執行環境。內容可包括用於裝置、記憶體及其他關於核函式之程式物件之處置及其他資訊。舉例而言,內容可提供執行核函式以及准許其使用之GPU裝置及記憶體位置。
所創造的記憶體物件可對應於原始及目標物件。舉例而言,若處理邏輯及/或編碼片段實施疊代陣列加法(iterative array addition),則原始物件可為二原始陣列。目標物件可為於其中寫入有輸出結果之陣列。記憶體物件可創造在系統記憶體103中或圖形記憶體107中。記憶體物件可隨後被快取在例如快取110、143及144之各種快取中。所創造的各記憶體物件係關聯於對應內容。
可執行之核函式物件之創造係由編譯處理邏輯及/或編碼片段而完成,且連結任何需要的裝置特定性模組。舉例而言,所編譯的核函式物件可包括核函式函數編碼或指令、任何提供予核函式之引數(argument)、關聯的內容、關於在GPU上執行之程式庫編碼。
在創造核函式物件之後,將欲執行核函式之命令排列於命令佇列。將命令排入佇列方式可依命令是否為平行資料或並行任務命令而特定。舉例而言,在疊代陣列加法之例子中,平行資料命令可將具有指令之單一命令排入佇列中而使其平行地執行在特定數量的計算裝置中,而並行任務模式可導致數個分離的命令被排入佇列中,一個命令用於各個陣列元素。
在步驟309中,若判定處理邏輯及/或編碼片段應該在CPU上執行,則程序300進行至步驟313中。在步驟313中,可選擇一個或更多CPU以執行編碼片段。在一些實施例中,例如,在多核心CPU系統中,CPU之選擇係可基於CPU之加載或處理能力。亦可考慮其它考量,如可用之快取記憶體及其類似者之可用性及大小。
為了容易描述,步驟311至321假設在CPU上執行之處理邏輯及/或編碼片段係為GPU核函式。映射GPU核函式至所選擇的CPU可包括將細分的GPU緒(例如工作項)映射至CPU核心及將GPU記憶體階層映射至CPU記憶體系統。在步驟315中,GPU核函式緒係映射至所選擇的CPU。若GPU核函式原本就係映射至CPU,則各GPU工作項會對應至作業系統(operating system,OS)緒。步驟315之程序可為工作組排程器205所提供之部份功能。
CPU之硬體內容的數量有更多限制,且通常只具有一個硬體內容。OS通常負責排程並執行OS緒。工作項若原始映射於OS緒則可導致若不是數千便是數百個的緒。在單一內容執行大量緒可導致實質上的低效率,理由包括當執行各程序時需要大量內容轉換。又,使此OS管理大量緒可為非常無效率。本發明之實施例中,係以可達到高效能之方式達成從GPU至CPU之映射,且亦便於對具有大量緒之應用程式進行除錯。
在本發明之實施例中,將GPU核函式之工作項映射至CPU核心,係以下述方式完成:可善用可用之多核心CPU,且具有可管理的OS緒數量,以避免關於內容轉換等之低效率。因此,在本發明之實施例中,工作組係取代工作項而為映射及/或關聯於OS緒之單元。一個或更多工作項係群集至一工作組中。可預先決定或基於例如可用之處理核心之數目及能力之標準而決定工作組中工作項之數量。映射及/或將工作組關聯於OS緒可包括對工作組衍生新OS緒或是附加工作組於已經存在的OS緒之配置。用於衍生新OS緒及用於附加至已存在緒之API函數係由一個或更多OpenCL框架(包括OpenCL運行環境)及位於其下層之作業系統所提供。
可例如藉由對於關聯於工作組之OS緒設定處理器親合性,而將GPU核函式之各工作組映射至CPU核心。可指派一個或更多工作組予各CPU核心。可平行執行每CPU核心之多個工作組。在一實施例中,各CPU核心係配置為一次只執行單一工作組。舉例而言,在各CPU核心中只有創造單一OS緒。各CPU核心可藉由執行一個工作組至結束後再執行其他者而執行多個工作組。
在步驟317中,映射及/或配置在工作組內之緒。步驟317之程序係可為緒排程器207所提供之部份功能。在映射至工作組各OS緒內,工作項緒係配置成一個接一個地依序執行。工作項緒係實施為使用者層級之緒。將工作項緒實施為使用者層級之緒,係避免必須在使用者空間及核函式空間之間過度轉換、及大量內容轉換之相關消耗。注意在大部分案例中,GPU核函式係應用於使用者空間應用程式且不需要對需要核函式空間存取之系統資源作直接存取。就如熟知本技術領域人士所知,可在單一作業系統層級(hierarchy)之緒內實施多個使用者層級之緒。
在本發明之一些實施例中,可在一個工作組內之群體中執行工作項緒。舉例而言,在可同時容納多於一個浮點或雙運算之例如SSE單元之向量單元(例如,系統100中之SSE單元145)可用之環境中,編譯器可組合數個工作項以平行執行,以利用SSE單元之全處理能力。
於步驟319中,能被CPU核心存取之記憶體係經映射以容納可用於GPU之記憶體層級。步驟203之處理可為CPU記憶體映射器203所提供之部份功能。將GPU記憶體層級映射至CPU核心以便GPU核函式可在CPU核心上執行係可包括數種樣態。因為GPU核函式編碼可包括對GPU記憶體層級中位置之參照,故從GPU記憶體層級至CPU記憶體之映射係有需求。CPU核心典型地只具有用於其記憶體(例如,系統記憶體103)之單一位址空間,而GPU核心可具有數個分離的可位址化之記憶體。GPU全域記憶體、計算裝置區域記憶體及處理元件私有記憶體皆可被對應至CPU記憶體。
GPU全域記憶體,例如GPU記憶體107,可直接映射至系統記憶體,例如記憶體103。GPU區域記憶體及私有記憶體之映射需要更多細微的方法。如相關於記憶體所使用者之映射可包括設定自動位址翻譯機制,藉由該機制,執行在CPU核心上之GPU核函式中所包括之記憶體位址係被重新定向至系統記憶體103,取代在關聯於GPU之記憶體層級中之位置。
GPU區域記憶體,例如GPU區域記憶體114及115,係在計算單元之處理元件之間被分享。因此,一個GPU區域記憶體係在工作組之所有工作項之間被分享。當工作組映射至CPU時,由於工作組係映射至單一CPU核心,可將對應的GPU區域記憶體帶進此CPU核心中。在許多案例中,在GPU中區域記憶體之實際運用係可完全符合在CPU核心之快取記憶體。
GPU區域記憶體,例如GPU區域記憶體114及115,係被工作組中工作項所分享。本發明之實施例可限制各CPU核心一次只執行單一工作組。當CPU核心一次只執行單一工作組時,在任何範例中,只有單一個對應至GPU區域記憶體之分配係被CPU核心所利用。據此,可分配每CPU核心之單一區域記憶體,且所分配的區域記憶體可重複使用於執行在此CPU核心之連續工作組。可於系統記憶體之鄰近的記憶體區中針對各計算裝置分配區域記憶體。較佳地,CPU核心中快取記憶體係可為足夠大以容納對應此CPU核心之將區域記憶體分配系統記憶體中之例子。熟知本技術領域人士將理解到,分配在記憶體及/或快取中之區域記憶體區可能需要在重覆使用於各連續工作組之前被刷新。在一些實施例中,可藉由覆寫掉先前的內容而重複使用分配在記憶體及/或快取中之區域記憶體區。
GPU私有記憶體,例如GPU私有記憶體131、132、133及134,係私有於各處理元件。在GPU環境中之各私有記憶體一次被單一工作項使用。因此,類似區域記憶體,私有記憶體可重新分配在系統記憶體中且重複使用於連續工作項。舉例而言,於系統記憶體103中對於私有記憶體之單一分配可被單一工作組之連續執行的工作項所重複使用,且可在相同CPU核心所執行之連續工作組內被重覆使用。GPU私有記憶體,及因此對應至GPU私有記憶體之系統記憶體103中之分配,係典型地使用於保存位在核函式之內部及屬於各工作項之區域之堆疊變數。
常數記憶體包含具有編碼執行過程始終為常數之值之資料。對於執行在GPU上之GPU核函式來說,常數記憶體係可在圖形記憶體107及/或GPU全域快取記憶體110中。常數記憶體一般而言只可被讀取,且不依附於工作組。在本發明之實施例中,常數記憶體係映射至可被所有記憶體核心存取之系統記憶體之區,因為執行在任何CPU核心上之任何工作組或工作項可能需要存取至常數記憶體。又,較佳地,從主記憶體分配之常數記憶體係複製在各CPU核心之快取記憶體中。第4圖顯示將GPU記憶體層級映射至CPU之佈局之範例。
在步驟321中,可排程GPU核函式以執行在一個或更多所選擇的CPU核心上,例如核心141及/或142。排程GPU核函式以供執行之程序可包括配置執行環境,例如OpenCL運行系統,以將工作組及工作項映射在所選擇的CPU核心上。
在使用OpenCL框架以編譯及執行異質計算系統100上之編碼之本發明之一實施例中,步驟321可包括使一個或更多命令排列於命令佇列。舉例而言,在異質計算系統100中使用OpenCL框架,可排程GPU核函式以在一個或更多核心141及多核心CPU 101上執行。典型地,在使用OpenCL框架之異質計算系統100上運行應用程式時,控制部分係運行在主機上,該控制部分係令所選擇的編碼在系統100之裝置(例如GPU 102或核心141及142)上開始執行。CPU核心,例如核心141及142的其中之一,可作為主機,且分配GPU核函式至系統100之裝置以執行之。舉例而言,映射CPU記憶體之命令,及執行GPU核函式之命令,可排程命令佇列中,其中,該命令佇列係在針對多核心CPU 101所建立之內容中所創設者。OpenCL運行環境係執行被寫至系統100中特定裝置中之各個命令佇列之各命令。
於排程GPU核函式以在多核心CPU 101上執行時,在步驟313至325判定之執行映射及配置之指令,係可插入至編碼以在多核心CPU 101上執行。舉例而言,工作組內工作項可能需要同步點以被自動地或由程式設計人員手動地插入。
於多核心CPU 101上實施工作組內之工作同步時,本發明之實施例可令工作項執行到同步點。舉例而言,各工作項以串聯方式逐個執行到同步點(例如,barrier()函數)且在執行下個工作項之前停止在同步點。當具有同步點之工作組中所有工作項已到達此處,各工作項串聯地從同步點執行至工作項之終端。可插入例如儲存工作項狀態之setmp()及復歸此工作之狀態之longjmp()之函數至編碼中。在本發明之實施例中,此種附加的編碼不會插入在GPU核函式之原始編碼中。反而,此種附加的編碼係插入在GPU核函式之入口、出口及/或屏障常式(routine)中(且不會在GPU核函式編碼內)。本發明之實施例藉由不更改GPU核函式本身之原始編碼而促進除錯成效。
在步驟323中,判定是否具有額外的編碼被執行,若是,程序300返回至步驟307。若無更多編碼要被執行,程序300終止在步驟325中。
記憶體映射至CPU之範例
第4圖描繪在CPU核心之系統記憶體及快取記憶體中記憶體佈局之範例。401係例如描繪在系統記憶體103中之對應於GPU核函式之記憶體分配之佈局,其中該GPU核函式原先寫成要在例如GPU 102之GPU上執行。402描繪在單一CPU核心之快取中(例如在CPU 101中之快取109中)之對應的記憶體佈局。
舉例而言,區域記憶體411及421係可分別對應於GPU 102之區域記憶體114及115。私有記憶體412、413、422及423係可分別對應於GPU 102之私有記憶體131、132、133及134。常數記憶體(例如,儲存固定參數之記憶體區)。就如402所示,CPU核心之快取可具有區域記憶體區塊、對應用於工作組中各工作項之一區塊之一系列的私有記憶體區塊、及常數記憶體區。在一些實施例中,具有藉由CPU核心進行處理時所需要之區域記憶體、私有記憶體及常數記憶體全部於CPU核心之快取可得時係可為特別地有優勢,由此可減少關於存取系統記憶體103之延遲。
如401所示,系統記憶體之鄰近地區可分配至各區域記憶體411及421,使得其分別模擬GPU 102之區域記憶體114及115。由GPU核函式編碼所存取之區域記憶體位址可翻譯至此分配的地區內之偏移。分配在系統記憶體中之區域記憶體之總大小可為M乘上(每工作組之區域記憶體大小),其中M係為CPU核心之數目。私有記憶體之總大小可為M乘上N乘上(每工作組之私有記憶體大小),其中M係為核心之數目且N係為每工作組之工作項之數目。
為了額外的除錯能力,本發明之一些實施例可包括在系統記憶體中之分離記憶體分配之間之防護頁(guard page)。舉例而言,防護頁441、442、443、444、445及446可插入在用於不同OS緒之分配之間,以及用於相同緒之不同記憶體分配之間。在範例實施中,可設定暫存器每次一指令嘗試存取記憶體之防護頁區。記憶體存取錯誤之快速偵測在以實質平行方式執行大量平行緒之應用程式中係特別有效用。
在CPU上排程工作項之範例
依據本發明之實施例,第5圖顯示實施步驟317之程序步驟501至523。在步驟501中,排程工作組緒。如先前所述,本發明之實施例在各CPU核心上創造單一作業系統緒,在其中,排程多個使用者層級緒。舉例而言,若排程GPU核函式之20個實例1…20,GPU核函式緒1…10(如工作項1…10)可被排程於核心141,且GPU核函式緒11…20(如工作項11…20)可被排程於核心142。工作項1…10及11…20可分別被聚集至工作組1及工作組2。如先前提及,各工作組係實施成OS緒,因此可在各核心141及142上創造一個OS緒,以分別實施工作組1及2。
在步驟503中,判定GPU核函式是否需要與其他平行執行的GPU核函式進行同步。舉例而言,OpenCL編碼可包括一個或呼叫barrier()函數。若此種呼叫同步係存在,則判定GPU核函式需要同步;否則,GPU核函式可能不需要同步。
若判定GPU核函式不需要同步,則依據需求的實例數目而將GPU核函式排程為以從頭到尾之方式執行。舉例而言,在步驟501中創造之各OS緒內,排程預定數量之GPU核函式或工作項,以執行成使用者層級緒。因為,在工作項之中無需同步,將各工作項排程為以從頭到尾之方式執行。
當工作項使用者緒執行完成時,於步驟505中,可例如藉由使用回呼(callback)函數通知OpenCL執行框架。當於步驟507中通知工作項已完成執行時,於步驟509中可排程工作組中下一個工作項以執行成使用者層級緒。OpenCL執行框架復可定期地查詢一個或更多狀態參數以判定工作項是否已經完成執行。當沒有餘留更多欲排程之工作項在工作組內時,工作組即已完成執行。
應注意的是,在一些實施例中,可在各CPU核心上排程超過一個工作組,以先後串聯地執行。若在步驟509中,判定執行工作組之所有工作項已完成執行,則,於步驟511中,判定是否有其他欲在現有核心上執行之工作組。若在現有CPU核心上有更多待排程之工作組時,則排程下一個工作組以作執行。排程另一工作組可包括重新初始化用於現有CPU核心上現存OS緒之記憶體分配。請注意,本發明之實施例中,當創造OS緒時,可一次完成記憶體分配,且通常不會需要針對指派至此OS緒之各工作組進行重新分配。
若在步驟503中,判定需要進行同步,則依據所需要之實例數目,排程GPU核函式以從頭執行到下一個同步點(例如barrier()呼叫)。舉例而言,於步驟513中,排程工作項之使用者層級緒以從頭執行到下一個barrier()呼叫之發生。當遭遇到barrier()呼叫時,可儲存執行緒之狀態。在一實施例中,可使用例如setjmp()之函數呼叫以儲存使用者層級緒之狀態。所儲存的使用者層級緒之狀態可包括暫存器之內容,例如,堆疊指標、框指標及程式計數器。可將各工作項使用者層級緒之狀態儲存在例如系統記憶體103之系統記憶體之一區中,或在例如持久性記憶體104之持久性記憶體中。
於步驟515中,當執行的工作項緒達到同步點時,則在步驟517中判定是否有更多在現行工作組內待排程之工作項。當在步驟515中工作項使用者層級緒之執行達到同步點時,可例如使用回呼函數通知OpenCL執行框架。當在步驟515中通知工作項已達到同步點時,在步驟517中可排程工作組中下一個工作項以執行成使用者層級緒。OpenCL執行框架復可定期地查詢一個或更多狀態參數以判定工作項是否已達到同步點。當工作組內沒有餘留更多待排程之工作項時,工作組已完成將工作項執行至同步點。
若於步驟519中判定工作項在達到序執行之結尾前具有更多同步點,則針對各工作項重複步驟513至525以從現行同步點執行到下一個同步點。
若於步驟519中判定工作組中工作項已不具有更多同步點,則在步驟521中,排程一個或達到同步點之工作項以從此點執行到結束。排程工作項緒以從同步點執行到結束可包括復歸緒之狀態。在一實施例中,可使用例如longjmp()之函數呼叫以復歸先前使用setjmp()儲存之緒之狀態。需注意的是,setjmp()longjmp()係分別為習知上被辨識為程序或緒之儲存及復歸狀態之函數名稱。
於步驟523中,判定執行工作項緒是否已經完成。如關於步驟507所述,可基於回呼函數或定期查詢而判定工作項緒是否已經完成執行。若判定工作項已完成執行,則在步驟523中,判定是否有待從最後遭遇之同步點執行到最終之更多工作項緒。若有,排程下一個工作項且針對各待執行之工作項重複步驟521至525。
當工作組之所有工作項緒已完成執行時,則在步驟527中,判定是否在現行選擇的CPU核心上有其他工作組待排程。若有其他工作組待排程,則針對其他各工作組重複步驟513至527。
第6圖圖式地描繪工作項緒執行。在601中,逐一執行工作項緒Wi0…Win-1直到所有工作組之工作項已從開始執行到結束。601描繪無同步需求之案例。在602中,逐一執行工作項緒Wi0…Win-1直到所有工作組之工作項已從開始執行到第一同步點,其在此處以呼叫barrier()加以標示。在工作組之所有工作項已從開始執行到barrier()後,接著逐一地從同步點執行此些工作項中之各者到結束。
結論
發明說明及摘要段落可闡述如發明人所考量之一個或更多但並非所有之本發明之實施例,且因此,不意圖於限制本發明及以任何方式附加的專利申請範圍。
本發明已以用於描繪特定功能及關聯之實施例之功能性建構區塊之協助而在以上作說明。為方便敘述,在此處,此些功能性建構區塊之邊界係被任意地定義。只要特定功能及關聯係適當地實施即可定義改變的邊界。
前述特定實施例之敘述將充分地揭露本發明之一般性質,其他人藉由應用相同技術領域中之技藝無須過度實驗即可輕易地修改及/或適用於各種應用此種特定實施例,而不背離本發明之一般概念。因此,基於在此處之敎示及引導,此種適用及修改係傾向於落在揭露之實施例之等效含義及範圍內。應了解到,在此處之用語或術語,係用於敘述之目的,並非用來加以限制,使得熟知本技術領域人士係參考教示及引導而理解本說明書之術語或用語。
本發明之廣度及範疇不應被任何上述實施例所加以限制,係應只被以下專利申請範圍及其等效所加以定義。
100...異質計算系統
101...CPU
102‧‧‧GPU
103‧‧‧系統記憶體
104‧‧‧持久性記憶體
105‧‧‧系統匯流排
106‧‧‧輸入/輸出介面
107‧‧‧圖形記憶體
108‧‧‧除錯器
109‧‧‧GPU核函式排程器
110‧‧‧GPU全域快取記憶體
112、113‧‧‧計算單元
114、115‧‧‧GPU區域記憶體
121至124‧‧‧GPU處理元件
131至134‧‧‧私有記憶體
141、142‧‧‧CPU核心
143、144‧‧‧快取記憶體
145‧‧‧SSE單元
201‧‧‧編碼分析器
203‧‧‧CPU記憶體映射器
205‧‧‧工作組排程器
207‧‧‧緒排程器
300‧‧‧程序
301至325‧‧‧步驟
401、402‧‧‧步驟
411、421‧‧‧區域記憶體
412、413‧‧‧私有記憶體
422、423‧‧‧私有記憶體
441至446‧‧‧防護頁
503至527‧‧‧步驟
601、602‧‧‧步驟
Wi0…Win-1‧‧‧工作項緒
併入至且構成為說明書一部份之附加圖示係描繪本發明之實施例,連同前述之發明內容及實施方式之詳細敘述,協助解釋本發明之原理。在圖示中,其中:
第1圖顯示依據本發明之實施例之異質計算系統。
第2圖顯示依據本發明之實施例之GPU核函式排程器。
第3圖係依據本發明之實施例之在異質計算系統上用於執行編碼之程序。
第4圖係關於本發明之例示記憶體佈局之描繪。
第5圖係關於本發明之在異質計算系統上用於排程工作項之程序。
第6圖係關於本發明之緒排程之例示描繪。
100...異質計算系統
101...CPU
102...GPU
103...系統記憶體
104...持久性記憶體
105...系統匯流排
106...輸入/輸出介面
107...圖形記憶體
108...除錯器
109...GPU核函式排程器
112、113...計算單元
114、115...GPU區域記憶體
121至124...GPU處理元件
131至134...私有記憶體
141、142...CPU核心
143、144...快取記憶體
145...SSE單元

Claims (27)

  1. 一種執行複數個平行資料緒之方法,該方法包括下列步驟:將第一複數個平行資料緒群集成一工作組組集之第一工作組且將第二複數個平行資料緒群集成該工作組組集之第二工作組,其中,該第一工作組分配至處理器之第一處理器核心且該第二工作組分配至該處理器之第二處理器核心;使該第一工作組關聯於配置成在該第一處理器核心上執行之第一操作系統緒;將關聯於第二處理器之記憶體層級映射至關聯於該第一處理器核心之記憶體;以及將該第一複數個平行資料緒排程在第一操作系統緒內,其中,該排程包括將該第一複數個平行資料緒配置成執行到同步點,且將該第一複數個平行資料緒各者配置成在所有該第一複數個平行資料緒到達該同步點後,由該同步點重新開始執行。
  2. 如申請專利範圍第1項所述之方法,其中,該排程包括:將來自該第一工作組之該平行資料緒群集成緒之子集;將第一子集配置成用以執行;以及將第二子集配置成在該第一子集完成執行後執行。
  3. 如申請專利範圍第1項所述之方法,其中,所述配置平行資料緒包括藉由緒程式庫作該平行資料緒的排程。
  4. 如申請專利範圍第1項所述之方法,復包括:使該第二工作組關聯於第二處理器核心上之第二操作系統緒;以及將來自該工作組組集之該第二工作組之該第二複數個平行資料緒排程在該關聯的第二操作系統緒內,其中,將該第一及第二工作組配置成實質上同時地執行。
  5. 如申請專利範圍第1項所述之方法,其中,所述關聯該第一工作組包括設定用於該處理器核心之該操作系統緒之處理器親合性。
  6. 如申請專利範圍第1項所述之方法,其中,該排程復包括:在達到該同步點時,儲存來自該第一工作組之該第一複數個平行資料緒各者的狀態;以及在上述重新開始執行之前,回復來自該第一工作組之該第一複數個平行資料緒各者的狀態。
  7. 如申請專利範圍第6項所述之方法,其中,所述儲存狀態包括執行由該第一複數個平行資料緒各者呼叫之程式庫常式中的編碼以儲存該狀態。
  8. 如申請專利範圍第1項所述之方法,其中,該排程復包括:在用於來自該第一工作組之該第一複數個平行資料緒的編碼中插入同步呼叫。
  9. 如申請專利範圍第1項所述之方法,其中,該第一處理 器核心係為控制處理單元(CPU)核心。
  10. 如申請專利範圍第1項所述之方法,其中,該第一複數個平行資料緒係為圖形處理單元(GPU)核函式。
  11. 如申請專利範圍第1項所述之方法,其中,該第一處理器核心與該第二處理器核心係為不同之處理器型態。
  12. 如申請專利範圍第11項所述之方法,其中,該映射包括:在耦合至該第一處理器核心之系統記憶體中分配複數個第一區,其中,各該第一區對應於可藉由來自該第一工作組之一個緒所存取之私有記憶體;以及在耦合至該處理器核心之系統記憶體中分配複數個第二區,其中,各該第二區對應於與來自該第一工作組之所有緒相關聯之區域記憶體。
  13. 如申請專利範圍第12項所述之方法,其中,該映射復包括:分配防護頁於來自該等複數個第一區之各個第一區對之間;以及分配防護頁於來自該等複數個第二區之各個第二區對之間。
  14. 如申請專利範圍第12項所述之方法,其中,該映射復包括:在耦合至該第一處理器核心之快取記憶體中形成快取區,其中,該快取區包括該第一區及第二區之其中至少一者之內容。
  15. 如申請專利範圍第1項所述之方法,其中,所述排程包括排程該各自平行資料緒以在使用者空間執行而無轉換核函式空間。
  16. 如申請專利範圍第1項所述之方法,其中,該工作組組集中工作組的數量是相同於該處理器之處理器核心的數量。
  17. 一種執行圖形處理單元(GPU)核心之方法,包括:將包括該GPU核函式之應用程式加載至主機處理器,其中,該GPU核函式先前已配置成在GPU上執行,其中,該GPU核函式係配置成在該GPU上實例化(instantiate)複數個平行資料緒;將第一複數個平行資料緒群集成一工作組組集之第一工作組且將第二複數個平行資料緒群集成該工作組組集之第二工作組,其中,該第一工作組分配至該主機處理器之第一處理器核心且該第二工作組分配至該主機處理器之第二處理器核心;使該第一工作組關聯於耦合至該主機處理器之該第一處理器核心之第一操作系統緒,其中,將該第一操作系統緒配置成只在該處理器核心其中一者上執行;將關聯於該GPU之記憶體層級映射至關聯於該第一處理器核心之系統記憶體;以及將該第一複數個平行資料緒排程在該第一操作系統緒內,其中,該排程包括將來自該第一工作組之該第一複數個平行資料緒配置成執行到同步點,且將該第一 複數個平行資料緒各者配置成在所有該第一複數個平行資料緒到達該同步點後,由該同步點重新開始執行。
  18. 如申請專利範圍第17項所述之方法,復包括:將來自耦合至該GPU之該記憶體層級的分配映射至耦合於一個或更多處理器核心之該系統記憶體。
  19. 如申請專利範圍第17項所述之方法,其中,該工作組組集中工作組的數量是相同於該處理器之處理器核心的數量。
  20. 一種執行處理邏輯的複數個平行資料緒之系統,包括:包括處理器核心之至少一個處理器;耦合於該處理器核心之至少一個記憶體;耦合於該至少一個處理器及該至少一個記憶體之圖形處理單元(GPU)核函式排程器,其被配置成:將第一複數個平行資料緒群集成一工作組組集之第一工作組且將第二複數個平行資料緒群集成該工作組組集之第二工作組,其中,該第一工作組分配至處理器之第一處理器核心且該第二工作組分配至該處理器之第二處理器核心;使該第一工作組關聯於配置成在該第一處理器核心上執行之操作系統緒;將關聯於該GPU之記憶體層級映射至關聯於該第一處理器核心之記憶體;以及將來自該第一工作組之各自平行資料緒排程在該關聯的操作系統緒內,其中,該排程包括將來自該工作 組之該各自平行資料緒配置成執行到同步點,且將該各自平行資料緒各者配置成在所有該各自平行資料緒到達該同步點後,由該同步點重新開始執行。
  21. 如申請專利範圍第20項所述之系統,其中,該圖形處理單元核函式排程器復被配置成:將來自該第一工作組之緒群集成緒之子集;將第一子集配置成用以執行;以及將第二子集配置成在該第一子集完成執行後執行。
  22. 如申請專利範圍第20項所述之系統,其中,該處理器係為控制處理單元(CPU)。
  23. 如申請專利範圍第20項所述之系統,其中,該工作組組集中工作組的數量是相同於該處理器之處理器核心的數量。
  24. 一種有形電腦程式產品,包括紀錄有電腦程式邏輯之電腦可讀取媒體,該電腦程式邏輯係用以令至少一處理器:將複數個平行資料緒群集成一工作組組集之第一工作組且將第二複數個平行資料緒群集成該工作組組集之第二工作組,其中,該第一工作組分配至處理器之第一處理器核心且該第二工作組分配至該處理器之第二處理器核心;使該第一工作組關聯於至少一處理器核心上之操作系統緒;將關聯於第二處理器之記憶體層級映射至關聯於 該第一處理器核心之記憶體;以及將來自該第一工作組之各自平行資料緒排程在該關聯的操作系統緒內,其中,該排程包括將來自該第一工作組之該各自平行資料緒配置成執行到同步點,且將該各自平行資料緒各者配置成在所有該各自平行資料緒到達該同步點後,由該同步點重新開始執行。
  25. 如申請專利範圍第24項所述之有形電腦程式產品,其中,該電腦可讀取媒體所紀錄之電腦程式邏輯復用以令至少一處理器:將來自該第一工作組之平行資料緒群集成緒之子集;將第一子集配置成用以執行;以及將第二子集配置成在該第一子集完成執行後執行。
  26. 如申請專利範圍第24項所述之有形電腦程式產品,其中,該工作組組集中工作組的數量是相同於該處理器之處理器核心的數量。
  27. 一種用以在處理器核心上執行處理邏輯之複數平行資料緒之方法,該方法包括下列步驟:將該等複數個平行資料緒群集成工作組;使該工作組關聯於配置成在該處理器核心上執行之操作系統緒;將來自該工作組之各別平行資料緒排程在該關聯的作系統緒內;將關聯於第二處理器之記憶體層級映射至關聯於該處理器核心之記憶體,其中,該映射包括: 在耦合至該處理器核心之系統記憶體中分配複數個第一區,其中,各該第一區對應於可藉由來自該工作組之一個緒所存取之私有記憶體;在耦合至該處理器核心之系統記憶體中分配複數個第二區,其中,各該第二區對應於與來自該工作組之所有緒相關聯之區域記憶體;分配防護頁於來自該等複數個第一區之各個第一區對之間;以及分配防護頁於來自該等複數個第二區之各個第二區對之間。
TW099124642A 2009-07-27 2010-07-27 具有橫跨多個處理器之平行資料執行緒的映射處理邏輯 TWI525540B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/509,763 US9354944B2 (en) 2009-07-27 2009-07-27 Mapping processing logic having data-parallel threads across processors

Publications (2)

Publication Number Publication Date
TW201112118A TW201112118A (en) 2011-04-01
TWI525540B true TWI525540B (zh) 2016-03-11

Family

ID=42989500

Family Applications (1)

Application Number Title Priority Date Filing Date
TW099124642A TWI525540B (zh) 2009-07-27 2010-07-27 具有橫跨多個處理器之平行資料執行緒的映射處理邏輯

Country Status (8)

Country Link
US (1) US9354944B2 (zh)
EP (1) EP2460073B8 (zh)
JP (1) JP5934094B2 (zh)
KR (1) KR101759266B1 (zh)
CN (1) CN102576314B (zh)
IN (1) IN2012DN00929A (zh)
TW (1) TWI525540B (zh)
WO (1) WO2011017026A1 (zh)

Families Citing this family (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US9734545B2 (en) * 2009-10-08 2017-08-15 Nvidia Corporation Software methods in a GPU
US8516450B2 (en) * 2010-03-19 2013-08-20 Oracle International Corporation Detecting real-time invalid memory references
CN101799773B (zh) * 2010-04-07 2013-04-17 福州福昕软件开发有限公司 并行计算的内存访问方法
FR2958765B1 (fr) * 2010-04-09 2012-04-13 Commissariat Energie Atomique Memoire cache segmentee.
US8723877B2 (en) * 2010-05-20 2014-05-13 Apple Inc. Subbuffer objects
US9645866B2 (en) 2010-09-20 2017-05-09 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform
US9823991B2 (en) * 2010-12-06 2017-11-21 International Business Machines Corporation Concurrent workload simulation for application performance testing
US8645920B2 (en) * 2010-12-10 2014-02-04 Microsoft Corporation Data parallelism aware debugging
US8949777B2 (en) * 2011-04-22 2015-02-03 Intel Corporation Methods and systems for mapping a function pointer to the device code
US8683468B2 (en) * 2011-05-16 2014-03-25 Advanced Micro Devices, Inc. Automatic kernel migration for heterogeneous cores
US9092267B2 (en) * 2011-06-20 2015-07-28 Qualcomm Incorporated Memory sharing in graphics processing unit
US9176773B2 (en) * 2011-06-29 2015-11-03 Microsoft Technology Licensing, Llc Virtual machine migration tool
US10013731B2 (en) * 2011-06-30 2018-07-03 Intel Corporation Maximizing parallel processing in graphics processors
US9195501B2 (en) * 2011-07-12 2015-11-24 Qualcomm Incorporated Instruction culling in graphics processing unit
KR101818760B1 (ko) 2011-07-22 2018-01-15 삼성전자주식회사 시뮬레이션 장치 및 그의 시뮬레이션 방법
WO2013018184A1 (ja) * 2011-07-29 2013-02-07 富士通株式会社 割当方法、およびマルチコアプロセッサシステム
CN102307198A (zh) * 2011-08-30 2012-01-04 苏州阔地网络科技有限公司 一种音视频数据的传输方法
CN102333226A (zh) * 2011-09-01 2012-01-25 苏州阔地网络科技有限公司 一种音视频数据传输方法
US9417855B2 (en) 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation
US9298586B2 (en) * 2011-10-11 2016-03-29 Apple Inc. Suspending and resuming a graphics application executing on a target device for debugging
US9239793B2 (en) * 2011-12-13 2016-01-19 Ati Technologies Ulc Mechanism for using a GPU controller for preloading caches
US8707314B2 (en) * 2011-12-16 2014-04-22 Advanced Micro Devices, Inc. Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations
US20140019723A1 (en) * 2011-12-28 2014-01-16 Koichi Yamada Binary translation in asymmetric multiprocessor system
US9348594B2 (en) 2011-12-29 2016-05-24 Intel Corporation Core switching acceleration in asymmetric multiprocessor system
KR101332839B1 (ko) 2012-01-05 2013-11-27 서울대학교산학협력단 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 호스트 노드 및 메모리 관리 방법
KR101284195B1 (ko) 2012-01-09 2013-07-10 서울대학교산학협력단 개방형 범용 병렬 컴퓨팅 프레임워크 동적 작업 분배 장치
US9128949B2 (en) * 2012-01-18 2015-09-08 Cloudera, Inc. Memory allocation buffer for reduction of heap fragmentation
US9430807B2 (en) * 2012-02-27 2016-08-30 Qualcomm Incorporated Execution model for heterogeneous computing
US9721091B2 (en) * 2012-02-28 2017-08-01 Red Hat Israel, Ltd. Guest-driven host execution
CN108681519B (zh) * 2012-03-30 2022-04-08 英特尔公司 用于从多线程发送请求至加速器的机制
EP3654178B1 (en) * 2012-03-30 2023-07-12 Intel Corporation Mechanism for issuing requests to an accelerator from multiple threads
US9513975B2 (en) * 2012-05-02 2016-12-06 Nvidia Corporation Technique for computational nested parallelism
KR102060431B1 (ko) * 2012-08-24 2020-02-11 삼성전자주식회사 멀티 코어 시스템의 전력 관리 장치 및 방법
JP2014149765A (ja) * 2013-02-04 2014-08-21 Toshiba Corp コンパイラ、オブジェクトコード生成方法、情報処理装置及び情報処理方法
US8966510B2 (en) 2013-02-04 2015-02-24 International Business Machines Corporation Kernel execution for hybrid systems
KR101694302B1 (ko) * 2013-03-11 2017-01-23 한국전자통신연구원 이기종 멀티코어 프로세서 시스템의 관리 장치 및 방법
KR102062208B1 (ko) * 2013-05-03 2020-02-11 삼성전자주식회사 멀티스레드 프로그램 코드의 변환 장치 및 방법
DE112013006550T5 (de) * 2013-05-31 2015-11-19 Hitachi, Ltd. Steuerungsgerät und Steuerungsverfahren
US9633408B2 (en) * 2013-06-14 2017-04-25 Microsoft Technology Licensing, Llc Coalescing graphics operations
US9645820B2 (en) 2013-06-27 2017-05-09 Intel Corporation Apparatus and method to reserve and permute bits in a mask register
US9405937B2 (en) 2013-06-28 2016-08-02 Intel Corporation Method and apparatus for securing a dynamic binary translation system
KR101569093B1 (ko) * 2013-08-13 2015-11-13 삼성에스디에스 주식회사 분산 시스템에서 데이터를 처리하는 방법
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
TWI625622B (zh) * 2013-10-31 2018-06-01 聯想企業解決方案(新加坡)有限公司 在多核心處理器系統與運作多核心處理器系統的電腦實施方法
GB2521151B (en) * 2013-12-10 2021-06-02 Advanced Risc Mach Ltd Configurable thread ordering for a data processing apparatus
US9589311B2 (en) * 2013-12-18 2017-03-07 Intel Corporation Independent thread saturation of graphics processing units
US9916162B2 (en) * 2013-12-26 2018-03-13 Intel Corporation Using a global barrier to synchronize across local thread groups in general purpose programming on GPU
US9588804B2 (en) 2014-01-21 2017-03-07 Qualcomm Incorporated System and method for synchronous task dispatch in a portable device
KR102114245B1 (ko) 2014-04-10 2020-06-05 삼성전자 주식회사 그래픽스 상태 관리 장치 및 방법
US9558094B2 (en) * 2014-05-12 2017-01-31 Palo Alto Research Center Incorporated System and method for selecting useful smart kernels for general-purpose GPU computing
US10332229B2 (en) 2014-05-12 2019-06-25 Palo Alto Research Center Incorporated System and method for high performance k-means clustering on GPU with smart kernels
EP2950214B1 (fr) * 2014-05-23 2024-04-03 Kalray Barriere de synchronisation materielle entre elements de traitement
US9442706B2 (en) * 2014-05-30 2016-09-13 Apple Inc. Combining compute tasks for a graphics processing unit
US10061591B2 (en) 2014-06-27 2018-08-28 Samsung Electronics Company, Ltd. Redundancy elimination in single instruction multiple data/thread (SIMD/T) execution processing
US10061592B2 (en) 2014-06-27 2018-08-28 Samsung Electronics Co., Ltd. Architecture and execution for efficient mixed precision computations in single instruction multiple data/thread (SIMD/T) devices
US9690709B2 (en) * 2014-07-14 2017-06-27 Oracle International Corporation Variable handles
US9911508B2 (en) * 2014-09-18 2018-03-06 Via Alliance Semiconductor Co., Ltd Cache memory diagnostic writeback
CN104331302B (zh) * 2014-09-29 2018-10-02 华为技术有限公司 一种应用更新方法、移动终端和通信系统
US10423414B2 (en) * 2014-11-12 2019-09-24 Texas Instruments Incorporated Parallel processing in hardware accelerators communicably coupled with a processor
KR102315279B1 (ko) 2014-11-28 2021-10-20 삼성전자 주식회사 작업 그룹의 크기를 결정하는 장치 및 방법
CN105893319A (zh) * 2014-12-12 2016-08-24 上海芯豪微电子有限公司 一种多车道/多核系统和方法
US9965343B2 (en) * 2015-05-13 2018-05-08 Advanced Micro Devices, Inc. System and method for determining concurrency factors for dispatch size of parallel processor kernels
US10387988B2 (en) * 2016-02-26 2019-08-20 Google Llc Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform
CN105786523B (zh) * 2016-03-21 2019-01-11 北京信安世纪科技股份有限公司 数据同步系统及方法
CN107450968B (zh) * 2016-05-31 2020-09-08 华为技术有限公司 负载还原方法、装置和设备
US10146583B2 (en) * 2016-08-11 2018-12-04 Samsung Electronics Co., Ltd. System and method for dynamically managing compute and I/O resources in data processing systems
KR102576707B1 (ko) 2016-12-26 2023-09-08 삼성전자주식회사 전자 시스템 및 그 동작 방법
KR102592330B1 (ko) * 2016-12-27 2023-10-20 삼성전자주식회사 OpenCL 커널을 처리하는 방법과 이를 수행하는 컴퓨팅 장치
US11353868B2 (en) * 2017-04-24 2022-06-07 Intel Corporation Barriers and synchronization for machine learning at autonomous machines
GB2566514B (en) * 2017-09-15 2020-01-08 Imagination Tech Ltd Resource allocation
EP3704587A1 (en) * 2017-11-02 2020-09-09 Silicon Mobility SAS Software environment for control engine debug, test, calibration and tuning
CN108319459B (zh) * 2018-02-12 2022-04-29 芯峰科技(广州)有限公司 一种行为级描述到rtl描述的ccc编译器
WO2019157743A1 (zh) * 2018-02-14 2019-08-22 华为技术有限公司 线程处理方法和图形处理器
US11010888B2 (en) 2018-10-29 2021-05-18 International Business Machines Corporation Precision defect detection based on image difference with respect to templates
US11093580B2 (en) * 2018-10-31 2021-08-17 Advanced Micro Devices, Inc. Matrix multiplier with submatrix sequencing
US10957032B2 (en) 2018-11-09 2021-03-23 International Business Machines Corporation Flexible visual inspection model composition and model instance scheduling
US11107263B2 (en) * 2018-11-13 2021-08-31 Intel Corporation Techniques to manage execution of divergent shaders
CN112292678A (zh) * 2019-01-04 2021-01-29 百度时代网络技术(北京)有限公司 用于验证将要由主机系统的数据处理加速器执行的内核对象的方法与系统
US11726820B2 (en) * 2019-05-03 2023-08-15 EMC IP Holding Company, LLC Peeking and polling storage management system and method
US11567555B2 (en) * 2019-08-30 2023-01-31 Intel Corporation Software assisted power management
KR102224446B1 (ko) * 2019-10-14 2021-03-09 이화여자대학교 산학협력단 Gpgpu 스레드 블록 스케줄링 확장 방법 및 장치
KR102275529B1 (ko) * 2019-12-23 2021-07-09 주식회사 텔레칩스 멀티-마스터를 지원하는 그래픽 처리 장치를 공유하는 시스템 온 칩 및 그래픽 처리 장치의 동작 방법
KR102484563B1 (ko) * 2021-03-15 2023-01-04 숙명여자대학교산학협력단 다중 작업 효율화 방법 및 장치
US11556355B2 (en) * 2021-06-02 2023-01-17 Sap Se Application function library for cloud systems

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6729699B1 (en) * 2000-10-04 2004-05-04 International Business Machines Corporation Invocation map based architecture for program execution
US6865738B2 (en) * 2002-10-08 2005-03-08 Sun Microsystems, Inc. Method and apparatus for managing independent asynchronous I/O operations within a virtual machine
US20040231000A1 (en) * 2003-02-18 2004-11-18 Gossalia Anuj B. Video aperture management
JP4057989B2 (ja) 2003-09-26 2008-03-05 株式会社東芝 スケジューリング方法および情報処理システム
US20050198464A1 (en) * 2004-03-04 2005-09-08 Savaje Technologies, Inc. Lazy stack memory allocation in systems with virtual memory
US7240182B2 (en) * 2004-09-16 2007-07-03 International Business Machines Corporation System and method for providing a persistent function server
JP4448784B2 (ja) * 2005-03-15 2010-04-14 株式会社日立製作所 並列計算機の同期方法及びプログラム
US8028295B2 (en) 2005-09-30 2011-09-27 Intel Corporation Apparatus, system, and method for persistent user-level thread
US7788468B1 (en) * 2005-12-15 2010-08-31 Nvidia Corporation Synchronization of threads in a cooperative thread array
US7861060B1 (en) * 2005-12-15 2010-12-28 Nvidia Corporation Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior
US8077174B2 (en) * 2005-12-16 2011-12-13 Nvidia Corporation Hierarchical processor array
US8074224B1 (en) * 2005-12-19 2011-12-06 Nvidia Corporation Managing state information for a multi-threaded processor
US7916864B2 (en) * 2006-02-08 2011-03-29 Nvidia Corporation Graphics processing unit used for cryptographic processing
US7925860B1 (en) * 2006-05-11 2011-04-12 Nvidia Corporation Maximized memory throughput using cooperative thread arrays
JP4493626B2 (ja) 2006-05-25 2010-06-30 株式会社ソニー・コンピュータエンタテインメント マルチプロセッサシステム、ライブラリモジュール、および描画処理方法
US7623134B1 (en) * 2006-06-15 2009-11-24 Nvidia Corporation System and method for hardware-based GPU paging to system memory
US20080034179A1 (en) * 2006-08-03 2008-02-07 Mewhinney Greg R Guard bands in very large virtual memory pages
US8860741B1 (en) * 2006-12-08 2014-10-14 Nvidia Corporation Graphics processor with memory management unit and cache coherent link
US8549500B2 (en) * 2007-02-14 2013-10-01 The Mathworks, Inc. Saving and loading graphical processing unit (GPU) arrays providing high computational capabilities in a computing environment
US8341611B2 (en) * 2007-04-11 2012-12-25 Apple Inc. Application interface on multiple processors
US8286196B2 (en) 2007-05-03 2012-10-09 Apple Inc. Parallel runtime execution on multiple processors
US7743232B2 (en) 2007-07-18 2010-06-22 Advanced Micro Devices, Inc. Multiple-core processor with hierarchical microcode store
US8370845B1 (en) * 2007-08-08 2013-02-05 Nvidia Corporation Method for synchronizing independent cooperative thread arrays running on a graphics processing unit
JP2009059181A (ja) 2007-08-31 2009-03-19 Mitsubishi Electric Corp マルチプロセッサシステム
US8339404B2 (en) 2007-11-29 2012-12-25 Accelereyes, Llc System for improving utilization of GPU resources
US8184120B2 (en) * 2008-05-19 2012-05-22 Siemens Aktiengesellschaft Framework for processing and rendering large volume data
US8286198B2 (en) * 2008-06-06 2012-10-09 Apple Inc. Application programming interfaces for data parallel computing on multiple processors
US8225325B2 (en) * 2008-06-06 2012-07-17 Apple Inc. Multi-dimensional thread grouping for multiple processors
CN102089752B (zh) * 2008-07-10 2014-05-07 洛克泰克科技有限公司 依赖性问题的有效率的并行计算
EP2192780A1 (en) * 2008-11-28 2010-06-02 Thomson Licensing Method for video decoding supported by Graphics Processing Unit
US20100156888A1 (en) * 2008-12-23 2010-06-24 Intel Corporation Adaptive mapping for heterogeneous processing systems
US8607234B2 (en) * 2009-07-22 2013-12-10 Empire Technology Development, Llc Batch scheduling with thread segregation and per thread type marking caps

Also Published As

Publication number Publication date
KR101759266B1 (ko) 2017-07-18
JP2013500543A (ja) 2013-01-07
EP2460073A1 (en) 2012-06-06
TW201112118A (en) 2011-04-01
IN2012DN00929A (zh) 2015-04-03
WO2011017026A1 (en) 2011-02-10
EP2460073B8 (en) 2018-05-16
CN102576314B (zh) 2016-08-03
US20110022817A1 (en) 2011-01-27
EP2460073B1 (en) 2018-04-11
JP5934094B2 (ja) 2016-06-15
CN102576314A (zh) 2012-07-11
US9354944B2 (en) 2016-05-31
KR20120054027A (ko) 2012-05-29

Similar Documents

Publication Publication Date Title
TWI525540B (zh) 具有橫跨多個處理器之平行資料執行緒的映射處理邏輯
US20240176601A1 (en) Method and system of command buffer between a cpu and gpu
US11847508B2 (en) Convergence among concurrently executing threads
US8782645B2 (en) Automatic load balancing for heterogeneous cores
EP3126971A1 (en) Program execution on heterogeneous platform
CN101551761A (zh) 一种异构多处理器中共享流内存的方法
JP2019049843A (ja) 実行ノード選定プログラム、実行ノード選定方法及び情報処理装置
CN113454592A (zh) 存储器管理系统
JP2021034023A (ja) アクセラレータにおいてヘテロジニアスコンポーネントを設定する方法及び装置
US11340942B2 (en) Cooperative work-stealing scheduler
Mantas et al. An introduction to GPU computing for numerical simulation
Zheng et al. HiWayLib: A software framework for enabling high performance communications for heterogeneous pipeline computations
Lee et al. Dynamic scheduling of stream programs on embedded multi-core processors
Valero et al. Towards a more efficient use of gpus
Peterson et al. Automatic halo management for the Uintah GPU-heterogeneous asynchronous many-task runtime
Tarakji et al. The development of a scheduling system GPUSched for graphics processing units
US20120137300A1 (en) Information Processor and Information Processing Method
Sakai et al. Towards automating multi-dimensional data decomposition for executing a single-GPU code on a multi-GPU system
US20130166887A1 (en) Data processing apparatus and data processing method
CN110879744B (zh) 利用多线程执行计算图的方法和系统
Ohno et al. Dynamic Task Scheduling Scheme for a GPGPU Programming Framework
CN112214443B (zh) 设置于图形处理器中的二次卸载装置和方法
US20220019531A1 (en) Allocating Variables to Computer Memory
Kim et al. Sophy+: Programming model and software platform for hybrid resource management of many-core accelerators
CN112230931A (zh) 计算机可读取存储介质、适应于图形处理器的二次卸载的编译装置和方法