CN117076081A - 存储器训练方法、设备、存储介质及程序产品 - Google Patents

存储器训练方法、设备、存储介质及程序产品 Download PDF

Info

Publication number
CN117076081A
CN117076081A CN202311064311.XA CN202311064311A CN117076081A CN 117076081 A CN117076081 A CN 117076081A CN 202311064311 A CN202311064311 A CN 202311064311A CN 117076081 A CN117076081 A CN 117076081A
Authority
CN
China
Prior art keywords
training
thread
threads
parallel threads
memory
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.)
Granted
Application number
CN202311064311.XA
Other languages
English (en)
Other versions
CN117076081B (zh
Inventor
黄颂彬
赵兴
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hexin Technology Co ltd
Shanghai Hexin Digital Technology Co ltd
Original Assignee
Hexin Technology Co ltd
Shanghai Hexin Digital Technology Co ltd
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 Hexin Technology Co ltd, Shanghai Hexin Digital Technology Co ltd filed Critical Hexin Technology Co ltd
Priority to CN202311064311.XA priority Critical patent/CN117076081B/zh
Publication of CN117076081A publication Critical patent/CN117076081A/zh
Application granted granted Critical
Publication of CN117076081B publication Critical patent/CN117076081B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Computation (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本申请实施例提供一种存储器训练方法、设备、存储介质及程序产品,该方法包括在处理器内核中运行多个并行线程,在当前轮次的训练中,针对所述多个并行线程中的每个线程,通过所述线程对所述线程绑定的Rank进行训练;所述绑定的Rank为多个待训练Rank中的一个。本申请实施例提供的存储器训练方法通过开设多个并行的线程,多个线程并行运行,每个线程对绑定的Rank进行训练,可以同时训练多个Rank,大大提高了训练效率,减少服务器首次开机的时长。

Description

存储器训练方法、设备、存储介质及程序产品
技术领域
本申请实施例涉及处理器技术领域,尤其涉及一种存储器训练方法、设备、存储介质及程序产品。
背景技术
在设备首次启动时需要对内存(例如双倍速率同步动态随机存储器(Double DataRate Synchronous Dynamic Random Access Memory,DDR))进行初始化,主要是调整时序和提高信号完整性。
相关技术中,通常是采用一个内核开设一个线程,采用单线程对包括多个DDR的内存列Rank进行训练。
然而,实现本申请过程中,发明人发现现有技术中至少存在如下问题:服务器中设置多个DIMM条,每个DIMM条包括多个Rank,采用上述方式,效率较低,导致服务器首次开机时长较长。
发明内容
本申请实施例提供一种存储器训练方法、设备、存储介质及程序产品,以提高训练效率,降低服务器首次开机的时长。
第一方面,本申请实施例提供一种存储器训练方法,包括:
在处理器内核中运行多个并行线程;
在当前轮次的训练中,针对所述多个并行线程中的每个线程,通过所述线程对所述线程绑定的Rank进行训练;所述绑定的Rank为多个待训练Rank中的一个。
在一种可能的设计中,所述处理器内核为单核;所述在处理器内核中运行多个并行线程,包括:
基于同步多线程技术,在所述处理内核中运行多个并行线程。
在一种可能的设计中,所述线程绑定的每个Rank的训练任务包括多个子任务;所述方法还包括:
针对每个子任务,对所述处理器内核进行性能测试,确定所述子任务的资源配置信息;所述资源配置信息包括所述子任务所需的资源类型和数量;
所述通过所述线程对所述线程绑定的Rank进行训练,包括:
确定所述线程当前进行的目标子任务;
获取所述目标子任务的资源配置信息,根据所述目标子任务的资源配置信息,对所述线程绑定的Rank进行所述目标子任务对应的训练。
在一种可能的设计中,所述处理器内核为多核;每个内核运行的线程数量小于或等于所述内核所支持的并行线程的最大数量。
在一种可能的设计中,所述在处理器内核中运行多个并行线程,包括:
将处理器内核中的多个线程的优先级配置为相同优先级,并将所述多个线程的运行开关开启。
在一种可能的设计中,所述通过所述多个并行线程,分别对各自绑定的Rank进行训练之前,还包括:
将所述多个Rank的信息进行封装,获得内存信息;
根据所述内存信息,将所述多个并行线程与所述多个Rank进行一对一或一对多绑定。
在一种可能的设计中,所述处理器内核包括第一目标内核;所述第一目标内核包括队列单元;所述针对所述多个并行线程中的每个线程,通过所述线程对所述线程绑定的Rank进行训练,包括:
通过所述队列单元对所述第一目标内核运行的多个目标并行线程进行队列排序,获得所述多个目标并行线程分别对应的资源获取顺序;
针对所述多个目标并行线程中的每个线程,根据所述资源获取顺序获取所述线程所需资源,并根据所述所需资源对所述线程绑定的Rank进行训练。
在一种可能的设计中,所述在当前轮次的训练中,针对所述多个并行线程中的每个线程,通过所述线程对所述线程绑定的Rank进行训练;所述绑定的Rank为多个待训练Rank中的一个之后,还包括:
若剩余待训练Rank的数量不为零,则通过所述多个并行线程进行下一轮次的训练,直至剩余待训练Rank的数量为零。
第二方面,本申请实施例提供一种存储器训练设备,包括:
运行模块,用于在处理器内核中运行多个并行线程;
训练模块,用于在当前轮次的训练中,针对所述多个并行线程中的每个线程,通过所述线程对所述线程绑定的Rank进行训练;所述绑定的Rank为多个待训练Rank中的一个。
第三方面,本申请实施例提供一种存储器训练设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计所述的方法。
本实施例提供的存储器训练方法、设备、存储介质及程序产品,该方法包括在处理器内核中运行多个并行线程,在当前轮次的训练中,针对所述多个并行线程中的每个线程,通过所述线程对所述线程绑定的Rank进行训练;所述绑定的Rank为多个待训练Rank中的一个。本申请实施例提供的存储器训练方法通过开设多个并行的线程,多个线程并行运行,每个线程对绑定的Rank进行训练,可以同时训练多个Rank,大大提高了训练效率,减少服务器首次开机的时长。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的存储器训练方法的场景示意图;
图2为本申请实施例提供的存储器训练方法的流程示意图一;
图3为本申请实施例提供的存储器训练方法的又一场景示意图;
图4为本申请实施例提供的存储器训练方法的流程示意图二;
图5为本申请实施例提供的存储器训练设备的结构示意图;
图6为本申请实施例提供的存储器训练设备的硬件结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下为技术名词的解释:
多核处理器:是指在一个处理器中集成两个或多个完整的计算引擎(内核),此时处理器能支持系统总线上的多个处理器,由总线控制器提供所有总线控制信号和命令信号。
同步多线程(Simultaneous Multithreading,SMT):是一种在一个CPU的时钟周期内能够执行来自多个线程的指令的硬件多线程技术。本质上是一种将线程级并行处理(多CPU)转化为指令级并行处理(同一CPU)的方法。
双倍速率同步动态随机存储器(Double Data Rate Synchronous DynamicRandom Access Memory,DDR)训练:是一种为了能保证中央处理器(Central ProcessingUnit,CPU和DDR能有效交换数据的训练技术。
内存列Rank:是一组连接到同一个片选信号Chip Select的动态随机存取存储器(Dynamic Random Access Memory,DRAM)芯片,可以同时访问它们。所有DRAM芯片共享所有命令和控制信号,并且只有每个Rank的片选引脚是独立的。
内存控制器(Memory Controller,MC):是计算机系统内部控制内存并且负责内存与CPU之间数据交换的重要组成部分。
各类型处理器(例如Arm架构的处理器)在做DDR Training时,皆使用单线程进行Training,DDR Training本身就是一个较耗时的技术,且是内存能正常读写前必做的技术调试,尤其是在服务器的首次启动中,更需要做DDR Training,以移除电压偏移Skew和噪声Noise,让眼图分析中的数据眼更加宽广,得到更好的采样。减少CPU和内存条,例如双列直插式存储模块(Dual-Inline-Memory-Modules,DIMM)在交换数据的过程中,出现数据丢失,数据错误等问题的次数。
然而,对于需要支持大量的数据运算,数据存取的设备,例如服务器,来说,需要设置更多的DIMM条,若采用上述方式通过单线程进行DDR Training,效率很低,会导致服务器在首次开机时的时长大幅增加。
为了解决上述技术问题,本申请发明人研究发现可以开设多个并行线程,通过多个并行线程同时处理多个内存大单元的训练任务,进一步的,多个并行线程可以为采用硬件多线程技术在一个内核中开设多个并行线程,针对处理器为多核处理器的情况,多个并行线程还可以为多核处理器的多个内核开设的线程。相对于现有技术中采用单核单线程的方式能够大大提高训练效率。基于此,本申请实施例提供了一种存储器训练方法。
图1为本申请实施例提供的一种存储器训练方法的场景示意图。如图1所示,服务器包括32个内核Core,4个内存控制器MC,4个Channel(ChannelA1、ChannelB1、ChannelA2和ChannelB2),MC和Channel一一对应,每个MC对应一个内存条DIMM,每个DIMM对应两个内存列Rank(Rank0和Rank1)。
在具体实现过程中,服务器第一次开机启动时,需要对各Rank中的DDR芯片进行训练。在训练过程中,可以在处理器内核中运行多个并行线程;进而在当前轮次的训练中,针对所述多个并行线程中的每个线程,通过所述线程对所述线程绑定的Rank进行训练;所述绑定的Rank为多个待训练Rank中的一个。示例性的,以训练单位为Rank为例,假设单个内核可以支持的最大线程数为8,那么可以采用32Core中的一个Core开设8个线程对8个Rank进行训练,8个线程和8个Rank一对一绑定。由此,仅通过一个Core经过一轮即可完成所有Rank的训练,相对于采用常规单线程的方式,效率提升了8倍,另外,考虑到单个内核开设并行线程数量过多导致资源抢夺现象,可以采用32Core中的8个Core分别开设1个线程,即总共开设8个线程,8个线程和8个Rank一对一绑定,可以经过一轮即完成所有Rank的训练。本申请实施例提供的方法,通过开设多个并行的线程,多个线程并行运行,每个线程对绑定的Rank进行训练,可以同时训练多个Rank,大大提高了训练效率,减少服务器首次开机的时长。
需要说明的是,图1所示的场景示意图仅仅是一个示例,本申请实施例描述的存储器训练方法以及场景是为了更加清楚地说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
下面以具体地实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图2为本申请实施例提供的存储器训练方法的流程示意图一。如图2所示,该方法包括:
201、在处理器内核中运行多个并行线程。
本实施例的执行主体是处理器,以及包括该处理器的主板,以及包括该主板的终端设备或服务器。处理器可以是POWER架构、ARM架构等。
具体的,以服务器首次开机的场景为例,训练对象的最小单位为一个Rank,在接收到服务器的开机指令后,现有技术中通过单个内核开设一个线程,每轮仅能对一个Rank进行训练,而本实施例中通过在内核中开设多个线程,多个线程并行运行,每个线程可以完成对一个Rank的训练,多个线程可有完成多个Rank的训练,以开设的并行线程为8为例,那么每轮能对8个Rank同时进行训练,相对于现有技术,本实施例通过开设8个线程,能够将训练效率提升8倍。
在一些实施例中,处理器内核可以为单核处理器,所述在处理器内核中运行多个并行线程,包括:基于同步多线程技术,在所述处理内核中运行多个并行线程。
具体的,处理器可以为单核处理器,处理器内核即仅包括一个内核,在该内核中可以基于同步多线程(Simultaneous Multithreading,SMT)技术,开设多个并行线程。
在一些实施例中,所述线程绑定的每个Rank的训练任务可以包括多个子任务;所述方法还可以包括:针对每个子任务,对所述处理器内核进行性能测试,确定所述子任务的资源配置信息;所述资源配置信息包括所述子任务所需的资源类型和数量;所述通过所述线程对所述线程绑定的Rank进行训练,可以包括:确定所述线程当前进行的目标子任务;获取所述目标子任务的资源配置信息,根据所述目标子任务的资源配置信息,对所述线程绑定的Rank进行所述目标子任务对应的训练。
具体的,针对Rank的训练任务可以包括多个子任务,例如CA训练,Write Leveling训练等,多个子任务需要按照顺序进行,示例性的,假设多个子任务包括任务a、b和c,通常的执行顺序是执行a结束后执行b,执行b结束后执行c,不同子任务的算法所需的资源的类型和数量会有所区别,例如,有的子任务需要更多的执行单元资源,有的子任务需要更多的算数逻辑单元ALU资源。针对上述情况,可以通过处理器性能测试,确定处理器性能优于预设阈值的情况下,各子任务所需的资源配置信息,即不同子任务所需的资源类型和数量。进而,在进行训练过程中,可以确定线程当前在执行的子任务,并获取预先确定的该子任务对应的资源配置信息,进而可以为该线程绑定该资源配置信息所指示的资源类型和资源数量,例如子任务a所需算数逻辑单元的数量为5个。
在一些实施例中,针对单核处理器或多核处理器中开设多个并行线程的内核,在处理器内核中运行多个并行线程,可以包括:将处理器内核中的多个线程的优先级配置为相同优先级,并将所述多个线程的运行开关开启。
示例性的,以处理器为单核处理器为例,在具体实现过程中,可以首先配置每个线程的优先级,具体可以采用mtspr命令配置程序优先级寄存器(Program PriorityRegister,PPR)。其次,可以配置线程跑的模式,例如可以设置为64bit模式,具体可以采用命令mtmsr配置机器状态寄存器(Machine State Register,MSR),最后,可以打开内核的所有线程或部分线程(例如,线程0-线程7)的运行开关,采用mtspr命令配置控制寄存器Control Register。从而,使能处理器的SMT模式。
在一些实施例中,通过所述多个并行线程,分别对各自绑定的Rank进行训练之前,还可以包括:将所述多个Rank的信息进行封装,获得内存信息;根据所述内存信息,将所述多个并行线程与所述多个Rank进行一对一或一对多绑定。
示例性的,继续以处理器为单核处理器为例,首先,可以编写封装好各个Rank(例如Rank)的信息(包括的DDR芯片的颗粒数,芯片规格,容量大小,厂商名称等)其次,可以编写fun()函数,其功能可以是针对单个Rank(例如Rank)的DDR Training的实现步骤。进而,可以令多个线程thread分别绑定对应的Rank(例如8个线程与8个Rank一一绑定)。最后,令多个线程各自的程序计数器(Program Counter,PC)对fun()函数进行取地址。
在一些实施例中,所述处理器内核为多核;每个内核运行的线程数量小于或等于所述内核所支持的并行线程的最大数量。
针对多核处理器的多个内核,可以每个内核开设一个线程。示例性的,如图3所示,首次开机的服务器需要对所有的dimm条进行DDR Training,以保证DDR Channel信号完整性。根据DDR Training的协议规则,每次只能Training一个Rank。如图3所示,power架构下的cpu有8个core。每个core,利用单线程技术负责1个Rank的Training,同一个时刻下,8个core就能对8个Rank同时进行DDR Training,通过采用多核多线程技术,只需原本完成一轮Training的时间,就完成了8个Rank的DDR Training。对比传统方案,节省了8倍时间。在具体实现过程中,拷贝DDR Training算法代码至各个core所对应的缓存中,例如L2缓存,core执行相应的算法对离各自距离最近的Rank进行DDR Training,如图3所示Core0对应Rank0,Core1对应Rank 1,如此类推。8个core同时对8个Rank进行DDR Training。由此可知,如果只用单核单线程去进行DDR Training,则需要8轮才能完成所有的Training,而如果用了多核多线程技术,只需要1轮可完成,节省时间是8倍。因此多线程的DDR Training可以大幅减少服务器开机的等待时间。
具体的,考虑到针对单个内核采用SMT技术开设多个并行线程,可能发生资源抢夺的情况,可以使用多核多线程技术与SMT结合使用,比如一个内核core最多可使用8个硬件多线程,但可以不全部使用,只是使用某几个线程(少于8个),并同时使用其他core去跑其他并行算法。即尽量不去用尽单个core中的所有线程,而是通过更多的core去弥补。由此,从单core的角度来看,资源的竞争与抢夺对比SMT全开的时候,不那么剧烈。从多core的角度来看,多核意味着拥有更多的资源,能承受更大的带宽,有更多的缓存caches,能更优的分配资源。具体采用内核的数量,不同内核开设线程的数量和线程间资源分配的情况,可根据训练任务的算法类型以及Rank的数量来确定。
从上述描述可知,本实施例中采用的多核多线程做DDR Training的方法比单纯只用SMT技术的训练方法做更有优势。SMT技术是只用1个core去做Training,即使8个硬线程全开,鉴于cacheline的限制,1个core只能接收一个L2的指令,总线带宽最大也能到达一个cacheline的size。然而,多核多线程技术,会尽可能使用更多的core,如上述图中例子,8个core全部使用,分别对应的8个L2 cache,并对各自的L2做取指译码执行等流水线操作。此时,总线带宽在逻辑上可理解为8倍的cacheline。因此,用多核多线程做DDR Training比单纯只用SMT技术做,更能节省时间,单位时间内处理了更多的算法指令,直接提升性能。
202、在当前轮次的训练中,针对所述多个并行线程中的每个线程,通过所述线程对所述线程绑定的Rank进行训练;所述绑定的Rank为多个待训练Rank中的一个。
具体的,在开设多个并行线程后,可以将并行线程和待训练的Rank进行绑定。若待训练的Rank的数量小于或等于单个内核开设的并行线程的数量,那么可以采用一个轮次完成对该多个Rank的训练。若待训练的Rank的数量大于单个内核开设的并行线程的数量,则可以通过多个轮次完成对所有待训练的Rank的训练。还可以开设多个内核的并行线程,使得开设的并行线程的总数量与待训练的Rank相等。
在一些实施例中,在处理器内核中运行多个并行线程,可以包括:在所述第一内核中运行第一数量的并行线程;所述第一数量小于或等于所述第一内核支持的并行线程的最大值;相应的,通过所述多个并行线程,分别对各自绑定的Rank进行训练,可以包括:在当前轮次的训练中,针对所述第一数量的并行线程中的每个线程,通过所述线程对所述线程绑定的Rank进行训练;所述绑定的Rank为多个待训练Rank中的一个。
示例性的,假设待训练的Rank为8个,单个内核可以最多支持开设8个并行线程,那么可以在单个内核中开设8个并行线程,并将8个并行线程和8个Rank一对一绑定,进而可以在一个轮次内即通过8个并行线程分别完成对各自绑定的Rank的训练,大大提高了训练效率,缩短了服务器首次开机的时间。
在一些实施例中,所述处理器内核包括第一目标内核;所述第一目标内核包括队列单元;所述针对所述多个并行线程中的每个线程,通过所述线程对所述线程绑定的Rank进行训练,可以包括:通过所述队列单元对所述第一目标内核运行的多个目标并行线程进行队列排序,获得所述多个目标并行线程分别对应的资源获取顺序;针对所述多个目标并行线程中的每个线程,根据所述资源获取顺序获取所述线程所需资源,并根据所述所需资源对所述线程绑定的Rank进行训练。
具体的,为了减少资源抢夺的情况,针对开设多个并行线程的内核,可以设置队列单元,采用队列单元对内核开设的多个并行线程进行资源获取顺序的确定,进而基于该顺序为各并行线程分配资源,能平衡线程间资源分配时间,提升性能。
本实施例提供的存储器训练方法,通过开设多个并行的线程,多个线程并行运行,每个线程对绑定的Rank进行训练,可以同时训练多个Rank,大大提高了训练效率,减少服务器首次开机的时长。
图4为本申请实施例提供的存储器训练方法的流程示意图二。如图4所示,处理器内核开设的线程数小于待训练的Rank的数量,则可以采用多轮训练。该方法包括:
401、在处理器内核中运行多个并行线程。
402、在当前轮次的训练中,针对所述多个并行线程中的每个线程,通过所述线程对所述线程绑定的Rank进行训练;所述绑定的Rank为多个待训练Rank中的一个。
403、判断剩余待训练Rank的数量是否为零,若不为零,则执行步骤304,若为零,则结束训练。
404、通过所述多个并行线程进行下一轮次的训练,直至剩余待训练Rank的数量为零。
示例性的,以处理器为单核处理器为例,假设待训练的Rank为8个,单个内核可以最多支持开设4个并行线程,那么可以在单个内核中开设4个并行线程,并将4个并行线程和8个Rank中的4个Rank一对一绑定,进而可以在第一个轮次内即通过4个并行线程分别完成对各自绑定的Rank的训练,进而,在第二个轮次中,将剩余4个Rank与4个并行线程进行一对一绑定,进而在第二个轮次完成对剩余4个Rank的训练。即采用2个轮次即可完成对8个Rank的训练,相对于仅能采用单内核单线程对8个Rank训练8轮来说,大大提高了训练效率,缩短了服务器首次开机的时间。当然,若Rank为8个,最大支持开设的线程数为6个,则可以在第一轮次训练6个Rank,在第二轮次训练2个Rank,或者仅开设6个线程中的4个,采用两轮,每轮训练4个,本实施例中对此不作限定。
在一些实施例中,考虑到单个内核开设并行线程数量越多可能导致资源抢夺情况更严重,因此在训练中,可以采用开设并行线程更少的内核来进行训练。示例性的,以处理器包括3个内核为例,假设各内核总硬线程数最大为8,当前轮次采用了内核1开设5个线程,内核2开设5个线程,内核3开设5个线程,待训练的Rank的总数量为30个,那么经过当前轮次训练后,剩余Rank为15个,那么可以采用内核1、内核2和内核3进行下一轮训练,训练完毕。
本实施例提供的存储器训练方法,通过在一个内核中开设多个并行的线程,多个线程并行运行,每个线程对绑定的一个Rank进行训练,可以通过多轮次并在每轮次同时训练多个Rank,大大提高了训练效率,减少服务器首次开机的时长。
在一些实施例中,单个内核开设的线程数的最大值小于待训练的Rank的数量,则可以采用开设多个内核进行训练。具体的,在处理器内核中运行多个并行线程,可以包括:在所述第一内核中运行第一数量的并行线程;所述第一数量小于或等于所述第一内核支持的并行线程的最大值;在第二内核中运行第二数量的并行线程;所述第二数量小于或等于所述第二内核支持的并行线程的最大值;在当前轮次的训练中,针对所述第一数量的并行线程中的每个线程,通过所述线程对所述线程绑定的Rank进行训练,可以包括:在当前轮次的训练中,针对所述第一数量的并行线程和所述第二数量的并行线程中的每个并行线程,通过所述并行线程对所述并行线程绑定的Rank进行训练。
示例性的,假设待训练的Rank为8个,单个内核可以最多支持开设4个并行线程,那么可以在两个内核中分别开设4个并行线程,并将8个并行线程和8个Rank一对一绑定,进而可以在一个轮次内完成对8个Rank的训练,相对于仅能采用单内核单线程对8个Rank训练8轮来说,大大提高了训练效率,缩短了服务器首次开机的时间。当然,若Rank为8个,最大支持开设的线程数为6个,则可以在一个内核中开设6个并行线程,在另一个内核中开设2个并行线程,或者两个内核均开设3个,或者三个内核均开设2个等,本实施例中对此不作限定。
本实施例提供的存储器训练方法,通过在多个内核内开设并行线程,能够采用更少的轮次完成对多个Rank的训练,大大提高训练效率,缩短服务器首次开机的开机时间。
图5为本申请实施例提供的存储器训练设备的结构示意图。如图5所示,该存储器训练设备50包括:运行模块501以及训练模块502。
运行模块501,用于在处理器内核中运行多个并行线程。
训练模块502,用于在当前轮次的训练中,针对所述多个并行线程中的每个线程,通过所述线程对所述线程绑定的Rank进行训练;所述绑定的Rank为多个待训练Rank中的一个。
本申请实施例提供的存储器训练设备,通过开设多个并行的线程,多个线程并行运行,每个线程对绑定的Rank进行训练,可以同时训练多个Rank,大大提高了训练效率,减少服务器首次开机的时长。
在一些实施例中,所述处理器内核为单核;运行模块501具体用于:基于同步多线程技术,在所述处理内核中运行多个并行线程。
在一些实施例中,所述线程绑定的每个Rank的训练任务包括多个子任务;设备50还包括性能测试模块(未示出):用于针对每个子任务,对所述处理器内核进行性能测试,确定所述子任务的资源配置信息;所述资源配置信息包括所述子任务所需的资源类型和数量;训练模块502具体用于:确定所述线程当前进行的目标子任务;获取所述目标子任务的资源配置信息,根据所述目标子任务的资源配置信息,对所述线程绑定的Rank进行所述目标子任务对应的训练。
在一些实施例中,运行模块501用于:将处理器内核中的多个线程的优先级配置为相同优先级,并将所述多个线程的运行开关开启。
在一些实施例中,设备50还包括绑定模块(未示出),用于将所述多个Rank的信息进行封装,获得内存信息;根据所述内存信息,将所述多个并行线程与所述多个Rank进行一对一或一对多绑定。
在一些实施例中,所述处理器内核为多核;每个内核运行的线程数量小于或等于所述内核所支持的并行线程的最大数量。
在一些实施例中,所述处理器内核包括第一目标内核;所述第一目标内核包括队列单元;训练模块502具体用于:通过所述队列单元对所述第一目标内核运行的多个目标并行线程进行队列排序,获得所述多个目标并行线程分别对应的资源获取顺序;针对所述多个目标并行线程中的每个线程,根据所述资源获取顺序获取所述线程所需资源,并根据所述所需资源对所述线程绑定的Rank进行训练。
在一些实施例中,训练模块502还用于:若剩余待训练Rank的数量不为零,则通过所述多个并行线程进行下一轮次的训练,直至剩余待训练Rank的数量为零。
在一些实施例中,所述处理器内核为多核;训练模块502具体用于:若剩余待训练Rank的数量小于所述多个并行线程的数量,则从所述处理器内核的多个内核中选定当前轮次中运行线程数量小于或等于预设阈值的第二目标内核,并通过所述第二目标内核运行的线程进行下一轮次的训练。
本申请实施例提供的存储器训练设备,可用于执行上述的方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
图6为本申请实施例提供的存储器训练设备的硬件结构示意图,该设备可以是处理器、包括该处理器的终端设备或服务器。
设备60可以包括以下一个或多个组件:处理组件601,存储器602,电源组件603,多媒体组件604,音频组件605,输入/输出(I/O)接口606,传感器组件607,以及通信组件608。
处理组件601通常控制设备60的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件601可以包括一个或多个处理器609来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件601可以包括一个或多个模块,便于处理组件601和其他组件之间的交互。例如,处理组件601可以包括多媒体模块,以方便多媒体组件604和处理组件601之间的交互。
存储器602被配置为存储各种类型的数据以支持在设备60的操作。这些数据的示例包括用于在设备60上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器602可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件603为设备60的各种组件提供电力。电源组件603可以包括电源管理系统,一个或多个电源,及其他与为设备60生成、管理和分配电力相关联的组件。
多媒体组件604包括在所述设备60和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件604包括一个前置摄像头和/或后置摄像头。当设备60处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件605被配置为输出和/或输入音频信号。例如,音频组件605包括一个麦克风(MIC),当设备60处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器602或经由通信组件608发送。在一些实施例中,音频组件605还包括一个扬声器,用于输出音频信号。
I/O接口606为处理组件601和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件607包括一个或多个传感器,用于为设备60提供各个方面的状态评估。例如,传感器组件607可以检测到设备60的打开/关闭状态,组件的相对定位,例如所述组件为设备60的显示器和小键盘,传感器组件607还可以检测设备60或设备60一个组件的位置改变,用户与设备60接触的存在或不存在,设备60方位或加速/减速和设备60的温度变化。传感器组件607可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件607还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件607还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件608被配置为便于设备60和其他设备之间有线或无线方式的通信。设备60可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件608经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件608还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,设备60可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器602,上述指令可由设备60的处理器609执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,简称:ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上存储器训练设备执行的存储器训练方法。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (12)

1.一种存储器训练方法,其特征在于,包括:
在处理器内核中运行多个并行线程;
在当前轮次的训练中,针对所述多个并行线程中的每个线程,通过所述线程对所述线程绑定的内存列Rank进行训练;所述绑定的Rank为多个待训练Rank中的一个。
2.根据权利要求1所述的方法,其特征在于,所述处理器内核为单核;所述在处理器内核中运行多个并行线程,包括:
基于同步多线程技术,在所述处理内核中运行多个并行线程。
3.根据权利要求2所述的方法,其特征在于,所述线程绑定的每个Rank的训练任务包括多个子任务;所述方法还包括:
针对每个子任务,对所述处理器内核进行性能测试,确定所述子任务的资源配置信息;所述资源配置信息包括所述子任务所需的资源类型和数量;
所述通过所述线程对所述线程绑定的Rank进行训练,包括:
确定所述线程当前进行的目标子任务;
获取所述目标子任务的资源配置信息,根据所述目标子任务的资源配置信息,对所述线程绑定的Rank进行所述目标子任务对应的训练。
4.根据权利要求2所述的方法,其特征在于,所述在处理器内核中运行多个并行线程,包括:
将处理器内核中的多个线程的优先级配置为相同优先级,并将所述多个线程的运行开关开启。
5.根据权利要求2所述的方法,其特征在于,所述通过所述多个并行线程,分别对各自绑定的Rank进行训练之前,还包括:
将所述多个Rank的信息进行封装,获得内存信息;
根据所述内存信息,将所述多个并行线程与所述多个Rank进行一对一或一对多绑定。
6.根据权利要求1所述的方法,其特征在于,所述处理器内核为多核;每个内核运行的线程数量小于或等于所述内核所支持的并行线程的最大数量。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述处理器内核包括第一目标内核;所述第一目标内核包括队列单元;所述针对所述多个并行线程中的每个线程,通过所述线程对所述线程绑定的Rank进行训练,包括:
通过所述队列单元对所述第一目标内核运行的多个目标并行线程进行队列排序,获得所述多个目标并行线程分别对应的资源获取顺序;
针对所述多个目标并行线程中的每个线程,根据所述资源获取顺序获取所述线程所需资源,并根据所述所需资源对所述线程绑定的Rank进行训练。
8.根据权利要求1-6任一项所述的方法,其特征在于,所述在当前轮次的训练中,针对所述多个并行线程中的每个线程,通过所述线程对所述线程绑定的Rank进行训练;所述绑定的Rank为多个待训练Rank中的一个之后,还包括:
若剩余待训练Rank的数量不为零,则通过所述多个并行线程进行下一轮次的训练,直至剩余待训练Rank的数量为零。
9.一种存储器训练设备,其特征在于,包括:
运行模块,用于在处理器内核中运行多个并行线程;
训练模块,用于在当前轮次的训练中,针对所述多个并行线程中的每个线程,通过所述线程对所述线程绑定的Rank进行训练;所述绑定的Rank为多个待训练Rank中的一个。
10.一种存储器训练设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至8任一项所述的存储器训练方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至8任一项所述的存储器训练方法。
12.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8任一项所述的存储器训练方法。
CN202311064311.XA 2023-08-22 2023-08-22 存储器训练方法、设备、存储介质及程序产品 Active CN117076081B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311064311.XA CN117076081B (zh) 2023-08-22 2023-08-22 存储器训练方法、设备、存储介质及程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311064311.XA CN117076081B (zh) 2023-08-22 2023-08-22 存储器训练方法、设备、存储介质及程序产品

Publications (2)

Publication Number Publication Date
CN117076081A true CN117076081A (zh) 2023-11-17
CN117076081B CN117076081B (zh) 2024-09-03

Family

ID=88711258

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311064311.XA Active CN117076081B (zh) 2023-08-22 2023-08-22 存储器训练方法、设备、存储介质及程序产品

Country Status (1)

Country Link
CN (1) CN117076081B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102609312A (zh) * 2012-01-10 2012-07-25 中国科学技术大学苏州研究院 基于公平性考虑的短作业优先内存请求调度方法
US20180144136A1 (en) * 2016-11-22 2018-05-24 Advanced Micro Devices, Inc. Secure system memory training
CN110007970A (zh) * 2019-03-04 2019-07-12 湖北三江航天万峰科技发展有限公司 一种COMe板的内核启动时长优化方法
CN111966410A (zh) * 2020-07-31 2020-11-20 龙芯中科技术有限公司 启动处理方法、装置、电子设备及存储介质
CN112447259A (zh) * 2019-08-30 2021-03-05 三星电子株式会社 存储器设备的训练方法、电子设备和包括其的电子系统
CN112612608A (zh) * 2020-12-16 2021-04-06 海光信息技术股份有限公司 一种内存训练的方法及系统
CN113407247A (zh) * 2021-07-16 2021-09-17 上海金脉电子科技有限公司 基于多核处理器的双系统启动方法
CN113867803A (zh) * 2020-06-30 2021-12-31 华为技术有限公司 一种内存初始化装置、方法及计算机系统
CN114942831A (zh) * 2022-03-31 2022-08-26 上海阵量智能科技有限公司 处理器、芯片、电子设备及数据处理方法
CN114970395A (zh) * 2022-06-10 2022-08-30 青岛大学 基于二维圣维南方程的大规模流体模拟方法及系统

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102609312A (zh) * 2012-01-10 2012-07-25 中国科学技术大学苏州研究院 基于公平性考虑的短作业优先内存请求调度方法
US20180144136A1 (en) * 2016-11-22 2018-05-24 Advanced Micro Devices, Inc. Secure system memory training
CN110007970A (zh) * 2019-03-04 2019-07-12 湖北三江航天万峰科技发展有限公司 一种COMe板的内核启动时长优化方法
CN112447259A (zh) * 2019-08-30 2021-03-05 三星电子株式会社 存储器设备的训练方法、电子设备和包括其的电子系统
CN113867803A (zh) * 2020-06-30 2021-12-31 华为技术有限公司 一种内存初始化装置、方法及计算机系统
CN111966410A (zh) * 2020-07-31 2020-11-20 龙芯中科技术有限公司 启动处理方法、装置、电子设备及存储介质
CN112612608A (zh) * 2020-12-16 2021-04-06 海光信息技术股份有限公司 一种内存训练的方法及系统
CN113407247A (zh) * 2021-07-16 2021-09-17 上海金脉电子科技有限公司 基于多核处理器的双系统启动方法
CN114942831A (zh) * 2022-03-31 2022-08-26 上海阵量智能科技有限公司 处理器、芯片、电子设备及数据处理方法
CN114970395A (zh) * 2022-06-10 2022-08-30 青岛大学 基于二维圣维南方程的大规模流体模拟方法及系统

Also Published As

Publication number Publication date
CN117076081B (zh) 2024-09-03

Similar Documents

Publication Publication Date Title
KR101798369B1 (ko) 휴대용 디바이스에서 동기적 태스크 디스패치를 위한 시스템 및 방법
CN109634063B (zh) 曝光方法、电子装置与主从式系统
US8819345B2 (en) Method, apparatus, and computer program product for inter-core communication in multi-core processors
KR101660659B1 (ko) 멀티-스레딩된 프로세싱 시스템에서의 서브루틴들의 실행
US9619289B2 (en) Workload optimized server for intelligent algorithm trading platforms
US9043806B2 (en) Information processing device and task switching method
US20170168727A1 (en) Single-stage arbiter/scheduler for a memory system comprising a volatile memory and a shared cache
WO2011121730A1 (ja) マルチコアプロセッサシステム、制御プログラム、および制御方法
RU2643499C2 (ru) Управление памятью
US10628352B2 (en) Heterogeneous multi-processor device and method of enabling coherent data access within a heterogeneous multi-processor device
US20240320009A1 (en) Data access method and apparatus, and non-transient computer-readable storage medium
US9715392B2 (en) Multiple clustered very long instruction word processing core
CN111258935A (zh) 数据传输装置和方法
EP3149594B1 (en) Method and apparatus for cache access mode selection
CN115576645B (zh) 一种虚拟处理器调度方法、装置、存储介质及电子设备
WO2024198748A1 (zh) 数据处理方法、系统、芯片及终端
US20140325183A1 (en) Integrated circuit device, asymmetric multi-core processing module, electronic device and method of managing execution of computer program code therefor
CN117076081B (zh) 存储器训练方法、设备、存储介质及程序产品
CN106502740B (zh) 应用安装方法和装置
CN110741359B (zh) 改变共享总线上集成电路的从属标识的系统和方法
US20220206561A1 (en) Application control method and electronic device
KR20140099295A (ko) 파이프라인 이미지 프로세싱 시퀀서
US20220083416A1 (en) Multi-thread exit method and mobile terminal
JP5017784B2 (ja) プロセッサ及びこのプロセッサ適用される割込み処理制御方法
CN117311813A (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