CN111143174B - 在共享功率/热约束下操作的硬件的最佳操作点估计器 - Google Patents
在共享功率/热约束下操作的硬件的最佳操作点估计器 Download PDFInfo
- Publication number
- CN111143174B CN111143174B CN201910461646.2A CN201910461646A CN111143174B CN 111143174 B CN111143174 B CN 111143174B CN 201910461646 A CN201910461646 A CN 201910461646A CN 111143174 B CN111143174 B CN 111143174B
- Authority
- CN
- China
- Prior art keywords
- chip
- operating point
- optimal operating
- hardware components
- workload
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 claims abstract description 112
- 238000000034 method Methods 0.000 claims abstract description 56
- 238000013473 artificial intelligence Methods 0.000 claims description 66
- 238000005457 optimization Methods 0.000 claims description 47
- 238000012549 training Methods 0.000 claims description 17
- 230000006870 function Effects 0.000 claims description 16
- 238000013135 deep learning Methods 0.000 claims description 12
- 230000008859 change Effects 0.000 claims description 8
- 238000012545 processing Methods 0.000 description 78
- 239000012634 fragment Substances 0.000 description 23
- 230000008569 process Effects 0.000 description 21
- 238000005192 partition Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 17
- 239000000872 buffer Substances 0.000 description 16
- 239000011159 matrix material Substances 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 238000003860 storage Methods 0.000 description 12
- 239000004065 semiconductor Substances 0.000 description 10
- 238000013528 artificial neural network Methods 0.000 description 9
- 238000009826 distribution Methods 0.000 description 8
- 230000010076 replication Effects 0.000 description 8
- 238000012360 testing method Methods 0.000 description 8
- 238000013519 translation Methods 0.000 description 8
- 230000014616 translation Effects 0.000 description 8
- 238000010801 machine learning Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000004883 computer application Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000002156 mixing Methods 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000004888 barrier function Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 201000010099 disease Diseases 0.000 description 1
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 1
- 238000009509 drug development Methods 0.000 description 1
- 238000007876 drug discovery Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000013067 intermediate product Substances 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000000329 molecular dynamics simulation Methods 0.000 description 1
- 238000000302 molecular modelling Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/16—Constructional details or arrangements
- G06F1/20—Cooling means
- G06F1/206—Cooling means comprising thermal management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/28—Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3296—Power saving characterised by the action undertaken by lowering the supply or operating voltage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3433—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3447—Performance evaluation by modeling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Human Computer Interaction (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Power Sources (AREA)
Abstract
本发明公开了一种在共享功率/热约束下操作的硬件的最佳操作点估计器。具体地,集成电路或计算机芯片通常包括在共享功率(例如,热)约束下操作的多个硬件组件(例如,存储器、处理器等),所述共享功率由芯片的一个或更多个电源提供。通常,硬件组件可以被分别配置为在某些状态下操作(例如,通过设置专用于硬件组件的时钟的时钟速度来以某频率操作)。因此,通常在实现特定应用的某个期望目标(例如,游戏的帧速率等)方面,每个硬件组件可以被配置为在被确定为最佳的操作点处操作。在共享功率/热约束下操作的芯片硬件的上下文中,提供了一种用于确定芯片的最佳操作点的方法、计算机可读介质和系统,其考虑芯片的性能和芯片的功耗两者。
Description
技术领域
本发明涉及在共享功率(例如,热)约束下操作的硬件组件,并且具体地涉及配置在共享功率约束下操作的硬件组件的操作。
背景技术
集成电路或计算机芯片通常包括在共享功率(例如,热)约束下操作的多个硬件组件。功率/热约束可以由芯片的热设计功率(TDP)定义,因此可以由芯片的一个或更多个电源提供[例如,图形处理单元(GPU)电源、动态随机存取存储器(DRAM)电源]。在共享功率/热约束下操作的硬件组件可以是存储器、处理器等,并且可以分别配置为在硬件组件的特定操作约束内在某些状态下操作。例如,通过设置专用于存储器的时钟的时钟速度,可以将存储器配置为在某频率下操作。类似地,通过设置专用于处理器的时钟的时钟速度,处理器(诸如GPU)可以被配置为在某频率下操作。
由于上述硬件组件的可配置性质,已经开发了算法来确定实现特定应用的某些期望性能的硬件组件的特定配置。例如,在图形密集型应用程序(例如游戏)中,处理器可以被配置为以高频率操作,以便增加处理器的每秒帧数(FPS)计算能力,这可以改善用户的图形体验。然而,虽然当前算法可以在特定应用中的性能方面确定各种硬件组件的最佳操作点,但是这些算法通常在最佳地降低硬件组件在“最佳”操作点处消耗的功率方面效率低。因此,虽然可以改善性能,但通常会以增加功耗为代价。
存在解决与现有技术相关的这些问题和/或其他问题的需求。
发明内容
公开了一种用于在共享功率/热约束下操作的芯片硬件的最佳操作点估计器的方法、计算机可读介质和系统,其考虑了性能和功率两者。在使用中,接收与在芯片上执行的工作负载相关联的输入,所述芯片具有在共享功率约束下操作的两个或更多个硬件组件。该输入包括工作负载的描述、两个或更多个硬件组件中的每一个在执行每个工作负载时的性能度量以及每个工作负载的功耗度量。另外,训练人工智能(AI)网络,该AI网络与工作负载的描述、每个工作负载的性能度量以及每个工作负载的功耗相关联。此外,接收对考虑性能和功率两者的芯片的优化模式的选择。此外,AI网络用于根据所选择的优化模式确定芯片的最佳操作点。此外,芯片被配置为在所确定的最佳操作点处操作。
附图说明
图1示出了根据实施例的用于在共享功率/热约束下操作的芯片硬件的最佳操作点估计器的方法的流程图,其考虑性能和功率两者。
图2A示出了根据实施例的最佳操作点估计器的训练阶段的框图。
图2B示出了根据实施例的用于最佳操作点估计器的部署阶段的第一模式的框图。
图2C示出了根据实施例的用于最佳操作点估计器的部署阶段的第二模式的框图。
图2D示出了根据实施例的用于最佳操作点估计器的部署阶段的第三模式的框图。
图2E示出了根据实施例的用于确定效率优化模式的最佳操作点的效率曲线。
图2F示出了根据实施例的操作点估计器的状态机操作。
图3示出了根据实施例的并行处理单元。
图4A示出了根据实施例的图3的并行处理单元内的通用处理集群。
图4B示出了根据实施例的图3的并行处理单元的存储器分区单元。
图5A示出了根据实施例的图4A的流式多处理器。
图5B是根据实施例的使用图3的PPU实现的处理系统的概念图。
图5C示出了可以实现各种先前实施例的各种架构和/或功能的示例性系统。
图6是根据实施例的由图3的PPU实现的图形处理管线的概念图。
具体实施方式
集成电路或计算机芯片通常包括在共享功率(例如,热)约束下操作的多个硬件组件(例如,存储器、处理器等),其由芯片的一个或更多个电源供电。通常,硬件组件可以被分别配置为在某些状态下操作(例如,通过设置专用于硬件组件的时钟的时钟速度来以特定频率操作)。因此,通常在实现特定应用的某个期望目标(例如,游戏的帧速率等)方面,每个硬件组件可以被配置为在被确定为最佳的操作点处操作。
在共享功率/热约束下操作的芯片硬件的上下文中,提供了用于最佳操作点估计器的方法、计算机可读介质和系统,其通过考虑芯片的性能和芯片的功耗两者来确定芯片的最佳操作点。特别地,对于共享功率/热约束的硬件组件的组合,最佳操作点估计器能够确定那些平衡性能和功耗两者的硬件组件的最佳操作状态和电压状态。此外,最佳操作点估计器采用人工智能(AI)网络(其可以是机器学习网络或深度学习网络)来进行最佳操作点确定。
图1示出了根据实施例的用于在共享功率/热约束下操作的芯片硬件的最佳操作点估计器的方法100的流程图,其考虑性能和功率两者。在各种实施例中,可以使用处理单元、程序、定制电路或定制电路和程序的组合来执行方法100,并且因此实现最佳操作点估计器。例如,方法100可以由GPU(图形处理单元)、CPU(中央处理单元)和/或在下面描述的任何硬件实施例的上下文中执行。此外,本领域普通技术人员将理解,执行方法100的任何系统都在本发明的实施例的范围和精神内。
在操作102中,接收与在芯片上执行的工作负载相关联的输入,所述芯片具有在共享功率约束下操作的两个或更多个硬件组件。该输入包括工作负载的描述(例如,针对每个工作负载,执行工作负载的应用的指示、工作负载内执行的操作、执行工作负载的数据或可以用作工作负载的唯一标识符的任何其他描述),在执行每个工作负载时两个或更多个硬件组件中的每一个的性能度量(例如,芯片的处理能力,诸如帧时间、每秒帧数、每秒指令等),以及用于每个工作负载的功耗度量(例如,每个硬件组件执行工作负载所消耗的功率量,两个或更多个硬件组件执行工作负载所消耗的总功率量等)。
在本说明书的上下文中,芯片可以是具有两个或更多个硬件组件的任何集成电路(IC),所述硬件组件在共享功率(例如,热)约束下操作并且能够用于执行工作负载(例如,过程、操作等)。例如,硬件组件可以都是存储器(例如动态随机存取存储器(DRAM)),以及处理器(例如图形处理单元(GPU)、中央处理单元(CPU)等)。另外,共享功率约束指的是硬件组件可用的功率量,并且可以由芯片的一个或更多个电源供电,例如GPU电源、DRAM电源等。
如上所述,接收(例如,捕获或以其他方式累积)与在芯片上执行的工作负载相关联的输入。应当注意,工作负载可以针对不同的应用程序执行,例如加密货币应用程序、游戏应用程序、计算应用程序等,并且可以是那些应用程序的进程、由那些应用程序执行的操作等。此外,输入可以通过捕获逻辑在预定义的时间窗口上累积。例如,对于涉及帧渲染操作的图形工作负载,可以在整个帧上捕获输入,对于涉及计算操作的计算工作负载和涉及深度学习操作的深度学习工作负载,可以在函数调用级别或通过固定的时间段捕获输入。
另外,在操作104中,训练人工智能(AI)网络,其与工作负载的描述、每个工作负载的性能度量以及每个工作负载的功耗相关联。在各种实施例中,AI网络可以是基于浅预测器树的机器学习网络或机器学习模型,或深度学习网络。在任何情况下,经训练的AI网络将特定工作负载的每个描述与特定工作负载的功耗度量以及特定工作负载的性能度量相关联。
此外,在操作106中,接收对考虑性能和功耗两者的芯片的优化模式的选择。在一个实施例中,该选择指示:优化芯片的操作所针对的参数(例如,性能、功率或效率),以及可选地参数的目标值。因此,在一个实施例中,所选择的优化模式可以是针对性能优化芯片的操作,并且该选择可以包括性能的目标值。在另一个实施例中,所选择的优化模式可以是针对功率优化芯片的操作,并且该选择可以包括功率的目标值。在又一个实施例中,所选择的优化模式可以是针对效率优化芯片的操作。可以由用户进行选择,或者基于预定标准、规则或针对其执行优化的特定应用自动地进行选择。
此外,在操作108中,AI网络用于根据所选择的优化模式确定芯片的最佳操作点。在一个实施例中,以这种方式使用AI网络可以包括在芯片上部署AI网络。例如,可以通过在芯片上运行AI网络来部署AI网络,以确定芯片的最佳操作点。作为选择,AI网络可以由芯片的CPU运行以确定芯片的最佳操作点。作为另一个示例,AI网络可以由芯片的专用硬件运行,以确定芯片的最佳操作点。当然,应该注意,AI网络可以由任何计算机处理器、计算机逻辑和/或计算机程序使用,以用于确定芯片的最佳操作点。
当所选择的优化模式是针对性能而优化芯片的操作时,可以通过识别性能的目标值和功率阈值来确定芯片的最佳操作点,并使用AI网络来确定芯片的最佳操作点以在不超过功率阈值的情况下最大化性能。如上所述,当选择优化模式时,指定性能的目标值。作为选项,还可以在选择优化模式时指定功率阈值,或者可以单独指定另一选项(例如,由用户指定,或者基于预定标准、规则、针对其执行优化的特定应用自动指定等)。
在本实施例的上下文中,芯片的最佳操作点包括两个或更多个硬件组件中的每个硬件组件的操作状态(例如,时钟频率)和两个或更多个硬件组件的电压状态(例如,电压输入)。为了在不超过功率阈值的情况下最大化性能,可以选择最佳操作点,由此芯片的操作尽可能接近性能的目标值而不超过功率阈值。如上所述,AI网络用于确定芯片的最佳操作点。这可以包括,例如,由AI网络做出的上述相关性被参考以确定硬件组件的操作状态和电压状态,其在不超过功率阈值的情况下最大化性能。
当所选择的优化模式是针对功率优化芯片的操作时,可以通过识别功率的目标值和性能阈值来确定芯片的最佳操作点,并使用AI网络确定芯片的最佳操作点以在不低于性能阈值的情况下最小化功耗。如上所述,当选择优化模式时,指定功率的目标值。作为选项,还可以在选择优化模式时指定性能阈值,或者可以单独指定另一选项(例如,由用户指定,或者基于预定标准、规则或针对其执行优化的特定应用自动指定)。
此外,在本实施例的上下文中,芯片的最佳操作点包括两个或更多个硬件组件中的每个硬件组件的操作状态(例如,时钟频率)和两个或更多个硬件组件的电压状态(例如,电压输入)。为了在不低于性能阈值的情况下使功耗最小化,可以选择最佳操作点,由此芯片的操作尽可能接近功率的目标值而不低于性能阈值。如上所述,AI网络用于确定芯片的最佳操作点。这可以包括,例如,由AI网络做出的上述相关性被参考以确定硬件组件的操作状态和电压状态,其使功耗最小化而不低于性能阈值。
当所选择的优化模式是针对效率而优化芯片的操作时,可以通过识别效率阈值来确定芯片的最佳操作点,其中效率阈值基于与功耗变化相关的性能变化来定义,并进一步使用AI网络确定芯片的最佳操作点,以在不低于效率阈值的情况下最大化性能。例如,所确定的操作点可以是在操作功率下提供最佳性能的操作点,其中操作点基于性能和效率曲线上效率减小超过某个设定的操作电压和频率的点来确定。此外,芯片的最佳操作点可以包括两个或更多个硬件组件中的每个硬件组件的操作状态和两个或更多个硬件组件的电压状态。
此外,在操作110中,芯片被配置为在确定的最佳操作点处操作。换句话说,两个或更多个硬件被配置为在所确定的相应操作状态和电压状态下操作。
这样,在共享功率/热约束下操作的芯片的上下文中,方法100可以通过考虑芯片的性能和芯片的功耗两者来确定芯片的最佳操作点。特别地,对于共享功率/热约束的芯片的硬件组件的组合,可以确定那些硬件组件的最佳操作状态和电压状态,其平衡性能和功耗两者。
例如,操作点估计器可以允许芯片的GPU节省功率,同时递送类似的性能到由现有技术系统提供的那些,从而改善插入式系统的电池寿命或电力成本寿命。作为另一个示例,对于功率受限情况(诸如在Nvidia的Max-Q操作条件下操作的芯片),操作点估计器可以通过最佳地选择芯片的操作点来改善性能,这取决于工作负载的性质。作为又一个示例,在存在存储器瓶颈阶段的深度学习应用中(类似于挖掘(mining)),操作点估计器可以降低性能并在那些阶段期间降低功率,然后在其他阶段期间提高性能和功率以改善相同功率预算下的整体性能。
另外,通过使用AI网络,可以快速调整芯片的操作点以达到目标性能或功率值。芯片的操作点的最大变化速度可以取决于AI网络的延迟,并且当部署在芯片的专用硬件上时可以减少延迟。此外,通过根据需要调整操作点,可以避免某些芯片的静态功率限制,并且还可以避免每个应用的静态芯片配置。
在瓶颈不允许在更高的时钟频率下实际缩放性能的情况下,操作点估计器还可以正确地盖帽(cap)硬件组件的时钟,这将确保在不改善性能的情况下不浪费功率。此外,由于工作点估计器利用来自芯片的细粒度遥测技术(例如,针对每帧的工作负载等),工作点估计器可以准确地确定芯片的最佳操作点,例如在Nvidia的Max-Q操作条件下操作的芯片。
现在将根据用户的期望,阐述关于可以实现前述框架的各种可选架构和特征的更多说明性信息。应该特别注意的是,出于说明性目的阐述了以下信息,并且不应该被解释为以任何方式进行限制。任选的以下特征可以选择性地并入或不排除所描述的其他特征。
图2A示出了根据实施例的最佳操作点估计器的训练阶段的框图。作为选择,可以针对正在执行训练阶段的芯片离线执行训练阶段。
最初,最佳操作点估计器126执行训练阶段,针对具有在共享功率约束下操作的两个或更多个硬件组件的芯片在其中训练AI网络128。硬件组件可以是存储器(例如DRAM)、处理单元(例如GPU等)或集成在芯片内的任何其他硬件。AI网络128由最佳操作点估计器126使用与在芯片上执行的工作负载相关联的输入进行训练。输入包括工作负载120的描述,在执行每个工作负载122时每个硬件组件的性能度量(例如帧时间等),以及每个工作负载124的功耗度量(例如,每个硬件组件的功耗、总功耗等)。
应当注意,可以针对不同的应用执行工作负载,诸如加密货币应用、游戏应用、计算应用等。此外,输入120、122、124可以由操作点估计器126的捕获逻辑在预定义的时间窗口上累积。例如,对于图形工作负载,可以在整个帧上捕获输入120、122、124,并且对于计算或深度学习工作负载,可以在函数调用级别或在固定时间段捕获输入120、122、124。
在一个实施例中,AI网络128被训练为将特定工作负载描述与功耗度量和性能度量相关联。例如,AI网络128可以学习芯片针对特定工作负载(由描述指定)的功耗,以及特定工作负载的芯片性能。在该实施例中,对于给定的工作负载描述,经训练的AI网络128可以输出与其相关的功耗度量和性能度量。
在另一实施例中,除了训练AI网络128以将特定工作负载描述与功耗度量和性能度量相关联之外,如上所述,AI网络128还可以被训练以基于输入120、122、124来确定芯片的最佳操作点。例如,对于芯片的每种可能的优化模式,AI网络128可以基于与其相关的功耗度量和性能度量来学习芯片针对特定工作负载的最佳操作点。在该实施例中,对于给定的工作负载描述和优化模式,经训练的AI网络128可以输出芯片的最佳操作点。
结合训练阶段,最佳操作点估计器126可以接收对芯片的优化模式(未示出)的选择,即是否针对性能、功率或效率优化芯片的操作的指示。所选择的优化模式还可以指示阈值。例如,当优化模式指示针对性能优化芯片的操作时,阈值可以是用于功率的,使得芯片的性能在不超过功率阈值的情况下朝向目标值最大化。作为另一示例,当优化模式指示针对功率优化芯片的操作时,阈值可以是用于性能的,使得芯片的功耗在不低于性能阈值的情况下朝向目标值最小化。作为又一实施例,当优化模式指示针对效率优化芯片的操作时,阈值可以是用于效率(性能的变化/功率的变化)的,使得芯片的性能在不低于效率阈值的情况下最大化(例如,朝向目标性能值)。当然,应当注意,在其他实施例中,优化模式可以由最佳操作点估计器126独立于训练阶段来接收。
在训练阶段之后,然后最佳操作点估计器126执行部署阶段,其中AI网络128部署在芯片上以确定芯片的最佳操作点并相应地配置芯片。可选地,部署阶段可以在线执行。例如,部署阶段可以由芯片的CPU作为软件执行,或者可以通过芯片上的专用硬件执行。
通过应用时间局部性的概念,其中假设在紧密时间邻近中执行的工作负载是相似的(例如,表现出类似的属性),操作点估计器126使用由芯片执行的一个或更多个先前工作负载的描述来从AI网络128确定在执行后续工作负载时要使用的芯片的最佳操作点。为此,可以针对每个新的工作负载(例如,帧)重复部署阶段,或者至少确定芯片的最佳操作点和相应配置。作为另一种选择,可以在应用程序内在各种预定义的操作点处的工作负载执行期间重复部署阶段,或至少确定芯片的最佳操作点和相应配置。
现在将参考图2B-图2D描述部署阶段的各种实施例。
图2B示出了根据实施例的用于最佳操作点估计器的部署阶段的第一模式的框图。在用于部署阶段的第一模式中,最佳操作点估计器使用独立于AI网络128的控制器136确定芯片的最佳操作点并相应地配置芯片。
如图所示,采用输入查询AI网络128,输入包括在芯片130上执行的先前工作负载的描述,在执行先前工作负载131时芯片的实际操作点,以及为芯片132选择相邻操作点。响应于该查询,AI网络128输出对应于每个输入操作点的可能性能度量和功率度量的列表134。然后,在AI网络128外部的控制器136基于所选择的优化模式138从AI网络128输出的列表134中选择最佳操作点140。控制器136还将芯片配置为在最佳操作点140处操作,或者以其他方式使得其他硬件和/或软件将芯片配置为在最佳操作点140处操作。
图2C示出了根据实施例的用于最佳操作点估计器的部署阶段的第二模式的框图。除了AI网络128响应于查询输出对应于每个输入操作点的可能的性能度量或功率度量的列表134之外,部署阶段的第二模式与图2B中描述的部署阶段的第一模式操作相同。然后,在AI网络128外部的控制器136基于所选择的优化模式138选择列表中的度量之一,并使用该度量来设置另一个操作点参数。例如,如果AI网络128输出操作频率列表,则控制器可以选择列表中的操作频率之一,然后从所选择的操作频率确定相应的操作电压。控制器136还将芯片配置为在最佳操作点140处操作,或者以其他方式使得其他硬件和/或软件将芯片配置为在最佳操作点140处操作。
图2D示出了根据实施例的用于最佳操作点估计器的部署阶段的第三模式的框图。在部署阶段的第三模式中,AI网络128确定芯片的最佳操作点并相应地配置芯片。
在部署AI网络128期间,采用输入来查询AI网络128,所述输入包括在芯片130上执行的先前工作负载的描述和优化模式138。然后,AI网络128响应于该查询输出芯片的最佳操作点140。AI网络128输出的最佳操作点140由硬件和/或软件接收,其将芯片配置为在最佳操作点140处操作。
图2E示出了用于确定上述效率优化模式的最佳操作点的效率曲线。如图所示,确定在操作功率下提供最佳性能的操作点,其中操作点基于性能和效率曲线上的点确定,在该点效率或性能的增加(dPerf)相对于功耗的变化(dPower)减小超过某一设定的操作电压和频率。在图2E中,该点由效率曲线上的切线的斜率指示。
图2F示出了根据实施例的用于操作点估计器的状态机操作。在初始就绪(空闲)状态150之后,向累积数据152发出执行命令。该数据包括最近在芯片上执行的工作负载的描述,在执行每个工作负载时每个硬件组件的性能度量,以及每个工作负载的功耗指标。在所示的实施例中,数据在某一数量的帧(例如,frame_count(帧_计数))上累积。
一旦累积了数据,就执行数据读取154,其中从存储器读取累积的数据。一旦读取数据,使用读取数据制作AI推断156。可以重复AI推断156以生成与数据相对应的可能的性能度量和功率度量的列表。例如,可以在执行先前工作负载时针对芯片的实际操作点执行AI推断156,并且为芯片选择相邻操作点。因此,AI推断156可以包括可能的性能度量和功率度量的列表,其对应于数据中包括的每个操作点。控制器从AI推断156的输出中选择用于芯片的最佳V-F更新158,其是芯片的最佳操作点(电压和频率),并且芯片被转移到所选择的最佳操作点。一旦芯片被转移到所选择的最佳操作点,状态机返回到就绪(空闲)状态150并等待下一个执行命令。
并行处理架构
图3示出了根据实施例的并行处理单元(PPU)300。在一个实施例中,PPU 300是在一个或更多个集成电路器件上实现的多线程处理器。PPU 300是设计用于并行处理许多线程的延迟隐藏体系架构。线程(即,执行线程)是被配置为由PPU 300执行的指令集的实例。在一个实施例中,PPU 300是图形处理单元(GPU),其被配置为实现用于处理三维(3D)图形数据的图形渲染管线,以便生成用于在显示装置(诸如液晶显示(LCD)设备)上显示的二维(2D)图像数据。在其他实施例中,PPU 300可以用于执行通用计算。尽管为了说明的目的本文提供了一个示例性并行处理器,但应特别指出的是,该处理器仅出于说明目的进行阐述,并且可使用任何处理器来补充和/或替代该处理器。
一个或更多个PPU 300可以被配置为加速数千个高性能计算(HPC)、数据中心和机器学习应用。PPU 300可被配置为加速众多深度学习系统和应用,包括自动驾驶汽车平台、深度学习、高精度语音、图像和文本识别系统、智能视频分析、分子模拟、药物发现、疾病诊断、天气预报、大数据分析、天文学、分子动力学模拟、金融建模、机器人技术、工厂自动化、实时语言翻译、在线搜索优化和个性化用户推荐等。
如图3所示,PPU 300包括输入/输出(I/O)单元305、前端单元315、调度器单元320、工作分配单元325、集线器330、交叉开关(Xbar)370、一个或更多个通用处理集群(GPC)350以及一个或更多个分区单元380。PPU 300可以经由一个或更多个高速NVLink 310互连连接到主机处理器或其他PPU 300。PPU 300可以经由互连302连接到主机处理器或其他外围设备。PPU 300还可以连接到包括多个存储器设备304的本地存储器。在一个实施例中,本地存储器可以包括多个动态随机存取存储器(DRAM)设备。DRAM设备可以被配置为高带宽存储器(HBM)子系统,其中多个DRAM裸晶(die)堆叠在每个设备内。
NVLink 310互连使得系统能够扩展并且包括与一个或更多个CPU结合的一个或更多个PPU 300,支持PPU 300和CPU之间的高速缓存一致性,以及CPU主控。数据和/或命令可以由NVLink 310通过集线器330发送到PPU 300的其他单元或从其发送,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。结合图5B更详细地描述NVLink 310。
I/O单元305被配置为通过互连302从主机处理器(未示出)发送和接收通信(即,命令、数据等)。I/O单元305可以经由互连302直接与主机处理器通信,或通过一个或更多个中间设备(诸如内存桥)与主机处理器通信。在一个实施例中,I/O单元305可以经由互连302与一个或更多个其他处理器(例如,一个或更多个PPU 300)通信。在一个实施例中,I/O单元305实现外围组件互连高速(PCIe)接口,用于通过PCIe总线进行通信,并且互连302是PCIe总线。在替代的实施例中,I/O单元305可以实现其他类型的已知接口,用于与外部设备进行通信。
I/O单元305对经由互连302接收的分组进行解码。在一个实施例中,分组表示被配置为使PPU 300执行各种操作的命令。I/O单元305按照命令指定将解码的命令发送到PPU300的各种其他单元。例如,一些命令可以被发送到前端单元315。其他命令可以被发送到集线器330或PPU 300的其他单元,诸如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。换句话说,I/O单元305被配置为在PPU 300的各种逻辑单元之间和之中路由通信。
在一个实施例中,由主机处理器执行的程序在缓冲区中对命令流进行编码,该缓冲区向PPU 300提供工作负载用于处理。工作负载可以包括要由那些指令处理的许多指令和数据。缓冲区是存储器中可由主机处理器和PPU 300两者访问(即,读/写)的区域。例如,I/O单元305可以被配置为经由通过互连302传输的存储器请求访问连接到互连302的系统存储器中的缓冲区。在一个实施例中,主机处理器将命令流写入缓冲区,然后向PPU 300发送指向命令流开始的指针。前端单元315接收指向一个或更多个命令流的指针。前端单元315管理一个或更多个流,从流读取命令并将命令转发到PPU 300的各个单元。
前端单元315耦合到调度器单元320,其配置各种GPC 350以处理由一个或更多个流定义的任务。调度器单元320被配置为跟踪与由调度器单元320管理的各种任务相关的状态信息。状态可以指示任务被指派给哪个GPC 350,该任务是活动的还是不活动的,与该任务相关联的优先级等等。调度器单元320管理一个或更多个GPC 350上的多个任务的执行。
调度器单元320耦合到工作分配单元325,其被配置为分派任务以在GPC 350上执行。工作分配单元325可以跟踪从调度器单元320接收到的多个调度任务。在一个实施例中,工作分配单元325为每个GPC 350管理待处理(pending)任务池和活动任务池。待处理任务池可以包括多个时隙(例如,32个时隙),其包含被指派为由特定GPC 350处理的任务。活动任务池可以包括多个时隙(例如,4个时隙),用于正在由GPC 350主动处理的任务。当GPC350完成任务的执行时,该任务从GPC 350的活动任务池中逐出,并且来自待处理任务池的其他任务之一被选择和调度以在GPC 350上执行。如果GPC 350上的活动任务已经空闲,例如在等待数据依赖性被解决时,那么活动任务可以从GPC 350中逐出并返回到待处理任务池,而待处理任务池中的另一个任务被选择并调度以在GPC 350上执行。
工作分配单元325经由XBar(交叉开关)370与一个或更多个GPC 350通信。XBar370是将PPU 300的许多单元耦合到PPU 300的其他单元的互连网络。例如,XBar 370可以被配置为将工作分配单元325耦合到特定的GPC 350。虽然没有明确示出,但PPU 300的一个或更多个其他单元也可以经由集线器330连接到XBar 370。
任务由调度器单元320管理并由工作分配单元325分派给GPC 350。GPC 350被配置为处理任务并生成结果。结果可以由GPC 350内的其他任务消耗,经由XBar 370路由到不同的GPC 350,或者存储在存储器304中。结果可以经由分区单元380写入存储器304,分区单元380实现用于从存储器304读取数据和向存储器304写入数据的存储器接口。结果可以通过NVLink310发送到另一个PPU 304或CPU。在一个实施例中,PPU 300包括数目为U的分区单元380,其等于耦合到PPU 300的独立且不同的存储器设备304的数目。下面将结合图4B更详细地描述分区单元380。
在一个实施例中,主机处理器执行实现应用程序编程接口(API)的驱动程序内核,其使得能够在主机处理器上执行一个或更多个应用程序以调度操作用于在PPU 300上执行。在一个实施例中,多个计算机应用程序由PPU 300同时执行,并且PPU 300为多个计算机应用程序提供隔离、服务质量(QoS)和独立地址空间。应用程序可以生成指令(即API调用),其使得驱动程序内核生成一个或更多个任务以由PPU 300执行。驱动程序内核将任务输出到正在由PPU 300处理的一个或更多个流。每个任务可以包括一个或更多个相关线程组,本文称为线程束(warp)。在一个实施例中,线程束包括可以并行执行的32个相关线程。协作线程可以指代包括执行任务的指令并且可以通过共享存储器交换数据的多个线程。结合图5A更详细地描述线程和协作线程。
图4A示出了根据实施例的图3的PPU 300的GPC 350。如图4A所示,每个GPC 350包括用于处理任务的多个硬件单元。在一个实施例中,每个GPC 350包括管线管理器410、预光栅操作单元(PROP)415、光栅引擎425、工作分配交叉开关(WDX)480、存储器管理单元(MMU)490以及一个或更多个数据处理集群(DPC)420。应当理解,图4A的GPC 350可以包括代替图4A中所示单元的其他硬件单元或除图4A中所示单元之外的其他硬件单元。
在一个实施例中,GPC 350的操作由管线管理器410控制。管线管理器410管理用于处理分配给GPC 350的任务的一个或更多个DPC 420的配置。在一个实施例中,管线管理器410可以配置一个或更多个DPC 420中的至少一个来实现图形渲染管线的至少一部分。例如,DPC 420可以被配置为在可编程流式多处理器(SM)440上执行顶点着色程序。管线管理器410还可以被配置为将从工作分配单元325接收的分组路由到GPC 350中适当的逻辑单元。例如,一些分组可以被路由到PROP 415和/或光栅引擎425中的固定功能硬件单元,而其他分组可以被路由到DPC 420以供图元引擎435或SM 440处理。在一个实施例中,管线管理器410可以配置一个或更多个DPC 420中的至少一个以实现神经网络模型和/或计算管线。
PROP单元415被配置为将由光栅引擎425和DPC 420生成的数据路由到光栅操作(ROP)单元,结合图4B更详细地描述。PROP单元415还可以被配置为执行颜色混合的优化,组织像素数据,执行地址转换等。
光栅引擎425包括被配置为执行各种光栅操作的多个固定功能硬件单元。在一个实施例中,光栅引擎425包括设置引擎、粗光栅引擎、剔除引擎、裁剪引擎、精细光栅引擎和瓦片聚合引擎。设置引擎接收变换后的顶点并生成与由顶点定义的几何图元关联的平面方程。平面方程被发送到粗光栅引擎以生成图元的覆盖信息(例如,瓦片的x、y覆盖掩码)。粗光栅引擎的输出被发送到剔除引擎,其中与未通过z-测试的图元相关联的片段被剔除,并被发送到裁剪引擎,其中位于视锥体之外的片段被裁剪掉。那些经过裁剪和剔除后留下来的片段可以被传递到精细光栅引擎,以基于由设置引擎生成的平面方程生成像素片段的属性。光栅引擎425的输出包括例如要由在DPC 420内实现的片段着色器处理的片段。
包括在GPC 350中的每个DPC 420包括M管线控制器(MPC)430、图元引擎435和一个或更多个SM 440。MPC 430控制DPC 420的操作,将从管线管理器410接收到的分组路由到DPC 420中的适当单元。例如,与顶点相关联的分组可以被路由到图元引擎435,图元引擎435被配置为从存储器304提取与顶点相关联的顶点属性。相反,与着色程序相关联的分组可以被发送到SM 440。
SM 440包括被配置为处理由多个线程表示的任务的可编程流式处理器。每个SM440是多线程的并且被配置为同时执行来自特定线程组的多个线程(例如,32个线程)。在一个实施例中,SM 440实现SIMD(单指令、多数据)体系架构,其中线程组(即,warp)中的每个线程被配置为基于相同的指令集来处理不同的数据集。线程组中的所有线程都执行相同的指令。在另一个实施例中,SM 440实现SIMT(单指令、多线程)体系架构,其中线程组中的每个线程被配置为基于相同的指令集处理不同的数据集,但是其中线程组中的各个线程在执行期间被允许发散。在一个实施例中,为每个线程束维护程序计数器、调用栈和执行状态,当线程束内的线程发散时,使线程束和线程束中的串行执行之间的并发成为可能。在另一个实施例中,为每个单独的线程维护程序计数器、调用栈和执行状态,从而在线程束内和线程束之间的所有线程之间实现相等的并发。当为每个单独的线程维护执行状态时,执行相同指令的线程可以被收敛并且并行执行以获得最大效率。下面结合图5A更详细地描述SM440。
MMU 490提供GPC 350和分区单元380之间的接口。MMU 490可以提供虚拟地址到物理地址的转换、存储器保护以及存储器请求的仲裁。在一个实施例中,MMU 490提供用于执行从虚拟地址到存储器304中的物理地址的转换的一个或更多个转换后备缓冲器(TLB)。
图4B示出了根据实施例的图3的PPU 300的存储器分区单元380。如图4B所示,存储器分区单元380包括光栅操作(ROP)单元450、二级(L2)高速缓存460和存储器接口470。存储器接口470耦合到存储器304。存储器接口470可以实现用于高速数据传输的32、64、128、1024位数据总线等。在一个实施例中,PPU 300合并了U个存储器接口470,每对分区单元380有一个存储器接口470,其中每对分区单元380连接到对应的存储器设备304。例如,PPU 300可以连接到多达Y个存储器设备304,诸如高带宽存储器堆叠或图形双数据速率版本5的同步动态随机存取存储器或其他类型的持久存储器。
在一个实施例中,存储器接口470实现HBM2存储器接口,并且Y等于U的一半。在一个实施例中,HBM2存储器堆叠位于与PPU 300相同的物理封装上,提供与常规GDDR5SDRAM系统相比显著的功率高和面积节约。在一个实施例中,每个HBM2堆叠包括四个存储器裸晶并且Y等于4,其中HBM2堆叠包括每个裸晶两个128位通道,总共8个通道和1024位的数据总线宽度。
在一个实施例中,存储器304支持单错校正双错检测(SECDED)纠错码(ECC)以保护数据。对于对数据损毁敏感的计算机应用程序,ECC提供了更高的可靠性。在大型集群计算环境中,可靠性尤其重要,其中PPU 300处理非常大的数据集和/或长时间运行应用程序。
在一个实施例中,PPU 300实现多级存储器分层结构。在一个实施例中,存储器分区单元380支持统一存储器以为CPU和PPU 300存储器提供单个统一的虚拟地址空间,使能虚拟存储器系统之间的数据共享。在一个实施例中,由PPU 300对位于其他处理器上的存储器的访问频率被跟踪,以确保存储器页面被移动到更频繁地访问页面的PPU 300的物理存储器。在一个实施例中,NVLink 310支持地址转换服务,其允许PPU 300直接访问CPU的页表并且提供由PPU 300对CPU存储器的完全访问。
在一个实施例中,复制引擎在多个PPU 300之间或在PPU 300与CPU之间传输数据。复制引擎可以为未映射到页表的地址生成页面错误。然后,存储器分区单元380可以服务页面错误,将地址映射到页表中,之后复制引擎可以执行传输。在常规系统中,针对多个处理器之间的多个复制引擎操作固定存储器(即,不可分页),其显著减少了可用存储器。由于硬件分页错误,地址可以传递到复制引擎而不用担心存储器页面是否驻留,并且复制过程是否透明。
来自存储器304或其他系统存储器的数据可以由存储器分区单元380取回并存储在L2高速缓存460中,L2高速缓存460位于芯片上并且在各个GPC 350之间共享。如图所示,每个存储器分区单元380包括与对应的存储器设备304相关联的L2高速缓存460的一部分。然后可以在GPC 350内的多个单元中实现较低级高速缓存。例如,每个SM 440可以实现一级(L1)高速缓存。L1高速缓存是专用于特定SM 440的专用存储器。来自L2高速缓存460的数据可以被获取并存储在每个L1高速缓存中,以在SM 440的功能单元中进行处理。L2高速缓存460被耦合到存储器接口470和XBar 370。
ROP单元450执行与像素颜色相关的图形光栅操作,诸如颜色压缩、像素混合等。ROP单元450还与光栅引擎425一起实现深度测试,从光栅引擎425的剔除引擎接收与像素片段相关联的样本位置的深度。测试与片段关联的样本位置相对于深度缓冲区中的对应深度的深度。如果片段通过样本位置的深度测试,则ROP单元450更新深度缓冲区并将深度测试的结果发送给光栅引擎425。将理解的是,分区单元380的数量可以不同于GPC 350的数量,并且因此每个ROP单元450可以耦合到每个GPC 350。ROP单元450跟踪从不同GPC 350接收到的分组并且确定由ROP单元450生成的结果通过Xbar 370被路由到哪个GPC 350。尽管ROP单元450包括在图4B中的存储器分区单元380内,但是在其他实施例中,ROP单元450可以在存储器分区单元380之外。例如,ROP单元450可以驻留在GPC 350或另一个单元中。
图5A示出了根据实施例的图4A的流式多处理器440。如图5A所示,SM 440包括指令高速缓存505、一个或更多个调度器单元510、寄存器文件520、一个或更多个处理核心550、一个或更多个特殊功能单元(SFU)552、一个或更多个加载/存储单元(LSU)554、互连网络580、共享存储器/L1高速缓存570。
如上所述,工作分配单元325调度任务以在PPU 300的GPC 350上执行。任务被分配给GPC 350内的特定DPC 420,并且如果任务与着色器程序相关联,则该任务可以被分配给SM 440。调度器单元510接收来自工作分配单元325的任务并且管理指派给SM 440的一个或更多个线程块的指令调度。调度器单元510调度线程块以作为并行线程的线程束执行,其中每个线程块被分配至少一个线程束。在一个实施例中,每个线程束执行32个线程。调度器单元510可以管理多个不同的线程块,将线程束分配给不同的线程块,然后在每个时钟周期期间将来自多个不同的协作组的指令分派到各个功能单元(即,核心550、SFU 552和LSU554)。
协作组是用于组织通信线程组的编程模型,其允许开发者表达线程正在进行通信所采用的粒度,使得能够表达更丰富、更高效的并行分解。协作启动API支持线程块之间的同步性,以执行并行算法。常规的编程模型为同步协作线程提供了单一的简单结构:跨线程块的所有线程的栅栏(barrier)(即,syncthreads()函数)。然而,程序员通常希望以小于线程块粒度的粒度定义线程组,并在所定义的组内同步,以集体的全组功能接口(collective group-wide function interface)的形式使能更高的性能、设计灵活性和软件重用。
协作组使得程序员能够在子块(即,像单个线程一样小)和多块粒度处明确定义线程组并且执行集体操作,诸如协作组中的线程上的同步性。编程模型支持跨软件边界的干净组合,以便库和效用函数可以在本地环境中安全地同步,而无需对收敛进行假设。协作组图元启用合作伙伴并行的新模式,包括生产者-消费者并行、机会主义并行以及跨整个线程块网格的全局同步。
分派单元515被配置为向一个或更多个功能单元传送指令。在该实施例中,调度器单元510包括两个分派单元515,其使得能够在每个时钟周期期间调度来自相同线程束的两个不同指令。在替代实施例中,每个调度器单元510可以包括单个分派单元515或附加分派单元515。
每个SM 440包括寄存器文件520,其提供用于SM 440的功能单元的一组寄存器。在一个实施例中,寄存器文件520在每个功能单元之间被划分,使得每个功能单元被分配寄存器文件520的专用部分。在另一个实施例中,寄存器文件520在由SM 440执行的不同线程束之间被划分。寄存器文件520为连接到功能单元的数据路径的操作数提供临时存储。
每个SM 440包括L个处理核心550。在一个实施例中,SM 440包括大量(例如128个等)不同的处理核心550。每个核心550可以包括完全管线化的、单精度、双精度和/或混合精度处理单元,其包括浮点运算逻辑单元和整数运算逻辑单元。在一个实施例中,浮点运算逻辑单元实现用于浮点运算的IEEE 754-2008标准。在一个实施例中,核心550包括64个单精度(32位)浮点核心、64个整数核心、32个双精度(64位)浮点核心和8个张量核心(tensorcore)。
张量核心被配置为执行矩阵运算,并且在一个实施例中,一个或更多个张量核心被包括在核心550中。具体地,张量核心被配置为执行深度学习矩阵运算,诸如用于神经网络训练和推理的卷积运算。在一个实施例中,每个张量核心在4×4矩阵上运算并且执行矩阵乘法和累加运算D=A×B+C,其中A、B、C和D是4×4矩阵。
在一个实施例中,矩阵乘法输入A和B是16位浮点矩阵,而累加矩阵C和D可以是16位浮点或32位浮点矩阵。张量核心在16位浮点输入数据以及32位浮点累加上运算。16位浮点乘法需要64次运算,产生全精度的积,然后使用32位浮点与4×4×4矩阵乘法的其他中间积相加来累加。在实践中,张量核心用于执行由这些较小的元素建立的更大的二维或更高维的矩阵运算。API(诸如CUDA 9 C++API)公开了专门的矩阵加载、矩阵乘法和累加以及矩阵存储运算,以便有效地使用来自CUDA-C++程序的张量核心。在CUDA层面,线程束级接口假定16×16尺寸矩阵跨越线程束的全部32个线程。
每个SM 440还包括执行特殊函数(例如,属性评估、倒数平方根等)的M个SFU 552。在一个实施例中,SFU 552可以包括树遍历单元,其被配置为遍历分层树数据结构。在一个实施例中,SFU 552可以包括被配置为执行纹理贴图过滤操作的纹理单元。在一个实施例中,纹理单元被配置为从存储器304加载纹理贴图(例如,纹理像素的2D阵列)并且对纹理贴图进行采样以产生经采样的纹理值,用于在由SM 440执行的着色器程序中使用。在一个实施例中,纹理贴图被存储在共享存储器/L1高速缓存470中。纹理单元实现纹理操作,诸如使用mip贴图(即,不同细节层次的纹理贴图)的过滤操作。在一个实施例中,每个SM 440包括两个纹理单元。
每个SM 440还包括N个LSU 554,其实现共享存储器/L1高速缓存570和寄存器文件520之间的加载和存储操作。每个SM 440包括将每个功能单元连接到寄存器文件520以及将LSU 554连接到寄存器文件520、共享存储器/L1高速缓存570的互连网络580。在一个实施例中,互连网络580是交叉开关,其可以被配置为将任何功能单元连接到寄存器文件520中的任何寄存器,以及将LSU 554连接到寄存器文件和共享存储器/L1高速缓存570中的存储器位置。
共享存储器/L1高速缓存570是片上存储器阵列,其允许数据存储和SM 440与图元引擎435之间以及SM 440中的线程之间的通信。在一个实施例中,共享存储器/L1高速缓存570包括128KB的存储容量并且在从SM 440到分区单元380的路径中。共享存储器/L1高速缓存570可以用于高速缓存读取和写入。共享存储器/L1高速缓存570、L2高速缓存460和存储器304中的一个或更多个是后备存储。
将数据高速缓存和共享存储器功能组合成单个存储器块为两种类型的存储器访问提供最佳的总体性能。该容量可由程序用作不使用共享存储器的高速缓存。例如,如果将共享存储器配置为使用一半容量,则纹理和加载/存储操作可以使用剩余容量。在共享存储器/L1高速缓存570内的集成使共享存储器/L1高速缓存570起到用于流式传输数据的高吞吐量管道的作用,并且同时提供对频繁重用数据的高带宽和低延迟的访问。
当被配置用于通用并行计算时,与图形处理相比,可以使用更简单的配置。具体地,图3所示的固定功能图形处理单元被绕过,创建了更简单的编程模型。在通用并行计算配置中,工作分配单元325将线程块直接指派并分配给DPC 420。块中的线程执行相同的程序,使用计算中的唯一线程ID来确保每个线程生成唯一结果,使用SM 440执行程序并执行计算,使用共享存储器/L1高速缓存570以在线程之间通信,以及使用LSU 554通过共享存储器/L1高速缓存570和存储器分区单元380读取和写入全局存储器。当被配置用于通用并行计算时,SM 440还可以写入调度器单元320可用来在DPC 420上启动新工作的命令。
PPU 300可以被包括在台式计算机、膝上型计算机、平板电脑、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、数码相机、运载工具、头戴式显示器、手持式电子设备等中。在一个实施例中,PPU 300包含在单个半导体衬底上。在另一个实施例中,PPU 300与一个或更多个其他器件(诸如附加PPU 300、存储器204、精简指令集计算机(RISC)CPU、存储器管理单元(MMU)、数字-模拟转换器(DAC)等)一起被包括在片上系统(SoC)上。
在一个实施例中,PPU 300可以被包括在图形卡上,图形卡包括一个或更多个存储器设备304。图形卡可以被配置为与台式计算机的主板上的PCIe插槽接口。在又一个实施例中,PPU 300可以是包含在主板的芯片集中的集成图形处理单元(iGPU)或并行处理器。
示例性计算系统
具有多个GPU和CPU的系统被用于各种行业,因为开发者在应用(诸如人工智能计算)中暴露和利用更多的并行性。在数据中心、研究机构和超级计算机中部署具有数十至数千个计算节点的高性能GPU加速系统,以解决更大的问题。随着高性能系统内处理设备数量的增加,通信和数据传输机制需要扩展以支持该增加带宽。
图5B是根据实施例的使用图3的PPU 300实现的处理系统500的概念图。示例性系统565可以被配置为实现图1中所示的方法100。处理系统500包括CPU 530、交换机510和多个PPU 300中的每一个以及相应的存储器304。NVLink 310提供每个PPU 300之间的高速通信链路。尽管图5B中示出了特定数量的NVLink 310和互连302连接,但是连接到每个PPU300和CPU 530的连接的数量可以改变。交换机510在互连302和CPU 530之间接口。PPU 300、存储器304和NVLink 310可以位于单个半导体平台上以形成并行处理模块525。在一个实施例中,交换机510支持两个或更多个在各种不同连接和/或链路之间接口的协议。
在另一个实施例(未示出)中,NVLink 310在每个PPU 300和CPU 530之间提供一个或更多个高速通信链路,并且交换机510在互连302和每个PPU 300之间进行接口。PPU 300、存储器304和互连302可以位于单个半导体平台上以形成并行处理模块525。在又一个实施例(未示出)中,互连302在每个PPU 300和CPU 530之间提供一个或更多个通信链路,并且交换机510使用NVLink 310在每个PPU 300之间进行接口,以在PPU 300之间提供一个或更多个高速通信链路。在另一个实施例(未示出)中,NVLink 310在PPU300和CPU 530之间通过交换机510提供一个或更多个高速通信链路。在另一个实施例(未示出)中,互连302在每个PPU300直接地提供一个或更多个通信链路。可以使用与NVLink 310相同的协议将一个或更多个NVLink 310高速通信链路实现为物理NVLink互连或者片上或裸晶上互连。
在本说明书的上下文中,单个半导体平台可以指在裸晶或芯片上制造的唯一的单一的基于半导体的集成电路。应该注意的是,术语单个半导体平台也可以指具有增加的连接的多芯片模块,其模拟片上操作并通过利用常规总线实现方式进行实质性改进。当然,根据用户的需要,各种电路或器件还可以分开放置或以半导体平台的各种组合来放置。可选地,并行处理模块525可以被实现为电路板衬底,并且PPU 300和/或存储器304中的每一个可以是封装器件。在一个实施例中,CPU 530、交换机510和并行处理模块525位于单个半导体平台上。
在一个实施例中,每个NVLink 310的信令速率是20到25千兆位/秒,并且每个PPU300包括六个NVLink 310接口(如图5B所示,每个PPU 300包括五个NVLink 310接口)。每个NVLink 310在每个方向上提供25千兆位/秒的数据传输速率,其中六条链路提供300千兆位/秒。当CPU 530还包括一个或更多个NVLink 310接口时,NVLink 310可专门用于如图5B所示的PPU到PPU通信,或者PPU到PPU以及PPU到CPU的某种组合。
在一个实施例中,NVLink 310允许从CPU 530到每个PPU 300的存储器304的直接加载/存储/原子访问。在一个实施例中,NVLink 310支持一致性操作,允许从存储器304读取的数据被存储在CPU 530的高速缓存分层结构中,减少了CPU 530的高速缓存访问延迟。在一个实施例中,NVLink 310包括对地址转换服务(ATS)的支持,允许PPU 300直接访问CPU530内的页表。一个或更多个NVLink 310还可以被配置为以低功率模式操作。
图5C示出了示例性系统565,其中可以实现各种先前实施例的各种体系架构和/或功能。示例性系统565可以被配置为实现图1中所示的方法100。
如图所示,提供系统565,其包括连接到通信总线575的至少一个中央处理单元530。通信总线575可以使用任何合适的协议来实现,诸如PCI(外围组件互连)、PCI-Express、AGP(加速图形端口)、超传输或任何其他总线或一个或更多个点对点通信协议。系统565还包括主存储器540。控制逻辑(软件)和数据被存储在主存储器540中,主存储器540可以采取随机存取存储器(RAM)的形式。
系统565还包括输入设备560、并行处理系统525和显示设备545,即常规CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)、等离子显示器等。可以从输入设备560(例如键盘、鼠标、触摸板、麦克风等)接收用户输入。前述模块和/或设备中的每一个甚至可以位于单个半导体平台上以形成系统565。可选地,根据用户的需要,各个模块还可以分开放置或以半导体平台的各种组合来放置。
此外,系统565可以出于通信目的通过网络接口535耦合到网络(例如,电信网络、局域网(LAN)、无线网络、广域网(WAN)(诸如因特网)、对等网络、电缆网络等)。
系统565还可以包括辅助存储(未示出)。辅助存储610包括例如硬盘驱动器和/或可移除存储驱动器、代表软盘驱动器、磁带驱动器、光盘驱动器、数字多功能盘(DVD)驱动器、记录设备、通用串行总线(USB)闪存。可移除存储驱动器以众所周知的方式从可移除存储单元读取和/或写入可移除存储单元。
计算机程序或计算机控制逻辑算法可以存储在主存储器540和/或辅助存储中。这些计算机程序在被执行时使得系统565能够执行各种功能。存储器540、存储和/或任何其他存储是计算机可读介质的可能示例。
各种在先附图的体系架构和/或功能可以在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制台系统、专用系统和/或任何其他所需的系统的上下文中实现。例如,系统565可以采取台式计算机、膝上型计算机、平板电脑、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、数字相机、运载工具、头戴式显示器、手持式电子设备、移动电话设备、电视机、工作站、游戏控制台、嵌入式系统和/或任何其他类型的逻辑的形式。
虽然上文已经描述了各种实施例,但应该理解的是,它们仅作为示例呈现,而不是限制。因此,本申请的广度和范围不应被任何上述示例性实施例限制,而应仅根据以下和随后提交的权利要求及其等同物来限定。
图形处理管线
在一个实施例中,PPU 300包括图形处理单元(GPU)。PPU 300被配置为接收指定用于处理图形数据的着色程序的命令。图形数据可以被定义为一组图元,例如点、线、三角形、四边形、三角形带等。典型地,图元包括指定图元的多个顶点(例如,在模型空间坐标系中)的数据以及与图元的每个顶点相关联的属性。PPU 300可以被配置为处理图元以生成帧缓冲区(即,用于显示器的像素中的每一个的像素数据)。
应用程序将场景的模型数据(即,顶点和属性的集合)写入存储器(诸如系统存储器或存储器304)。模型数据定义可能在显示器上可见的对象中的每一个。然后应用程序对驱动程序内核进行API调用,其请求要被渲染和显示的模型数据。驱动程序内核读取模型数据并将命令写入一个或更多个流以执行操作来处理模型数据。这些命令可以参考要在PPU300的SM 440上实现的不同着色程序,包括顶点着色、外壳着色、域着色、几何着色和像素着色中的一个或更多个。例如,SM 440中的一个或更多个可以被配置为执行顶点着色程序,其处理由模型数据定义的多个顶点。在一个实施例中,不同的SM 440可以被配置为同时执行不同的着色程序。例如,SM 440的第一子集可以被配置为执行顶点着色程序,而SM 440的第二子集可以被配置为执行像素着色程序。SM 440的第一子集处理顶点数据以产生经处理的顶点数据,并将经处理的顶点数据写入L2高速缓存460和/或存储器304。在经处理的顶点数据被光栅化(即,从三维数据转换成屏幕空间中的二维数据)以产生片段数据之后,SM 440的第二子集执行像素着色以产生经处理的片段数据,然后将其与其他经处理的片段数据混合并被写入存储器304中的帧缓冲区。顶点着色程序和像素着色程序可以同时执行,以管线方式处理来自同一场景的不同数据,直到该场景的所有模型数据已经被渲染到帧缓冲区。然后,帧缓冲区的内容被传送到显示控制器以在显示设备上显示。
图6是根据实施例的由图3的PPU 300实现的图形处理管线600的概念图。图形处理管线600是被实现以从3D几何数据生成2D计算机生成图像的处理步骤的抽象流程图。众所周知,管线架构可以通过将操作分成多个阶段来更高效地执行长延迟操作,其中每个阶段的输出耦合到下一个连续阶段的输入。因此,图形处理管线600接收从图形处理管线600的一个阶段传送到下一阶段的输入数据601,以生成输出数据602。在一个实施例中,图形处理管线600可表示由API定义的图形处理管线。作为选择,图形处理管线600可以在先前附图和/或一个或更多个任何后续附图的功能和架构的上下文中实现。
如图6所示,图形处理管线600包括包含多个阶段的管线架构。这些阶段包括但不限于数据组装阶段610、顶点着色阶段620、图元组装阶段630、几何着色阶段640、视口缩放、剔除和裁剪(viewport scale,cull,and clip,VSCC)阶段650、光栅化阶段660、片段着色阶段670和光栅操作阶段680。在一个实施例中,输入数据601包括命令,其配置处理单元以实现图形处理管线600的阶段,并配置几何图元(例如,点、线、三角形、四边形、三角形带或扇形等)以由这些阶段处理。输出数据602可以包括像素数据(即,颜色数据),其被复制到存储器中的帧缓冲区或其他类型的表面数据结构中。
数据组装阶段610接收输入数据601,其指定用于高阶表面、图元等的顶点数据。数据组装阶段610收集临时存储或队列中的顶点数据,诸如通过从主机处理器接收包括指向存储器中的缓冲区的指针的命令并从该缓冲区读取顶点数据。顶点数据然后被传送到顶点着色阶段620以进行处理。
顶点着色阶段620通过对顶点中的每一个执行一次一组操作(即,顶点着色器或程序)来处理顶点数据。顶点可以例如被指定为与一个或更多个顶点属性(例如,颜色、纹理坐标、表面法线等)相关联的4坐标向量(即,<x,y,z,w>)。顶点着色阶段620可以操纵各个顶点属性,诸如位置、颜色、纹理坐标等。换句话说,顶点着色阶段620对与顶点相关联的顶点坐标或其他顶点属性执行操作。这些操作通常包括光照操作(即,修改顶点的颜色属性)和变换操作(即,修改顶点的坐标空间)。例如,可以使用对象坐标空间中的坐标来指定顶点,其通过将坐标乘以矩阵进行变换,该矩阵将坐标从对象坐标空间转换到世界空间或归一化设备坐标(normalized-device-coordinate,NCD)空间。顶点着色阶段620生成被传送到图元组装阶段630的经变换的顶点数据。
图元组装阶段630收集由顶点着色阶段620输出的顶点并且将顶点分组成几何图元以由几何着色阶段640处理。例如,图元组装阶段630可以被配置为将每三个连续顶点分组为用于传送到几何着色阶段640的几何图元(即,三角形)。在一些实施例中,特定顶点可以被重新用于连续几何图元(例如,三角形带中的两个连续三角形可以共享两个顶点)。图元组装阶段630将几何图元(即,相关联的顶点的集合)传送到几何着色阶段640。
几何着色阶段640通过对几何图元执行一组操作(即,几何着色器或程序)来处理几何图元。曲面细分(tessellation)操作可以从每个几何图元生成一个或更多个几何图元。换言之,几何着色阶段640可以将每个几何图元细分为两个或更多个几何图元的更精细的网格,以由图形处理管线600的其余部分进行处理。几何着色阶段640将几何图元传送到视口SCC阶段650。
在一个实施例中,图形处理管线600可以在流式多处理器和顶点着色阶段620、图元组装阶段630、几何着色阶段640、片段着色阶段670和/或与其相关联的硬件/软件内操作,可顺序地执行处理操作。一旦顺序处理操作完成,在一个实施例中,视口SCC阶段650可以利用数据。在一个实施例中,由图形处理管线600中的阶段的一个或更多个处理的图元数据可以被写入高速缓存(例如,L1高速缓存、顶点高速缓存等)中。在这种情况下,在一个实施例中,视口SCC阶段650可以访问高速缓存中的数据。在一个实施例中,视口SCC阶段650和光栅化阶段660被实现为固定功能电路。
视口SCC阶段650执行几何图元的视口缩放、剔除和裁剪。正被渲染的每个表面都与抽象相机位置相关联。相机位置表示正观看该场景的观看者的位置并定义了包围该场景的对象的视锥体。视锥体可以包括观看平面、后平面和四个裁剪平面。完全位于视锥体之外的任何几何图元都可被剔除(即丢弃),因为这些几何图元将不会对最终渲染的场景做出贡献。部分位于视锥体内并且部分位于视锥体外的任何几何图元可以被裁剪(即,转换为被包围在视锥体内的新的几何图元)。此外,可以基于视锥体的深度来对每个几何图元进行缩放。然后将所有可能可见的几何图元传送到光栅化阶段660。
光栅化阶段660将3D几何图元转换成2D片段(例如,能够用于显示等)。光栅化阶段660可以被配置为利用几何图元的顶点来设置一组平面方程,从中可以内插各种属性。光栅化阶段660还可以计算多个像素的覆盖掩码,其指示像素的一个或更多个样本位置是否拦截几何图元。在一个实施例中,还可以执行z测试以确定几何图元是否被已经被光栅化的其他几何图元遮挡。光栅化阶段660生成片段数据(即,与每个被覆盖像素的特定样本位置相关联的内插顶点属性),其被传送到片段着色阶段670。
片段着色阶段670通过对片段中的每一个执行一组操作(即,片段着色器或程序)来处理片段数据。片段着色阶段670可以生成片段的像素数据(即,颜色值),诸如通过使用片段的内插纹理坐标执行光照操作或采样纹理贴图。片段着色阶段670生成像素数据,其被发送到光栅操作阶段680。
光栅操作阶段680可对像素数据执行各种操作,诸如执行阿尔法测试、模板测试(stencil test)以及将像素数据与对应于与像素相关联的其他片段的其他像素数据混合。当光栅操作阶段680已经完成对像素数据(即,输出数据602)的处理时,可以将像素数据写入渲染目标,诸如帧缓冲区、颜色缓冲区等。
应当领会,除上述阶段中的一个或更多个以外或代替上述阶段中的一个或更多个,一个或更多个额外的阶段可以被包括在图形处理管线600中。抽象图形处理管线的各种实现方式可以实现不同的阶段。此外,在一些实施例中,上述阶段中的一个或更多个可以从图形处理管线中排除(诸如几何着色阶段640)。其他类型的图形处理管线被认为是在本公开的范围内所构想的。此外,图形处理管线600的任何阶段可以由图形处理器(诸如PPU300)内的一个或更多个专用硬件单元来实现。图形处理管线600的其他阶段可以由可编程硬件单元(诸如PPU 300的SM 440)来实现。
图形处理管线600可以经由由主机处理器(诸如CPU)执行的应用程序来实现。在一个实施例中,设备驱动程序可以实现应用程序编程接口(API),其定义可以被应用程序利用以生成用于显示的图形数据的各种功能。设备驱动程序是软件程序,其包括控制PPU 300的操作的多个指令。API为程序员提供抽象,其允许程序员利用专用图形硬件(诸如PPU 300)来生成图形数据而不要求程序员利用PPU 300的特定指令集。应用程序可以包括被路由到PPU 300的设备驱动程序的API调用。设备驱动程序解释API调用并执行各种操作以响应API调用。在一些情况下,设备驱动程序可以通过在CPU上执行指令来执行操作。在其他情况下,设备驱动程序可以至少部分地通过利用CPU和PPU 300之间的输入/输出接口在PPU 300上启动操作来执行操作。在一个实施例中,设备驱动程序被配置为利用PPU 300的硬件来实现图形处理管线600。
可以在PPU 300内执行各种程序以便实现图形处理管线600的各个阶段。例如,设备驱动程序可以启动PPU 300上的内核以在一个SM 440(或多个SM 440)上执行顶点着色阶段620。设备驱动程序(或由PPU 400执行的初始内核)还可启动PPU 400上的其他内核以执行图形处理管线600的其他阶段,诸如几何着色阶段640和片段着色阶段670。另外,图形处理管线600的阶段中的一些可以在固定单元硬件(诸如在PPU 400内实现的光栅器或数据组装器)上实现。应当领会,在被SM 440上的后续内核处理之前,来自一个内核的结果可以由一个或更多个中间固定功能硬件单元处理。
机器学习
在处理器(诸如PPU 300)上开发的深度神经网络(DNN)已经用于各种使用情况:从自驾车到更快药物开发,从在线图像数据库中的自动图像字幕到视频聊天应用中的智能实时语言翻译。深度学习是一种技术,它建模人类大脑的神经学习过程,不断学习,不断变得更聪明,并且随着时间的推移更快地传送更准确的结果。一个孩子最初是由成人教导,以正确识别和分类各种形状,最终能够在没有任何辅导的情况下识别形状。同样,深度学习或神经学习系统需要在物体识别和分类方面进行训练,以便在识别基本物体、遮挡物体等同时还有为物体分配情景时变得更加智能和高效。
在最简单的层面上,人类大脑中的神经元查看接收到的各种输入,将重要性级别分配给这些输入中的每一个,并且将输出传递给其他神经元以进行处理。人造神经元或感知器是神经网络的最基本模型。在一个示例中,感知器可以接收一个或更多个输入,其表示感知器正被训练为识别和分类的对象的各种特征,并且在定义对象形状时,这些特征中的每一个基于该特征的重要性赋予一定的权重。
深度神经网络(DNN)模型包括许多连接的感知器(例如节点)的多个层,其可以用大量输入数据来训练以快速高精度地解决复杂问题。在一个示例中,DLL模型的第一层将汽车的输入图像分解为各个部分,并查找基本图案(诸如线条和角)。第二层组装线条以寻找更高级别的图案,诸如轮子、挡风玻璃和镜子。下一层识别运载工具类型,最后几层为输入图像生成标签,识别特定汽车品牌的型号。
一旦DNN被训练,DNN就可以被部署并用于在被称为推理(inference)的过程中识别和分类对象或图案。推理的示例(DNN从给定输入中提取有用信息的过程)包括识别沉积在ATM机中的支票存款上的手写数字、识别照片中朋友的图像、向超过五千万用户提供电影推荐、识别和分类不同类型的汽车、行人和无人驾驶汽车中的道路危险、或实时翻译人类言语。
在训练期间,数据在前向传播阶段流过DNN,直到产生预测为止,其指示对应于输入的标签。如果神经网络没有正确标记输入,则分析正确标签和预测标签之间的误差,并且在后向传播阶段期间针对每个特征调整权重,直到DNN正确标记该输入和训练数据集中的其他输入为止。训练复杂的神经网络需要大量的并行计算性能,包括由PPU 300支持的浮点乘法和加法。与训练相比,推理的计算密集程度比训练更低,是一个延迟敏感过程,其中经训练的神经网络应用于它以前没有见过的新的输入,以进行图像分类、翻译语音以及通常推理新的信息。
神经网络严重依赖于矩阵数学运算,并且复杂的多层网络需要大量的浮点性能和带宽来提高效率和速度。采用数千个处理核心,针对矩阵数学运算进行了优化,并传送数十到数百TFLOPS的性能,PPU 300是能够传送基于深度神经网络的人工智能和机器学习应用所需性能的计算平台。
Claims (30)
1.一种用于操作芯片的方法,包括:
接收与在所述芯片上执行的工作负载相关联的输入,所述芯片具有在共享功率约束下操作的两个或更多个硬件组件,所述输入包括:
所述工作负载的描述,
执行每个所述工作负载时,所述两个或更多个硬件组件中的每一个的性能度量,以及
每个所述工作负载的功耗度量;
训练人工智能(AI)网络,所述AI网络与所述工作负载的所述描述、每个所述工作负载的所述性能度量以及每个所述工作负载的功耗相关联;
接收对所述芯片的考虑性能和功耗两者的优化模式的选择;
根据所选择的优化模式,使用所述AI网络确定所述芯片的最佳操作点;以及
配置所述芯片以在所确定的最佳操作点处操作。
2.如权利要求1所述的方法,其中,所述两个或更多个硬件组件包括存储器和处理器。
3.如权利要求2所述的方法,其中,所述存储器是DRAM,所述处理器是GPU。
4.如权利要求1所述的方法,其中,所述输入在预定义的时间窗口上由捕获逻辑累积。
5.如权利要求4所述的方法,其中,对于图形工作负载,在整个帧上捕获所述输入。
6.如权利要求4所述的方法,其中,对于计算或深度学习工作负载,在函数调用级别或在固定的时间段上捕获所述输入。
7.如权利要求1所述的方法,其中,所述工作负载的所述描述中的每一个包括以下中的至少一个:
执行工作负载的应用程序的指示,
在所述工作负载内执行的操作,或
对其执行所述工作负载的数据。
8.如权利要求1所述的方法,其中,所述性能度量包括帧时间。
9.如权利要求1所述的方法,其中,所述性能度量包括每秒指令。
10.如权利要求1所述的方法,其中,每个所述工作负载的所述功耗度量包括每个硬件组件执行所述工作负载所消耗的功率量。
11.如权利要求1所述的方法,其中,每个所述工作负载的所述功耗度量包括所述两个或更多个硬件组件执行所述工作负载所消耗的总功率量。
12.如权利要求1所述的方法,其中,对所述芯片的优化模式的所述选择指示:
优化芯片操作所针对的参数,所述参数是性能、功率或效率之一。
13.如权利要求12所述的方法,其中,根据所选择的优化模式确定所述芯片的最佳操作点,包括:
当所选择的优化模式是针对性能优化所述芯片的操作时:
识别所述性能的目标值,
识别功率阈值,
使用所述AI网络确定所述芯片的最佳操作点,以在不超过所述功率阈值的情况下最大化性能,所述芯片的所述最佳操作点包括所述两个或更多个硬件组件中的每个硬件组件的操作状态和所述两个或更多个硬件组件的电压状态。
14.如权利要求12所述的方法,其中,根据所选择的优化模式确定所述芯片的最佳操作点,包括:
当所选择的优化模式是针对功率优化所述芯片的操作时:
识别所述功率的目标值,
识别性能阈值,
使用所述AI网络确定所述芯片的最佳操作点,以在不低于所述性能阈值的情况下最小化功耗,所述芯片的最佳操作点包括所述两个或更多个硬件组件中的每个硬件组件的操作状态和所述两个或更多个硬件组件的电压状态。
15.如权利要求12所述的方法,其中,根据所选择的优化模式确定所述芯片的最佳操作点,包括:
当所选择的优化模式是针对效率优化所述芯片的操作时:
识别效率阈值,其中所述效率阈值基于与功耗变化相关的性能变化来定义,
使用所述AI网络确定所述芯片的最佳操作点,以在不低于所述效率阈值的情况下最大化性能,所述芯片的最佳操作点包括所述两个或更多个硬件组件中的每个硬件组件的操作状态和所述两个或更多个硬件组件的电压状态。
16.如权利要求1所述的方法,其中所述芯片的最佳操作点包括所述两个或更多个硬件组件中的每个硬件组件的操作状态,所述操作状态包括所述两个或更多个硬件组件中的每个硬件组件的时钟频率和所述两个或更多个硬件组件的电压状态。
17.如权利要求1所述的方法,其中,所述芯片的最佳操作点是基于对由所述芯片执行的一个或更多个先前工作负载的描述来确定的,并且当在所述芯片上执行后续工作负载时被采用。
18.如权利要求1所述的方法,其中,确定所述芯片的最佳操作点以及将所述芯片配置为在所确定的最佳操作点处操作在以下情况下被重复:
针对在所述芯片上执行的每个新的工作负载,或
在应用程序内在各个预定义操作点下的工作负载执行期间。
19.如权利要求1所述的方法,其中,确定所述芯片的最佳操作点以及将所述芯片配置为在所确定的最佳操作点处操作是由所述芯片的CPU执行的软件执行的。
20.如权利要求1所述的方法,其中,确定所述芯片的最佳操作点以及将所述芯片配置为在所确定的最佳操作点处操作是由所述芯片上的专用硬件执行的。
21.一种非暂时性计算机可读介质,存储可由处理器执行以执行一种方法的代码,所述方法包括:
接收与在芯片上执行的工作负载相关联的输入,所述芯片具有在共享功率约束下操作的两个或更多个硬件组件,所述输入包括:
所述工作负载的描述,
执行每个所述工作负载时,所述两个或更多个硬件组件中的每一个的性能度量,以及
每个所述工作负载的功耗度量;
训练人工智能(AI)网络,所述AI网络与所述工作负载的所述描述、每个所述工作负载的所述性能度量以及每个所述工作负载的功耗相关联;
接收对所述芯片的考虑性能和功耗两者的优化模式的选择;
根据所选择的优化模式,使用所述AI网络确定所述芯片的最佳操作点;以及
配置所述芯片以在所确定的最佳操作点处操作。
22.如权利要求21所述的非暂时性计算机可读介质,其中,所述两个或更多个硬件组件包括存储器和处理器。
23.如权利要求21所述的非暂时性计算机可读介质,其中所述芯片的最佳操作点包括所述两个或更多个硬件组件中的每个硬件组件的操作状态,所述操作状态包括所述两个或更多个硬件组件中的每个硬件组件的时钟频率和所述两个或更多个硬件组件的电压状态。
24.如权利要求21所述的非暂时性计算机可读介质,其中所述芯片的最佳操作点是基于对由所述芯片执行的一个或更多个先前工作负载的描述来确定的,并且当在所述芯片上执行后续工作负载时被采用。
25.如权利要求21所述的非暂时性计算机可读介质,其中,确定所述芯片的最佳操作点以及将所述芯片配置为在所确定的最佳操作点处操作在以下情况下被重复:
针对在所述芯片上执行的每个新的工作负载,或
在应用程序内在各个预定义操作点下的工作负载执行期间。
26.一种芯片,包括:
两个或更多个硬件组件,其在共享功率约束下操作;以及
专用硬件,用于:
接收与在所述芯片上执行的工作负载相关联的输入,所述输入包括:
所述工作负载的描述,
执行每个所述工作负载时,所述两个或更多个硬件组件中的每一个的性能度量,以及
每个所述工作负载的功耗度量;
训练人工智能(AI)网络,所述AI网络与所述工作负载的所述描述、每个所述工作负载的所述性能度量以及每个所述工作负载的所述功耗相关联;
接收对所述芯片的考虑性能和功耗两者的优化模式的选择;
根据所选择的优化模式,使用所述AI网络确定所述芯片的最佳操作点;以及
配置所述芯片以在所确定的最佳操作点处操作。
27.如权利要求26所述的芯片,其中所述两个或更多个硬件组件包括存储器和处理器。
28.如权利要求26所述的芯片,其中所述芯片的最佳操作点包括所述两个或更多个硬件组件中的每个硬件组件的操作状态,所述操作状态包括所述两个或更多个硬件组件中的每个硬件组件的时钟频率和所述两个或更多个硬件组件的电压状态。
29.如权利要求26所述的芯片,其中所述芯片的最佳操作点是基于对由所述芯片执行的一个或更多个先前工作负载的描述来确定的,并且当在所述芯片上执行后续工作负载时被采用。
30.如权利要求26所述的芯片,其中,所述确定所述芯片的最佳操作点以及将所述芯片配置为在所确定的最佳操作点处操作在以下情况下被重复:
针对所述芯片上执行的每个新的工作负载,或
在应用程序内在各个预定义操作点下的工作负载执行期间。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/179,620 US11106261B2 (en) | 2018-11-02 | 2018-11-02 | Optimal operating point estimator for hardware operating under a shared power/thermal constraint |
US16/179,620 | 2018-11-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111143174A CN111143174A (zh) | 2020-05-12 |
CN111143174B true CN111143174B (zh) | 2023-09-05 |
Family
ID=70458050
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910461646.2A Active CN111143174B (zh) | 2018-11-02 | 2019-05-30 | 在共享功率/热约束下操作的硬件的最佳操作点估计器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11106261B2 (zh) |
CN (1) | CN111143174B (zh) |
DE (1) | DE102019103310A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10884485B2 (en) * | 2018-12-11 | 2021-01-05 | Groq, Inc. | Power optimization in an artificial intelligence processor |
WO2021034496A1 (en) * | 2019-08-20 | 2021-02-25 | Intel Corporation | Apparatus and method to improve switchable graphics system performance and energy consumption based applications and real-time system power/thermal budgets |
US11567555B2 (en) * | 2019-08-30 | 2023-01-31 | Intel Corporation | Software assisted power management |
CN114342411B (zh) * | 2019-09-27 | 2024-03-26 | 雷蛇(亚太)私人有限公司 | 提供一组或多组图形参数的方法、执行实现提供一组或多组图形参数的方法的程序的计算机 |
US11069095B1 (en) * | 2020-06-02 | 2021-07-20 | Nvidia Corporation | Techniques for efficiently sampling an image |
US20210397476A1 (en) * | 2020-06-18 | 2021-12-23 | International Business Machines Corporation | Power-performance based system management |
CN114510139B (zh) * | 2020-11-16 | 2024-06-04 | 深圳市万普拉斯科技有限公司 | 一种调频方法、装置及电子设备 |
CN112506649A (zh) * | 2020-11-27 | 2021-03-16 | 深圳比特微电子科技有限公司 | 矿机配置参数确定方法 |
US20220317747A1 (en) * | 2021-03-31 | 2022-10-06 | Advanced Micro Devices, Inc. | Power shifting based on bottleneck prediction |
CN113778211B (zh) * | 2021-08-24 | 2024-08-23 | 联想(北京)有限公司 | 一种电源电路的控制方法、装置及电子设备 |
EP4141669A1 (en) | 2021-08-31 | 2023-03-01 | Siemens Aktiengesellschaft | Method and system for determining optimal computing configuration for executing computing operation |
US11609624B1 (en) * | 2022-08-11 | 2023-03-21 | Block, Inc. | Power management for a computing system |
US20240302879A1 (en) * | 2023-03-08 | 2024-09-12 | Advanced Micro Devices, Inc. | Integrated circuit performance adaptation using workload predictions |
CN116501594B (zh) * | 2023-06-27 | 2023-09-08 | 上海燧原科技有限公司 | 系统建模评估方法、装置、电子设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104246651A (zh) * | 2012-03-29 | 2014-12-24 | 英特尔公司 | 平台中的动态功率限值共享 |
CN104937539A (zh) * | 2012-11-28 | 2015-09-23 | 英特尔公司 | 用于提供推入缓冲器复制和存储功能的指令和逻辑 |
CN106445652A (zh) * | 2015-07-17 | 2017-02-22 | 埃森哲环球解决方案有限公司 | 用于智能云计划和停用的方法和系统 |
CN107209545A (zh) * | 2015-02-13 | 2017-09-26 | 英特尔公司 | 在多核处理器中执行功率管理 |
CN107209548A (zh) * | 2015-02-13 | 2017-09-26 | 英特尔公司 | 在多核处理器中执行功率管理 |
CN107908536A (zh) * | 2017-11-17 | 2018-04-13 | 华中科技大学 | Cpu‑gpu异构环境中对gpu应用的性能评估方法及系统 |
CN108090560A (zh) * | 2018-01-05 | 2018-05-29 | 中国科学技术大学苏州研究院 | 基于fpga的lstm递归神经网络硬件加速器的设计方法 |
CN108701060A (zh) * | 2016-02-22 | 2018-10-23 | 以色列理工学院-康奈尔大学琼·雅各布斯与欧文·雅各布斯研究院 | 用于计算系统自动调整的方法 |
CN109690475A (zh) * | 2016-09-30 | 2019-04-26 | 英特尔公司 | 用于转移操作的硬件加速器和方法 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080028246A1 (en) * | 2006-07-31 | 2008-01-31 | Witham Timothy D | Self-monitoring and self-adjusting power consumption computer control system |
US7913071B2 (en) | 2007-07-31 | 2011-03-22 | Northwestern University | Systems and methods for process and user driven dynamic voltage and frequency scaling |
CN102388350B (zh) | 2009-03-13 | 2016-03-23 | 惠普发展公司,有限责任合伙企业 | 确定优化实体利用率和资源功耗的状态分配 |
US8706652B2 (en) | 2009-06-09 | 2014-04-22 | Northwestern University | System and method for controlling power consumption in a computer system based on user satisfaction |
US8533505B2 (en) | 2010-03-01 | 2013-09-10 | Arm Limited | Data processing apparatus and method for transferring workload between source and destination processing circuitry |
US8412971B2 (en) | 2010-05-11 | 2013-04-02 | Advanced Micro Devices, Inc. | Method and apparatus for cache control |
US8510582B2 (en) | 2010-07-21 | 2013-08-13 | Advanced Micro Devices, Inc. | Managing current and power in a computing system |
US8484498B2 (en) | 2010-08-26 | 2013-07-09 | Advanced Micro Devices | Method and apparatus for demand-based control of processing node performance |
US9261949B2 (en) | 2010-10-29 | 2016-02-16 | Advanced Micro Devices, Inc. | Method for adaptive performance optimization of the soc |
US8756442B2 (en) | 2010-12-16 | 2014-06-17 | Advanced Micro Devices, Inc. | System for processor power limit management |
US8924758B2 (en) | 2011-12-13 | 2014-12-30 | Advanced Micro Devices, Inc. | Method for SOC performance and power optimization |
US9026817B2 (en) | 2012-06-29 | 2015-05-05 | Intel Corporation | Joint optimization of processor frequencies and system sleep states |
US20160139649A1 (en) | 2012-10-16 | 2016-05-19 | Moon J. Kim | Performance-adjustable memory module |
WO2015134655A2 (en) | 2014-03-05 | 2015-09-11 | Adeptdc Co. | Systems and methods for intelligent controls for optimal resource allocation for data center operations |
US20160378168A1 (en) | 2015-06-26 | 2016-12-29 | Advanced Micro Devices, Inc. | Dynamic power management optimization |
US10101800B2 (en) * | 2015-07-29 | 2018-10-16 | Samsung Electronics Co., Ltd. | Method of managing power and electronic device |
US10146286B2 (en) | 2016-01-14 | 2018-12-04 | Intel Corporation | Dynamically updating a power management policy of a processor |
US10296074B2 (en) | 2016-08-12 | 2019-05-21 | Qualcomm Incorporated | Fine-grained power optimization for heterogeneous parallel constructs |
US10365708B2 (en) | 2016-12-14 | 2019-07-30 | Intel Corporation | Systems and methods for guardband recovery using in situ characterization |
US10649518B2 (en) | 2017-01-26 | 2020-05-12 | Ati Technologies Ulc | Adaptive power control loop |
US10739844B2 (en) | 2018-05-02 | 2020-08-11 | Intel Corporation | System, apparatus and method for optimized throttling of a processor |
-
2018
- 2018-11-02 US US16/179,620 patent/US11106261B2/en active Active
-
2019
- 2019-02-11 DE DE102019103310.1A patent/DE102019103310A1/de active Pending
- 2019-05-30 CN CN201910461646.2A patent/CN111143174B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104246651A (zh) * | 2012-03-29 | 2014-12-24 | 英特尔公司 | 平台中的动态功率限值共享 |
CN104937539A (zh) * | 2012-11-28 | 2015-09-23 | 英特尔公司 | 用于提供推入缓冲器复制和存储功能的指令和逻辑 |
CN107209545A (zh) * | 2015-02-13 | 2017-09-26 | 英特尔公司 | 在多核处理器中执行功率管理 |
CN107209548A (zh) * | 2015-02-13 | 2017-09-26 | 英特尔公司 | 在多核处理器中执行功率管理 |
CN106445652A (zh) * | 2015-07-17 | 2017-02-22 | 埃森哲环球解决方案有限公司 | 用于智能云计划和停用的方法和系统 |
CN108701060A (zh) * | 2016-02-22 | 2018-10-23 | 以色列理工学院-康奈尔大学琼·雅各布斯与欧文·雅各布斯研究院 | 用于计算系统自动调整的方法 |
CN109690475A (zh) * | 2016-09-30 | 2019-04-26 | 英特尔公司 | 用于转移操作的硬件加速器和方法 |
CN107908536A (zh) * | 2017-11-17 | 2018-04-13 | 华中科技大学 | Cpu‑gpu异构环境中对gpu应用的性能评估方法及系统 |
CN108090560A (zh) * | 2018-01-05 | 2018-05-29 | 中国科学技术大学苏州研究院 | 基于fpga的lstm递归神经网络硬件加速器的设计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111143174A (zh) | 2020-05-12 |
US11106261B2 (en) | 2021-08-31 |
DE102019103310A1 (de) | 2020-05-07 |
US20200142466A1 (en) | 2020-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111143174B (zh) | 在共享功率/热约束下操作的硬件的最佳操作点估计器 | |
CN110176054B (zh) | 用于训练神经网络模型的合成图像的生成 | |
CN109472858B (zh) | 用于逆向图形的可微分渲染管线 | |
CN111210498B (zh) | 降低多边形网格的细节水平以减少被渲染几何的复杂度 | |
CN110796588B (zh) | 同时计算和图形调度 | |
CN110766778B (zh) | 使用散列执行并行路径空间滤波的方法和系统 | |
CN112445713B (zh) | 用于对内存有效分区的方法和系统 | |
CN111667542B (zh) | 适用于人工神经网络的用于处理压缩数据的解压缩技术 | |
CN110807827B (zh) | 系统生成稳定的重心坐标和直接平面方程访问 | |
CN112041894B (zh) | 渲染期间提高涉及水面的场景的真实感 | |
CN112288619A (zh) | 用于在渲染图形时预加载纹理的技术 | |
EP3678037A1 (en) | Neural network generator | |
CN113393564B (zh) | 利用全局照明数据结构的基于水塘的时空重要性重采样 | |
US11847733B2 (en) | Performance of ray-traced shadow creation within a scene | |
CN113450445A (zh) | 临时密实渲染的自适应像素采样顺序 | |
CN113822975B (zh) | 用于对图像进行有效采样的技术 | |
CN110908929B (zh) | 用于高带宽缩放的一致数据高速缓存 | |
CN113743573B (zh) | 用于访问和利用压缩数据及其状态信息的技术 | |
CN116108952A (zh) | 用于组合优化的并行处理 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TG01 | Patent term adjustment |