KR20190070915A - 분산된 gpu들을 위해 데이터 로컬리티를 개선하기 위한 매커니즘 - Google Patents

분산된 gpu들을 위해 데이터 로컬리티를 개선하기 위한 매커니즘 Download PDF

Info

Publication number
KR20190070915A
KR20190070915A KR1020197007385A KR20197007385A KR20190070915A KR 20190070915 A KR20190070915 A KR 20190070915A KR 1020197007385 A KR1020197007385 A KR 1020197007385A KR 20197007385 A KR20197007385 A KR 20197007385A KR 20190070915 A KR20190070915 A KR 20190070915A
Authority
KR
South Korea
Prior art keywords
data
workgroups
workload
partition
processing unit
Prior art date
Application number
KR1020197007385A
Other languages
English (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 KR20190070915A publication Critical patent/KR20190070915A/ko

Links

Images

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/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L67/2842
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • 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
    • Y02D10/22
    • Y02D10/36

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

분산된 프로세싱 유닛에 대한 데이터 로컬리티를 개선하기 위한 수단을 실행하기 위한 시스템, 장치 및 방법이 개시된다. 시스템은 복수의 분산된 프로세싱 유닛(가령, GPU) 및 메모리 디바이스를 포함한다. 각각의 프로세싱 유닛은 하나 이상의 로컬 메모리 디바이스에 연결된다. 시스템은 데이터 로컬리티와 데이터 공유를 최대화하는 것에 기초하여, 어떻게 작업량을 복수의 작업그룹으로 파티션하는지 결정한다. 시스템은 로컬 메모리 액세스를 최소화하는 것과 원격 메모리 액세스를 최대화하는 것에 기초하여, 복수의 작업그룹의 어느 서브세트를 복수의 프로세싱 유닛의 각각의 프로세싱 유닛으로 디스패치하는지 결정한다. 또한, 시스템은 작업그룹의 패턴을 공유하는 데이터에 기초하여, 어떻게 데이터 버퍼(들)를 파티션하는지를 결정한다. 시스템은 로컬 메모리 액세스를 최대화하고 원격 메모리 액세스를 최소화하기 위해, 데이터 버퍼(들)의 별도 부분을 각각의 프로세싱 유닛으로 맵핑한다.

Description

분산된 GPU들을 위해 데이터 로컬리티를 개선하기 위한 매커니즘
본 발명은 프로세싱 유닛에 관한 발명이다.
본 발명은 미국 에너지부에 의해 수상된 주요 계약 번호 DE-AC52-07NA27344, 하위계약 번호 B609201하에서(로렌스 리버모어 국립 연구소와 함께 패스트포워드-2 노드 아키텍쳐(NA) 프로젝트) 정부 지원으로 이루어졌다. 정부는 본 발명의 특정한 권리를 가진다.
관련된 기술의 설명
복수의 분산된 프로세싱 유닛(가령, 그래픽 프로세싱 유닛(GPU))은 소프트웨어 애플리케이션을 병렬로 실행하는데 사용될 수 있다. 예를 들어, 대량 GPU는 복수의 더 작은 GPU 칩을 연결함에 의해 실행될 수 있다. 각각의 GPU 칩이 관련된 로컬 메모리 디바이스를 가진 시스템에서, 레이턴시, 대역폭 및 메모리 액세스의 에너지는, 액세스가 로컬 또는 원격 메모리 디바이스인지에 따라 상이하다. 대량 GPU를 복수의 더 작은 GPU 칩으로 실행하는 것이 더 작은 다이의 개선된 수율 때문에, 제조 비용을 감소시키는 반면, 분산된 프로세싱 유닛에서 기존 소프트웨어 애플리케이션을 실행하는 것은 빈번한 원격 메모리 액세스 때문에, 증가된 메모리 액세스 레이턴시를 야기할 수 있다.
이하의 설명에서, 여러 구체적인 세부사항이 제시되어서, 본원에 제시된 방법과 수단의 완벽한 이해를 제공한다. 그러나, 기술 분야의 당업자는, 다양한 실시예가 이들 구체적인 세부사항 없이 실시될 수 있다는 것을 인식해야 한다. 일부 예시에서, 잘-알려진 구조, 구성요소, 신호, 컴퓨터 프로그램 명령어 및 테크닉은, 본원에서 기술된 접근법을 모호하게 만드는 것을 피하기 위해, 자세히 나타내지 않는다. 설명의 간결성과 명료성을 위해, 도면에 도시된 요소는 반드시 스케일대로 도시될 필요가 없다는 것을 인식할 것이다. 예를 들어, 일부 요소의 치수는 다른 요소에 비해 과장될 수 있다.
복수의 분산된 프로세싱 유닛으로 디스패치를 위해, 작업그룹과 데이터를 파티션하기 위한 다양한 시스템, 장치, 방법 및 컴퓨터-판독가능한 매체가 개시된다. 일 실시예에서, 시스템은 데이터 로컬리티와 데이터 공유를 최대화하는 것에 기초하여, 어떻게 작업량을 복수의 작업그룹으로 파티션하는지 결정하도록 구성된다. 일 실시예에서, 시스템은 복수의 분산된 프로세싱 유닛과 복수의 메모리 디바이스를 포함한다. 일 실시예에서, 복수의 프로세싱 유닛의 각각의 프로세싱 유닛은 복수의 메모리 디바이스의 하나 이상의 로컬 메모리 디바이스에 연결된다. 일 실시예에서, 분산된 프로세싱 유닛은 그래픽 프로세싱 유닛(GPU)이다. 또 다른 실시예에서, 분산된 프로세싱 유닛은 프로세싱-인-메모리(PIM) 디바이스이다. 다른 실시예에서, 분산된 프로세싱 유닛은 임의의 다양한 다른 타입의 프로세서나 컴퓨팅 디바이스일 수 있다.
일 실시예에서, 시스템은, 로컬 메모리 액세스를 최대화하고 원격 메모리 액세스를 최소화하는 것에 기초하여, 복수의 작업그룹의 어느 서브세트가 복수의 프로세싱 유닛의 각각의 프로세싱 유닛으로 디스패치되는지를 결정하도록 구성된다. 또한, 시스템은 작업그룹의 데이터 공유 패턴과 데이터 액세스 패턴에 기초하여, 어떻게 데이터 버퍼(들)를 파티션하는지 결정하도록 구성된다. 그리고 나서, 시스템은 로컬 메모리 액세스를 최대화하고, 원격 메모리 액세스를 최소화하기 위해, 데이터 버퍼(들)의 별도 부분을 각각의 프로세싱 유닛으로 맵핑한다.
일 실시예에서, 시스템은 작업량의 차원수에 기초하여, 작업량을 복수의 작업그룹으로 파티션하도록 구성된다. 시스템은 N개의 연속적인 작업그룹을 주어진 프로세싱 유닛으로 디스패치할 수 있고, N은 양의 정수이다. 일 실시예에서, N의 크기는, 시스템 내의 프로세싱 유닛의 수에 의해, 작업량 또는 계산 커널 내의 작업그룹의 전체 수를 나눔에 의해, 결정될 수 있다. 또한, 시스템은 작업량과 동일한 차원수를 따라, 하나 이사의 버퍼를 파티션할 수 있다.
또 다른 실시예에서, 시스템은 데이터의 스레숄드 양을 공유하는 작업그룹을 동일한 프로세싱 유닛으로 디스패치하도록 구성된다. 또한, 이들 상이한 데이터세트가 동일한 데이터 파티션 내에 위치한다면, 심지어 이들 작업그룹이 실제로 데이터를 공유하거나 데이터의 스레숄드양을 공유하지 않음에도 불구하고, 시스템은 상이한 데이터세트에 액세스하는 작업그룹을 동일한 프로세싱 유닛으로 디스패치할 수 있다. 이러한 실시예에서, 시스템은 복수의 작업그룹의 데이터 공유 패턴, 데이터 액세스 패턴, 및/또는 데이터 로컬리티 패턴을 분석한다. 실시예에 의존하여, 데이터 공유 패턴, 데이터 액세스 패턴, 및/또는 데이터 로컬리티 패턴은 런-타임, 컴파일-타임에서, 또는 작업량의 실행 이전에 프로파일링을 통해 결정될 수 있다. 다양한 패턴을 분석한 이후에, 시스템은 어느 작업그룹이 데이터의 스레숄드 양을 공유하는지, 및/또는 동일한 데이터 파티션에 액세스하는지 결정할 수 있다. 그리고 나서, 시스템은 데이터의 스레숄드 양을 공유하고, 및/또는 동일한 데이터 파티션에 액세스하는 작업그룹을 동일한 프로세싱 유닛으로 디스패치할 수 있다.
본원에 기술된 방법과 수단의 이점은 첨부 도면과 함께 이하의 설명을 참조함에 의해, 더 잘 이해될 수 있다.
도 1은 컴퓨팅 시스템의 일 실시예의 블록도이다.
도 2는 컴퓨팅 시스템의 또 다른 실시예의 블록도이다.
도 3은 커맨드 프로세서의 일 실시예의 블록도이다.
도 4는 데이터 버퍼 및 작업그룹 파티셔닝의 일 실시예의 도면을 나타낸다.
도 5는 데이터 버퍼 및 작업그룹 파티셔닝의 또 다른 실시예의 도면을 나타낸다.
도 6은 작업량 및 데이터 버퍼를 파티셔닝하기 위한 방법의 일 실시예를 나타내는 일반화된 순서도이다.
도 7은 작업량 및 데이터 버퍼를 파티셔닝하기 위한 방법의 또 다른 실시예를 나타내는 일반화된 순서도이다.
도 8은 작업량을 데이터의 스레숄드 양을 공유하는 작업그룹의 서브세트로 파티셔닝하기 위한 방법의 일 실시예를 나타내는 일반화된 순서도이다.
이제, 도 1을 참조하면, 컴퓨팅 시스템(100)의 일 실시예의 블록도가 도시된다. 컴퓨팅 시스템(100)은 그래픽 프로세싱 유닛(GPU)(115A-N), 메모리(125A-N), 패브릭(120) 및 CPU(130)를 포함한다. 또한, 컴퓨팅 시스템(100)은 도면을 모호하게 만드는 것을 피하기 위해, 도 1에 도시되지 않는 다른 구성요소를 포함할 수 있다. GPU(115A-N)는 임의의 수와 타입의 프로세싱 유닛(가령, CPU, 필드 프로그래머블 게이트 어레이(FPGA), 주문자 응용 집적 회로(ASIC), 디지털 신호 프로세서(DSP), 구체적인 회로, 가속도계)를 대표한다. 각각의 GPU(115A-N)는 대응되는 로컬 메모리(125A-N)에 연결된다. GPU(115A-N)는 임의의 다양한 타입의 상호접속부, 버스 또는 네트워크 테크놀로지(가령, 주변 구성요소 상호접속(PCI) 버스, PCI-확장형(PCI-X) 버스, PCIE(PCI 고속) 버스)를 사용하여 함께 연결될 수 있다. 일 실시예에서, 복수의 GPU(115A-N)는 통합된 프로세서로 관리될 수 있다. 도 1에 명시적으로 도시되지 않지만, 시스템(100)은 GPU(115A-N) 및 코어(135A-N)에 내부에 있는 하나 이상의 캐시 메모리를 포함할 수도 있다.
각각의 메모리(125A-N)는 임의의 수와 타입의 메모리 디바이스를 대표한다. 일 실시예에서, 각각의 메모리(125A-N)는 대응되는 GPU(115A-N)과 사용을 위한 랜덤 액세스 메모리(RAM)이다. 실시된 RAM은 정적 RAM(SRAM), 동적 RAM(DRAM), 저항성 RAM(ReRAM), 상변화 RAM(PCRAM) 또는 임의의 다른 휘발성 또는 비-휘발성 RAM일 수 있다. 각각의 메모리(125A-N)를 실행하는데 사용될 수 있는 DRAM의 타입은 더블 데이터 레이트(DDR) DRAM, DDR2 DRAM, DDR3 DRAM 등을 포함한다(그러나 이에 제한되지 않음). 또한, 다른 타입의 메모리(125A-N)가 시스템(100)에서 사용될 수 있는데, 이는 고-밀도 DRAM, eDRAM, 3D 스택형 메모리(가령, 스택형 DRAM), 인터포져-기반 집적된 메모리, 멀티-칩 모듈(MCM), 마그네토-광학 저장 매체, 리드 온리 메모리(ROM), 동기식 DRAM(SDRAM), 더블 데이터 레이트 SDRAM(DDR SDRAM), 상-변화 메모리, 스핀-전달 토크 자기 RAM, 멤리스토, 확장형 데이터 출력(EDO) RAM, 램버스 RAM, 램버스 DRAM, 삭제가능한 프로그래머블 메모리(EEPROM), 고체-상태 메모리, 하드 디스크 드라이브, 광학 저장 매체 등을 포함한다. GPU(115A-N) 상에서의 작업그룹 실행에 있어서, 단단히 연결된 로컬 메모리에 액세스하는 메모리 요청은, 원격 메모리에 액세스하는 메모리 요청보다 더 낮은 레이턴시와 더 낮은 전력 소비로 수행될 수 있다. 주어진 GPU(115A-N)에 대한 원격 메모리는 다른 GPU(115A-N) 중 하나에 연결된 메모리 디바이스로 정의된다.
패브릭(120)은 실시예에 의존하여, 임의의 타입의 통신 패브릭이나 상호접속부일 수 있다. 예를 들어, 패브릭(120)은 브리지, 노스브리지, 사우스브리지, 백플레인 등일 수 있다. CPU(130)는 임의의 수와 타입의 프로세서 코어의 대표인 코어(135A-N)을 포함한다. 또한, CPU(130)는 시스템(100)의 호스트라고 할 수 있다. 다른 실시예에서, 시스템(100)은 하나보다 많은 CPU를 포함하여서, 하나 보다 많은 호스트를 포함할 수 있다. CPU(130)의 코어(135A-N)는 운영 시스템과 같은 시스템(100)의 주요 제어 소프트웨어를 실행하도록 구성된다. 일반적으로, 사용하는 동안, CPU(130)에 의해 실행되는 소프트웨어는 시스템(100)의 다른 구성요소를 제어하여, 시스템(100)의 원하는 기능을 실현할 수 있다. 또한, CPU(130)는 애플리케이션 프로그램과 같은 다른 소프트웨어를 실행할 수 있다. 애플리케이션 프로그램은 사용자 기능을 제공할 수 있고, 더 낮은 레벨 디바이스 제어를 위한 운영 시스템에 의존할 수 있다. 일 실시예에서, CPU(130) 상에서 실행되는 소프트웨어는 작업그룹을 GPU(115A-N)에 디스패치하도록 구성된다. 추가적으로, CPU(130) 상에서 실행되는 소프트웨어는 데이터 버퍼를 파티션하고, 파티션들을 GPU(115A-N)으로 맵핑하도록 구성되어서, GPU(115A-N) 상에서 실행되는 작업그룹에 의해, 로컬 메모리 액세스를 최대화하고, 원격 메모리 액세스를 최소화한다.
일 실시예에서, CPU(130) 상에서 실행되는 소프트웨어는 복수의 분산된 GPU(115A-N)에 걸쳐 작업그룹의 디스패치를 제어하도록 구성된다. 또 다른 실시예에서, 하나 이상의 다른 프로세서(가령, GPU(115A-N)) 상에서 실행되는 소프트웨어는 복수의 분산된 GPU(115A-N)에 걸쳐 작업그룹의 디스패치를 제어하도록 구성된다. 추가적인 실시예에서, 하드웨어(가령, 필드 프로그래머블 게이트 어레이(FPGA), 응용 주문형 집적 회로(ASIC))는 복수의 분산된 GPU(115A-N)에 걸쳐 작업그룹의 디스패치를 제어하도록 구성된다. 다른 실시예에서, 하드웨어 및/또는 소프트웨어의 임의의 적절한 조합은 복수의 분산된 GPU(115A-N)에 걸쳐 작업그룹의 디스패치를 제어하도록 구성된다.
일 실시예에서, 시스템(100)의 소프트웨어 및/또는 하드웨어는, 작업량의 차원수에 기초하여, 작업량을 복수의 작업그룹으로 파티션하도록 구성된다. 예를 들어, 2-차원 작업량(즉, 2-차원 도메인 또는 데이터 세트에 기초한 작업량)에 대하여, 작업량은, 다른 차원은 고정되게 유지하면서, 작업량의 일 차원을 따라 작업그룹으로 파티션될 수 있다. 따라서, 2-차원 작업량에 대하여, 작업량은 동일한 컬럼으로부터의 작업그룹의 세트로 파티션될 수 있거나, 작업량은 동일한 로우로부터의 작업그룹의 세트로 파티션될 수 있다. 3-차원 작업량(즉, 3차원 도메인 또는 데이터 세트에 기초한 작업량)에 대하여, 작업량은 다른 두 차원은 고정되게 유지하면서, 작업량의 일 차원을 따라 작업그룹의 세트로 파티션될 수 있다. 작업량에 의해 소비된 데이터 버퍼는 작업량과 동일한 차원수를 따라 파티션될 수 있다.
본원에서 사용된 바와 같이, 용어 "커널"은 프로그램에서 선언된 기능으로 정의될 수 있다. "커널"은 복수의 프로세싱 요소 상에서 동시에 실행될 수 있다. 본원에서 사용된 바와 같이, 용어 "작업량"은 n-차원 입력 데이터에 대해 동작하는 하나 이상의 기능을 포함하는 코드의 섹션을 실행하도록 수행되는 작업의 전체 양으로 정의된다. 본원에서 사용된 바와 같이, 용어 "작업-아이템"은 커맨드에 의해 프로세싱 유닛에 대해 언급된 커널의 병렬 실행의 집합 중 하나로 정의된다. 작업-아이템은 프로세싱 유닛 상에서 실행되는 작업그룹의 일부로서, 하나 이상의 프로세싱 요소에 의해 실행될 수 있다. 본원에서 사용된 바와 같이, 용어 "작업그룹"은 단일 프로세싱 유닛 상에서 실행되는 관련된 작업-아이템의 집합으로 정의된다.
시스템(100)은, 개인용 컴퓨터 시스템, 데스크탑 컴퓨터, 랩탑 또는 노트북 컴퓨터, 수퍼컴퓨터, 모바일 디바이스 태블릿, 폰, 스마트폰, 메인프레임 컴퓨터 시스템, 휴대용 컴퓨터, 워크스테이션, 네트워크 컴퓨터, 소비자 디바이스, 서버, 파일 서버, 애플리케이션 서버, 저장 서버, 웹 서버, 클라우드 컴퓨팅 서버 또는 일반적인 임의의 타입의 컴퓨팅 시스템이나 디바이스를 포함하지만 이에 제한되지 않는, 임의의 다양한 타입의 컴퓨터 시스템 또는 컴퓨팅 디바이스에 해당할 수 있다. 시스템(100)의 구성요소의 개수는 실시예마다 가변할 수 있다는 것에 유의한다. 도 1에 도시된 개수보다 더 많거나 더 적은 각각의 구성요소/하위구성요소일 수 있다. 시스템(100)은 도 1에 도시되지 않은 다른 구성요소를 포함할 수 있다는 것도 유의한다. 추가적으로, 다른 실시예에서, 시스템(100)은 도 1에 도시된 다른 방법으로 구조화될 수 있다.
이제 도 2로 되돌아오면, 컴퓨팅 시스템(200)의 또 다른 실시예의 블록도가 도시된다. 컴퓨팅 시스템(200)은 분산된 프로세싱 유닛에 대한 데이터 로컬리티를 개선하기 위해, 본원에서 기술된 테크닉을 실행할 수 있는 시스템의 또 다른 예시이다. 도 2에 도시된 바와 같이, 시스템(200)은 커맨드 프로세서(205)에 연결된 복수의 컴퓨트 스택(210A-N)을 포함한다. 컴퓨트 스택(210A-N)은 임의의 수와 타입의 컴퓨트 스택을 대표한다.
일 실시예에서, 각각의 컴퓨트 스택(210A-N)은 로직 층 및 복수의 메모리 층을 포함한다. 일 실시예에서, 컴퓨트 스택(210A-N)의 메모리 층은 다이-스택형 동적 랜덤-액세스 메모리(DRAM)으로 실시될 수 있다. 일 실시예에서, 각각의 컴퓨트 스택(210A-N)은, 메모리 디바이스(들)와 직접 통합된 프로세싱 인 메모리(PIM) 디바이스에 연결된다. PIM 아키텍쳐는 메모리내에 또는 근처에 계산 능력을 추가하는 개념이다. 이러한 아키텍쳐의 이익은 프로세싱 디바이스와 메모리 체계 간의 데이터 이동과 관련된 감소된 레이턴시와 에너지 소비를 포함한다. 예를 들어, 각각의 컴퓨트 스택(210A-N)의 계산 능력은 메모리 다이로 수직 스택된 별도의 로직 다이 상에서 실행될 수 있다. 또한, 본원에 기술된 방법과 수단은, 근처의 메모리 계산 능력이 메모리 다이 상에서 직접 실행되는 경우에도 적용가능하다.
일 실시예에서, 각각의 컴퓨트 스택(210A-N)은, 하나 이상의 메모리 칩으로 3D-스택된 로직 칩 상의 프로세싱 유닛을 포함하는 3차원 집적 회로(3D IC)이다. 일부 경우에, 메모리 칩으로 집적된 프로세싱 유닛은 완전히-프로그램가능한 프로세서이다. 메모리 다이는, DRAM, 정적 랜덤-액세스 메모리(SRAM), 리드-온리 메모리(ROM) 등과 같은 메모리 회로를 실행하는 스택형 메모리 디바이스를 포함할 수 있다. 로직 다이는, 스택형 메모리 다이의 메모리 회로에 액세스하기 위한 하드-와이어드 로직 및 라우팅 로직을 실행할 수 있다. 각각의 메모리 모듈은 임의의 다양한 3D 집적된 회로 제작 프로세스를 사용하여 제작될 수 있다. 일 실시예에서, 로직 다이 및 메모리 다이는, 능동 디바이스 및 활성 표면에 형성된 하나 이상의 금속 라우팅 층을 가진 별도의 기판(가령, 벌크 실리콘)이고 함께 스택되도록 실시될 수 있다. 이러한 접근법은 웨이퍼-온-웨이퍼 프로세스를 포함할 수 있는데, 다이의 매트릭스를 포함하는 웨이퍼는 제작되고 씨닝되며, 쓰루-실리콘 비아(TSV)는 벌크 실리콘을 통해 에칭된다. 그리고 나서, 복수의 웨이퍼는 스택되어서, 설명된 층 구성(가령, 3개의 메모리 층을 위해 메모리 회로 다이를 포함하는 3개의 웨이퍼의 스택 및 프로세서 층을 위해 로직 다이를 포함하는 웨이퍼)을 달성하고, 정렬되고, 그리고 나서 열압축을 통해 결합된다. 결과로 나온 스택된 웨이퍼 세트는 싱귤레이트되어서, 개개의 3D IC 디바이스로 분리시킨다. 다른 실시예에서, 컴퓨트 스택(210A-N)을 제작하기 위한 다른 테크닉이 사용될 수 있다. 여전히 다른 실시예에서, 프로세싱 유닛은 비-스택형 구성으로 하나 이상의 로컬 메모리 디바이스에 연결될 수 있다. 이들 및 다른 실시예가 가능하고 고려된다.
커맨드 프로세서(205)는 임의의 다양한 타입의 상호접속 프로토콜을 사용하여, 컴퓨트 스택(210A-N)에 연결된다. 또한, 컴퓨터 스택들(210A-N)은 임의의 다양한 타입의 상호접속 프로토콜을 사용하여, 서로 연결될 수 있다. 일 실시예에서, 커맨드 프로세서(205)는, 작업량을 복수의 작업그룹으로 파티션하고, 작업그룹을 분산된 컴퓨트 스택(210A-N)으로 디스패치하고, 데이터 버퍼를 복수의 데이터 파티션으로 파티션하고, 데이터 패티션을 분산된 컴퓨트 스택(210A-N)으로 맵핑하도록 구성된다. 또 다른 실시예에서, 하나 이상의 컴퓨트 스택(210A-N)은 코드를 실행하도록 구성될 수 있거나, 이들 기능을 수행하기 위해 커맨드 프로세서(205)의 로직을 포함할 수 있다.
이제, 도 3을 참조하면, 커맨드 프로세서(300)의 일 실시예의 블록도가 도시된다. 일 실시예에서, 커맨드 프로세서(300)는 디스패치 로직(310), 작업그룹 데이터 공유 패턴 로직(315), 디스패치 테이블(320), 파티셔닝 로직(325) 및 룩업 테이블(330)을 포함한다. 디스패치 로직(310), 작업그룹 데이터 공유 패턴 로직(315) 및 파티셔닝 로직(325)은 하드웨어 및/또는 소프트웨어의 임의의 조합을 사용하여 실행될 수 있다는 것에 유의한다. 다른 실시예에서, 커맨드 프로세서(300) 내에 도시된 둘 이상의 로직 유닛은 단일 유닛으로 함께 결합될 수 있다는 것도 유의한다. 일 실시예에서, 커맨드 프로세서(300) 내에 도시된 로직은 도 2의 커맨드 프로세서(205) 내에 포함될 수 있다. 또 다른 실시예에서, 커맨드 프로세서(300) 내에 도시된 로직은 도 1의 CPU(130) 내에 포함될 수 있다.
일 실시예에서, 파티셔닝 로직(325)은 작업량을 복수의 작업그룹으로 파티셔닝하도록 구성된다. 일 실시예에서, 디스패치 로직(310)은 작업그룹을 시스템(가령, (도 1의) 시스템(100), (도 2의) 시스템(200))의 다양한 분산된 프로세싱 유닛(미도시)으로 디스패치하도록 구성된다. 일 실시예에서, 분산된 프로세싱 유닛은 GPU이다. 또 다른 실시예에서, 분산된 프로세싱 유닛은 PIM이다. 다른 실시예에서, 분산된 프로세싱 유닛은 다른 타입의 프로세싱 유닛일 수 있다. 작업그룹 파티셔닝이 결정되면, 디스패치 테이블(320)이 업데이트된다. 일 실시예에서, 디스패치 테이블(320)은 비트 벡터로 실행되어서, 어느 작업그룹 ID가 커널 기반으로 프로세싱 유닛으로 맵핑되는지 명시한다. 데이터-독립적 작업그룹 파티셔닝 스킴이 작업그룹을 프로세싱 유닛으로 디스패치하는데 사용된다면, 수학 함수(가령, N 개의 연속적인 작업그룹을 각각의 프로세싱 유닛으로 디스패치하기 위해, floor(workgroup_ID/N) mod (number_of_processing_units))가 디스패치 테이블(320) 대신에 사용될 수 있다.
일 실시예에서, 작업그룹 데이터 공유 패턴 로직(315)은, 주어진 커널의 다양한 작업그룹이, 주어진 커널에 의해 프로세스된 데이터 버퍼에 액세스하고 공유하는지 결정하도록 구성된다. 일 실시예에서, 작업그룹 데이터 공유 패턴 로직(315)은 각각의 작업그룹에 의해 액세스된 어드레스와 데이터를 분석하여, 공유된 데이터의 스레숄드 양에 액세스하는 작업그룹의 세트를 식별한다. 또 다른 실시예에서, 작업그룹 데이터 공유 패턴 로직(315)은, 작업그룹의 이들 세트가 동일한 데이터를 실제로 공유하지 않더라도, 동일한 파티션에 액세스하는 작업그룹의 세트를 식별한다. 예를 들어, 제1 작업그룹은 제1 데이터 파티션 내의 데이터의 제1 부분에 액세스하고, 제2 작업 그룹은 제1 데이터 파티션 내의 데이터의 제2 부분에 액세스할 수 있으며, 제1 부분과 제2 부분은 오버랩되지 않는다. 그러나, 제1 작업그룹 및 제2 작업그룹은 함께 그룹되고, 제1 데이터 파티션을 저장하는 프로세싱 유닛으로 디스패치된다면, 이는 제1 작업그룹 및 제2 작업그룹에 대해 수행되는 높은 수의 로컬 메모리 액세스를 야기할 것이다. 분석을 수행한 이후에, 작업그룹 데이터 공유 패턴 로직(315)은, 어느 작업그룹이 함께 그룹되어야하는지의 표시를 디스패치 로직(310)으로 운반한다. 그리고 나서, 디스패치 로직(310)은, 작업그룹이 공유된 데이터의 스레숄드 양에 액세스하거나, 동일한 데이터 파티션 내의 상이한 데이터에 액세스할 때, 작업그룹을 동일한 프로세싱 유닛으로 디스패치할 수 있다.
일 실시예에서, 파티셔닝 로직(325)은 데이터 버퍼를, 분산된 프로세싱 유닛의 상이한 프로세싱 유닛으로 맵핑될 수 있는 파티션들로 파티션하도록 구성된다. 파티셔닝 로직(325)은 어떻게 데이터 버퍼가 액세스되고, 다양한 작업그룹에 의해 공유되는지 결정할 수 있고, 그리고 나서, 파티셔닝 로직(325)은 데이터 공유, 데이터 액세스 및 작업그룹의 데이터 로컬리티 패턴에 기초하여 데이터 버퍼를 파티션할 수 있다. 복수의 커널이 동일한 데이터 버퍼에 액세스한다면, 하나의 커널의 액세스 패턴은 데이터 파티셔닝을 결정하는데 사용될 수 있다. 사용되는 커널은, 랜덤하게 선택되거나, 실행 시간에 기초하여 선택되거나, 데이터-액세스 패턴을 결정하는 용이성이나 다른 기준에 기초하여 선택될 수 있다. 또한, 파티셔닝 로직(325)은, 로컬 메모리 액세스를 최대로하고, 원격 메모리 액세스를 최소화하기 위해, 데이터 버퍼의 부분을 상이한 프로세싱 유닛으로 맵핑하도록 구성된다.
일 실시예에서, 데이터 맵핑 정보는 룩업 테이블(330) 내에 유지된다. 일 실시예에서, 룩업 테이블(330) 내의 데이터 맵핑 정보는, 새로운 물리적 어드레스가 할당되고, 구체적인 프로세싱 유닛의 메모리에 맵핑될 때, 운영 시스템(OS)에 의해 업데이트된다. 룩업 테이블(330)은 중앙화된 테이블일 수 있거나, 각각의 프로세싱 유닛은 룩업 테이블(330)의 로컬 복사본을 유지할 수 있다. 일 실시예에서, 물리적 어드레스의 복수의 비트는 룩업 테이블(330) 내로 인덱스하는데 사용된다. 사용되는 실제 비트의 수는 실시예마다 가변될 수 있다. 사용된 구체적인 비트는 실시예마다 가변될 수 있고, 캐시 라인, 페이지 크기, 복수의 페이지 등과 같은 데이터-파티셔닝 입도에 의존할 수 있다. 테이블 액세스가 미스이면(즉, 찾는 아이템이 테이블 내에 존재하지 않음), 디폴트 어드레스 맵핑이 사용될 수 있다. 히트(즉, 찾는 아이템이 테이블 내에 존재함)는, 커널에 의해 액세스된 데이터 버퍼에 속하는 어드레스 및 그것의 파티셔닝 및 프로세싱 유닛으로의 맵핑이 룩업 테이블(330)에 알려져 있다는 것을 나타낸다. 테이블 엔트리 내에 저장된 맵핑 정보는 데이터 로케이션을 찾는데 사용될 수 있다. 룩업 테이블(330) 내의 각각의 엔트리는 GPU ID, 메모리 ID, 또는 맵핑된 GPU ID 또는 메모리 ID를 계산하기 위한 어드레스에 기초한 수학 함수를 포함할 수 있다.
이제 도 4로 돌아오면, 데이터 버퍼 및 작업그룹 파티셔닝의 일 실시예의 도면이 도시된다. 시스템(가령, (도 1의) 시스템(100), (도 2의) 시스템(200))은 대응되는 로컬 메모리 디바이스를 가진 복수의 분산된 프로세싱 유닛을 포함할 수 있다. 일 실시예에서, 분산된 프로세싱 유닛은 단일 로지컬 프로세싱 유닛으로 다루어질 수 있다. 도 4에 도시된 예시에서, 시스템은 8개의 분산된 프로세싱 유닛을 가지는 것으로 가정한다. 이는 일 실시예를 나타낸다고 이해해야 한다. 다른 실시예에서, 시스템은 다른 수의 분산된 프로세싱 유닛을 가질 수 있다.
시스템은 하나 이상의 데이터 버퍼(405A-B) 상에서 작동하는 커널을 실행할 수 있다. 데이터 버퍼(405A-B)는 파티션되고, 상이한 프로세싱 유닛으로 맵핑되는 데이터 버퍼의 예시이다. 도 4에 도시된 바와 같이, 데이터 버퍼(405A-B)는 8개의 파티션으로 파티션되고, 시스템은 8개의 분산된 프로세싱 유닛을 갖느다고 가정한다. 다른 실시예에서, 데이터 버퍼(405A-B)는 시스템 내의 분산된 프로세싱 유닛의 개수에 의존하여, 다른 수의 버퍼 파티션으로 파티션될 수 있다. 또한, 다른 실시예에서, 다른 수의 데이터 버퍼가 파티션될 수 있다.
작업그룹(410)은 임의의 수와 타입의 작업그룹을 대표한다. 일반적으로 말하면, 데이터 버퍼(405A-B) 및 작업그룹(410)은 M개의 파티션을 가질 수 있는데, M은 양의 정수이다. 일 실시예에서, M은 프로세싱 유닛의 개수에 의해 나누어진 작업그룹의 전체 개수와 동일하다. 시스템은 프로세싱 작업량을, 상이한 프로세싱 유닛에 할당될 수 있는 작업그룹(410)의 서브세트로 파티션한다. 또한, 시스템은, 데이터 버퍼(405A-B)를, 상이한 프로세싱 유닛의 로컬 메모리에 맵핑될 수 있는 데이터의 부분으로 파티션한다. 도 4에 도시된 바와 같이, 데이터 버퍼(405A-B) 및 작업그룹(410)의 파티션 내에 도시된 개수는 목적지 프로세싱 유닛 ID에 대응된다. 시스템은, 원격 메모리 액세스의 개수를 최소로하고, 상이한 분산된 프로세싱 유닛 상에서 실행되는 작업그룹에 대한 로컬 메모리 액세스의 개수를 최대로 하려는 방식으로 파티셔닝과 맵핑을 수행한다.
이제 도 5를 참조하면, 작업그룹 파티셔닝 및 데이터 버퍼 파티셔닝의 또 다른 실시예의 도면이 도시된다. 일 실시예에서, 시스템은, 어떻게 작업그룹(505)이 데이터 버퍼(510) 내의 데이터에 액세스하고 공유하는지에 기초하여, 어떻게 데이터 버퍼(510)를 파티션하는지 결정할 수 있다. 분석된 데이터 액세스 및 데이터 버퍼(510)의 데이터 공유 패턴에 기초하여, 데이터 버퍼(510)는 파티션될 수 있고, 작업그룹이 비-로컬 메모리 액세스에 비해, 증가된 수의 로컬 메모리 액세스를 수행하는 방식으로, 메모리 디바이스로 맵핑될 수 있다. 도 5에 도시된 예시에서, 데이터 버퍼(510)는 2-차원(2D) 어레이이다.
작업그룹(505)이 데이터 버퍼(510)에 액세스하는 경우를 고려하는데, 이러한 방식에서, 작업그룹의 각각의 파티션은 데이터 버퍼의 직사각형 영역에 액세스하고, 작업그룹의 이후의 파티션은 이처럼 상이한 직사각형 영역에 액세스하여, 컬럼-주요 순서로 버퍼를 가로지른다. 직사각형 영역이 각각의 작업그룹 파티션에 의해 액세스되도록 할당된 이후에, 액세스 패턴은 반복하고, 작업그룹의 제1 파티션은 데이터 버퍼의 다음-가능한 직사각형 영역에 액세스한다. 이러한 경우에, 데이터 버퍼(510)가 메모리 내에 로우-주요 방식으로 레이드 아웃되면, 데이터 버퍼(510)와 작업그룹(505) 모두에 대해 M 개의 인접한 파티션을 생성하는 접근법은, 데이터 버퍼(510)와 작업그룹(505) 간의 정렬불량을 야기할 것이다. 이러한 정렬불량을 완화하기 위한 한 가지 방법은, 동일한 작업그룹(505)을 파티셔닝을 유지하면서, 데이터 버퍼(510)의 컬럼을 따라 더 미세한(finer-grained) 파티션을 생성하는 것이다. 실시예에 의존하여, 파티셔닝은, 캐시-라인 또는 OS-페이지 입도에서, 또는 더 큰 영역을 사용함에 의해, 수행될 수 있다. 그러므로, M 개의 작업그룹 파티셔닝을 위한 M 개보다 많은 데이터 파티션이 있을 수 있다. 다시 말해, 데이터 버퍼(510)는 작업그룹(505)보다 더 미세한 입도로 파티션될 수 있다.
도 5에 도시된 바와 같이, 데이터 버퍼(510)의 각각의 데이터 파티션의 크기는 R/4 로우 바이 C/4 컬럼이다. 8개의 프로세싱 유닛을 위한 8개의 작업그룹 파티션을 위한 데이터 버퍼(510)를 위한 전체 16개의 데이터 파티션이 있다. 데이터 버퍼(510) 내의 각각의 숫자 0-7은, 데이터 파티션이 동일한 숫자 0-7에 대응되는 프로세싱 유닛에 맵핑된 작업그룹에 의해 액세스된다는 것을 나타낸다. R/4 로우 바이 C/4 컬럼의 크기로, 데이터 버퍼(510)를 파티션으로 파티셔닝의 예시는 단지 수행될 수 있는 파티셔닝의 한 가지 예시이라는 점에 유의한다. 다른 파티셔닝 스킴이 다른 실시예에서 사용될 수 있다는 것을 이해해야 한다.
이제, 도 6으로 되돌아오면, 작업량과 데이터 버퍼를 파티셔닝하기 위한 방법(600)의 일 실시예가 도시된다. 논의를 위해, 본 실시예에서의 단계 및 도 7-8의 단계들은 순차적으로 도시된다. 그러나, 기술된 방법의 다양한 실시예에서, 기술된 하나 이상의 요소는 동시에, 도시된 것과 상이한 순서로 수행되거나 전체적으로 생략될 수 있다. 다른 추가적인 요소도 원하는대로 수행된다. 본원에서 기술된 임의의 다양한 시스템 또는 장치는 방법(600)을 실행하도록 구성된다.
시스템은 작업량을 복수의 작업그룹으로 파티션한다(블록 605). 시스템은 복수의 프로세싱 유닛 및 복수의 메모리 디바이스를 포함한다. 일 실시예에서, 복수의 프로세싱 유닛의 각각의 프로세싱 유닛은 복수의 메모리 디바이스의 하나 이상의 로컬 메모리 디바이스에 연결된다. 일 실시예에서, 각각의 프로세싱 유닛은 GPU이다. 또 다른 실시예에서, 각각의 프로세싱 유닛은 PIM 디바이스이다. 다른 실시예에서, 프로세싱 유닛은 다른 타입의 디바이스일 수 있다.
다음으로, 시스템은 하나 이상의 데이터 버퍼를 복수의 데이터 파티션으로 파티션한다(블록 610). 그리고 나서, 시스템은, 비-로컬 메모리 디바이스로의 액세스를 최소화하는 것에 기초하여, 어떻게 작업그룹을 복수의 프로세싱 유닛으로 디스패치하는지 및 데이터 파티션을 복수의 메모리 디바이스에 맵핑하는지 결정한다(블록 615). 상기 맥락에서, 용어 "최소화하는 것"은, 작업량의 차원수를 고려하지 않거나(도 7의 방법(700)에 기술됨), 작업그룹의 데이터 공유 패턴을 고려하지 않는(도 8의 방법(800)에 기술됨) 표준 디스패칭 및 맵핑 스킴에 비해, 프로세싱 유닛에 의해 생성된 원격 메모리 액세스의 개수를 줄이는 것으로 정의될 수 있다. 블록(615) 이후에, 방법(600)은 종료한다.
이제, 도 7을 참조하면, 작업량과 데이터 버퍼를 파티셔닝하기 위한 방법(700)의 또 다른 실시예가 도시된다. 도시된 실시예에서, 시스템은, 작업량의 차원수에 기초하여, 작업량을 복수의 작업그룹으로 파티션한다(블록 705). 시스템은 복수의 프로세싱 유닛 및 복수의 메모리 디바이스를 포함한다. 일 실시예에서, 복수의 프로세싱 유닛의 각각의 프로세싱 유닛은 복수의 메모리 디바이스의 하나 이상의 로컬 메모리 디바이스에 연결된다.
시스템은 M 개의 연속적인 작업그룹을 각각의 프로세싱 유닛에 디스패치하는데, M은 양의 정수이다(블록 710). 일 실시예에서, M은 시스템 내의 프로세싱 유닛의 개수에 의해 나누어진 작업그룹의 전체 개수와 동일하다. 또한, 시스템은, 작업량과 동일한 차원수를 따라 하나 이상의 데이터 버퍼를 파티션하고, 데이터 파티션을 메모리 디바이스에 맵핑하여서, 작업그룹은 비-로컬 메모리 액세스에 비해, 증가된 수의 로컬 메모리 액세스를 수행한다(블록 715). 일 실시예에서, 하나 이상의 데이터 버퍼는 작업량보다 더 미세한 입도로 파티션된다. 블록(715) 이후에, 방법(700)은 종료한다.
이제 도 8로 되돌아오면, 작업량을, 데이터의 스레숄드 양을 공유하는 작업그룹의 서브세트로 파티셔닝하기 위한 방법(800)의 일 실시예가 도시된다. 도시된 예시에서, 시스템은 데이터의 스레숄드 양을 공유하는 작업그룹을 식별하기 위해, 복수의 작업그룹의 데이터 공유 패턴을 결정한다(블록 805). 일 실시예에서, 데이터 공유 패턴은 컴파일러에 의해, 컴파일-시간에서 결정된다. 또 다른 실시예에서, 데이터 공유 패턴은 제어 로직 및/또는 소프트웨어에 의해, 런-타임에서 결정된다. 또 다른 실시예에서, 데이터 공유 패턴은 하드웨어 및/또는 소프트웨어 내의 애플리케이션을 프로파일링함에 의해, 결정된다. 일부 실시예에서, 시스템은 복수의 작업그룹의 데이터 액세스 패턴 및/또는 데이터 로컬리티 패턴을 결정할 수도 있다. 다음으로, 시스템은 데이터 공유 패턴의 분석에 기초하여, 작업그룹의 어떤 서브세트를 각각의 프로세싱 유닛으로 디스패치하는지 결정한다(블록 810). 그리고 나서, 시스템은 데이터 공유 패턴의 분석에 기초하여, 어떻게 하나 이상의 데이터 버퍼를 파티션하는지 결정한다(블록 815). 다음으로, 시스템은 데이터 파티션을 메모리 디바이스에 맵핑하여서, 작업그룹이 비-로컬 메모리 액세스에 비해 증가된 수의 로컬 메모리 액세스를 수행하도록 한다(블록 820). 또한, 시스템은, 블록(810, 815 및 820)을 수행할 때, 데이터 액세스 패턴 및/또는 데이터 로컬리티 패턴을 사용할 수 있다. 블록(820) 이후에, 방법(800)은 종료한다.
다양한 실시예에서, 소프트웨어 애플리케이션의 프로그램 명령어는 이전에 기술된 방법 및/또는 수단을 실행하는데 사용된다. 프로그램 명령어는 가령, C와 같은 고차원 프로그램 언어로 하드웨어의 행동을 기술한다. 대안적으로, 베릴로그(Verilog)와 같은 하드웨어 설계 언어(HDL)가 사용된다. 프로그램 명령어는 비-일시적 컴퓨터 판독가능한 저장 매체 상에 저장된다. 여러 타입의 저장 매체가 사용가능하다. 저장 매체는, 프로그램 명령어 및 동반 데이터를 프로그램 실행을 위한 컴퓨팅 시스템에 제공하기 위해, 사용하는 동안, 컴퓨터 시스템에 의해 액세스 가능하다. 컴퓨팅 시스템은 적어도 하나 이상의 메모리 및 프로그램 명령어를 실행하도록 구성된 하나 이상의 프로세서를 포함한다.
상기-기술된 실시예는 오직 실시의 비제한적인 예시라는 점이 강조되어야 한다. 상기 개시물이 완전히 이해되면, 여러 변형예와 수정예가 기술 분야의 당업자에게 자명해질 것이다. 해석되는 다음 청구항은 이러한 모든 변형예와 수정예를 포함하도록 의도된다.

Claims (20)

  1. 시스템에 있어서, 상기 시스템은,
    복수의 메모리 디바이스와, 및
    복수의 프로세싱 유닛 - 복수의 프로세싱 유닛의 각각의 프로세싱 유닛은 복수의 메모리 디바이스의 하나 이상의 로컬 메모리 디바이스에 연결됨 - 을 포함하되,
    상기 시스템은,
    작업량을 복수의 작업그룹으로 파티션하고,
    하나 이상의 데이터 버퍼를 복수의 데이터 파티션으로 파티션하고, 및
    비-로컬 메모리 디바이스로 액세스를 최소화하는 것에 기초하여, 작업그룹을 어떻게 복수의 프로세싱 유닛으로 디스패치되는지를 결정하고, 데이터 파티션을 복수의 메모리 디바이스로 맵핑하도록 구성되는, 시스템.
  2. 제 1 항에 있어서, 상기 시스템은,
    작업량의 차원수에 기초하여, 작업량을 복수의 작업그룹으로 파티션하고, 및
    M개의 연속적인 작업그룹을 각각의 프로세싱 유닛으로 디스패치하도록 더욱 구성되고, M은 프로세싱 유닛의 수에 의해 나누어진 작업그룹의 전체 수와 동일한, 시스템.
  3. 제 2 항에 있어서, 상기 시스템은, 작업량과 동일한 차원수에 따라 하나 이상의 데이터 버퍼를 파티션하고, 데이터 파티션을 메모리 디바이스로 맵핑하도록 더욱 구성되어서, 작업그룹이 비-로컬 메모리 액세스에 비하여 증가된 수의 로컬 메모리 액세스를 수행하도록 하는, 시스템.
  4. 제 3 항에 있어서, 하나 이상의 데이터 버퍼는 작업량보다 더 미세한 입도(granularity)로 파티션되는, 시스템.
  5. 제 1 항에 있어서, 상기 시스템은,
    데이터의 스레숄드 양을 공유하는 작업그룹을 식별하기 위해, 복수의 작업그룹의 패턴을 공유하는 데이터를 결정하고,
    패턴을 공유하는 데이터의 분석에 기초하여, 복수의 작업그룹의 어느 서브세트가 복수의 프로세싱 유닛의 각각의 프로세싱 유닛으로 디스패치되는지를 결정하고,
    복수의 작업그룹의 패턴을 공유하는 데이터에 기초하여, 하나 이상의 데이터 버퍼를 어떻게 파티션하는지를 결정하고, 및
    파티션을 메모리 디바이스로 맵핑하여서, 작업그룹이 비-로컬 메모리 액세스에 비해 증가된 수의 로컬 메모리 액세스를 수행하도록 더욱 구성되는, 시스템.
  6. 제 1 항에 있어서, 상기 시스템은 어느 작업그룹 식별자(ID)가 커널 기반으로 어느 프로세싱 유닛으로 맵핑되는지를 명시하기 위한 디스패치 테이블을 포함하는, 시스템.
  7. 제 1 항에 있어서, 상기 시스템은,
    데이터의 스레숄드 양을 공유하는 둘 이상의 작업그룹을 식별하고, 및
    둘 이상의 작업그룹을 제1 프로세싱 유닛으로 디스패치하도록 더욱 구성되는, 시스템.
  8. 방법에 있어서, 상기 방법은,
    작업량을 복수의 작업그룹으로 파티션하는 단계와,
    하나 이상의 데이터 버퍼를 복수의 데이터 파티션으로 파티션하는 단계와, 및
    비-로컬 메모리 디바이스로 액세스를 최소화하는 것에 기초하여, 작업그룹을 어떻게 복수의 프로세싱 유닛으로 디스패치되는지를 결정하고, 데이터 파티션을 복수의 메모리 디바이스로 맵핑하는 단계를 포함하는, 방법.
  9. 제 8 항에 있어서,
    작업량의 차원수에 기초하여, 작업량을 복수의 작업그룹으로 파티션하는 단계와, 및
    M개의 연속적인 작업그룹을 각각의 프로세싱 유닛으로 디스패치하는 단계를 더 포함하고, M은 프로세싱 유닛의 수에 의해 나누어진 작업그룹의 전체 수와 동일한, 방법.
  10. 제 9 항에 있어서, 작업량과 동일한 차원수에 따라 하나 이상의 데이터 버퍼를 파티션하는 단계와, 및 데이터 파티션을 메모리 디바이스로 맵핑하는 단계를 더 포함하여, 작업그룹이 비-로컬 메모리 액세스에 비하여 증가된 수의 로컬 메모리 액세스를 수행하도록 하는, 방법.
  11. 제 10 항에 있어서, 하나 이상의 데이터 버퍼를 작업량보다 더 미세한 입도(granularity)로 파티션하는 단계를 더 포함하는, 방법.
  12. 제 8 항에 있어서,
    데이터의 스레숄드 양을 공유하는 작업그룹을 식별하기 위해, 복수의 작업그룹의 패턴을 공유하는 데이터를 결정하는 단계와,
    패턴을 공유하는 데이터의 분석에 기초하여, 복수의 작업그룹의 어느 서브세트가 복수의 프로세싱 유닛의 각각의 프로세싱 유닛으로 디스패치되는지를 결정하는 단계와,
    복수의 작업그룹의 패턴을 공유하는 데이터에 기초하여, 하나 이상의 데이터 버퍼를 어떻게 파티션하는지를 결정하는 단계와, 및
    파티션을 메모리 디바이스로 맵핑하여서, 작업그룹이 비-로컬 메모리 액세스에 비해 증가된 수의 로컬 메모리 액세스를 수행하도록 하는 단계를 포함하는, 방법.
  13. 제 8 항에 있어서, 어느 작업그룹 식별자(ID)가 커널 기반으로 어느 프로세싱 유닛으로 맵핑되는지를 명시하기 위한 디스패치 테이블을 사용하는 단계를 더 포함하는, 방법.
  14. 제 8 항에 있어서,
    데이터의 스레숄드 양을 공유하는 둘 이상의 작업그룹을 식별하는 단계와, 및
    둘 이상의 작업그룹을 제1 프로세싱 유닛으로 디스패치하는 단계를 더 포함하는, 방법.
  15. 프로그램 명령어를 저장하는 비-일시적 컴퓨터 판독가능한 저장 매체에 있어서, 상기 프로그램 명령어는 프로세서에 의해 실행가능하고, 상기 프로세서는,
    작업량을 복수의 작업그룹으로 파티션하고,
    하나 이상의 데이터 버퍼를 복수의 데이터 파티션으로 파티션하고, 및
    비-로컬 메모리 디바이스로 액세스를 최소화하는 것에 기초하여, 작업그룹을 어떻게 복수의 프로세싱 유닛으로 디스패치되는지를 결정하고, 데이터 파티션을 복수의 메모리 디바이스로 맵핑하는, 비-일시적 컴퓨터 판독가능한 저장 매체.
  16. 제 15 항에 있어서, 상기 프로그램 명령어는 프로세서에 의해 더욱 실행가능하고, 상기 프로세서는,
    작업량의 차원수에 기초하여, 작업량을 복수의 작업그룹으로 파티션하고, 및
    M개의 연속적인 작업그룹을 각각의 프로세싱 유닛으로 디스패치하고, M은 프로세싱 유닛의 수에 의해 나누어진 작업그룹의 전체 수와 동일한, 비-일시적 컴퓨터 판독가능한 저장 매체.
  17. 제 16 항에 있어서, 상기 프로그램 명령어는, 작업량과 동일한 차원수에 따라 하나 이상의 데이터 버퍼를 파티션하고, 데이터 파티션을 메모리 디바이스로 맵핑하여, 작업그룹이 비-로컬 메모리 액세스에 비하여 증가된 수의 로컬 메모리 액세스를 수행하도록 하기 위한 프로세서에 의해 더욱 실행가능한, 비-일시적 컴퓨터 판독가능한 저장 매체.
  18. 제 15 항에 있어서, 상기 프로그램 명령어는, 하나 이상의 데이터 버퍼는 작업량보다 더 미세한 입도로 파티션되는 프로세서에 의해 더욱 실행가능한, 비-일시적 컴퓨터 판독가능한 저장 매체.
  19. 제 15 항에 있어서, 상기 프로그램 명령어는 프로세서에 의해 더욱 실행가능하고, 상기 프로세서는,
    데이터의 스레숄드 양을 공유하는 작업그룹을 식별하기 위해, 복수의 작업그룹의 패턴을 공유하는 데이터를 결정하고,
    패턴을 공유하는 데이터의 분석에 기초하여, 복수의 작업그룹의 어느 서브세트가 복수의 프로세싱 유닛의 각각의 프로세싱 유닛으로 디스패치되는지를 결정하고,
    복수의 작업그룹의 패턴을 공유하는 데이터에 기초하여, 하나 이상의 데이터 버퍼를 어떻게 파티션하는지를 결정하고, 및
    파티션을 메모리 디바이스로 맵핑하여서, 작업그룹이 비-로컬 메모리 액세스에 비해 증가된 수의 로컬 메모리 액세스를 수행하도록 하는, 비-일시적 컴퓨터 판독가능한 저장 매체.
  20. 제 15 항에 있어서, 상기 프로그램 명령어는 프로세서에 의해 더욱 실행가능하고, 상기 프로세서는,
    데이터의 스레숄드 양을 공유하는 둘 이상의 작업그룹을 식별하고, 및
    둘 이상의 작업그룹을 제1 프로세싱 유닛으로 디스패치하도록 하는, 비-일시적 컴퓨터 판독가능한 저장 매체.
KR1020197007385A 2016-10-21 2017-08-21 분산된 gpu들을 위해 데이터 로컬리티를 개선하기 위한 매커니즘 KR20190070915A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/331,002 US20180115496A1 (en) 2016-10-21 2016-10-21 Mechanisms to improve data locality for distributed gpus
US15/331,002 2016-10-21
PCT/US2017/047807 WO2018075131A1 (en) 2016-10-21 2017-08-21 Mechanisms to improve data locality for distributed gpus

Publications (1)

Publication Number Publication Date
KR20190070915A true KR20190070915A (ko) 2019-06-21

Family

ID=59772714

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197007385A KR20190070915A (ko) 2016-10-21 2017-08-21 분산된 gpu들을 위해 데이터 로컬리티를 개선하기 위한 매커니즘

Country Status (6)

Country Link
US (1) US20180115496A1 (ko)
EP (1) EP3529697A1 (ko)
JP (1) JP2019537104A (ko)
KR (1) KR20190070915A (ko)
CN (1) CN109791507A (ko)
WO (1) WO2018075131A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG10201507834SA (en) * 2015-09-21 2017-04-27 Yokogawa Electric Corp Mobile based on collaborative and interactive operations with smart mobile devices
US10474600B2 (en) 2017-09-14 2019-11-12 Samsung Electronics Co., Ltd. Heterogeneous accelerator for highly efficient learning systems
KR102424962B1 (ko) * 2017-11-15 2022-07-25 삼성전자주식회사 병렬 연산 처리를 수행하는 메모리 장치 및 이를 포함하는 메모리 모듈
US20190332420A1 (en) * 2018-04-27 2019-10-31 Advanced Micro Devices, Inc. Feedback guided split workgroup dispatch for gpus
US10802995B2 (en) * 2018-07-26 2020-10-13 Xilinx, Inc. Unified address space for multiple hardware accelerators using dedicated low latency links
US11436046B2 (en) 2018-10-11 2022-09-06 Powerchip Semiconductor Manufacturing Corporation Electronic device with memory processor-based multiprocessing architecture and operation method thereof
TWI714003B (zh) * 2018-10-11 2020-12-21 力晶積成電子製造股份有限公司 可執行人工智慧運算的記憶體晶片及其操作方法
US11204819B2 (en) * 2018-12-21 2021-12-21 Samsung Electronics Co., Ltd. System and method for offloading application functions to a device
US10997686B2 (en) 2019-01-09 2021-05-04 Intel Corporation Workload scheduling and distribution on a distributed graphics device
CN117742901A (zh) * 2022-09-13 2024-03-22 安徽寒武纪信息科技有限公司 任务调度方法、装置、设备及介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6032264A (en) * 1997-04-22 2000-02-29 Micron Technology, Inc. Apparatus and method implementing repairs on a memory device
US6788302B1 (en) * 2000-08-03 2004-09-07 International Business Machines Corporation Partitioning and load balancing graphical shape data for parallel applications
US20070240140A1 (en) * 2006-02-10 2007-10-11 International Business Machines Corporation Methods and systems for application load distribution
US8453132B2 (en) * 2006-07-28 2013-05-28 Hewlett-Packard Development Company, L.P. System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems
US8395631B1 (en) * 2009-04-30 2013-03-12 Nvidia Corporation Method and system for sharing memory between multiple graphics processing units in a computer system
US8719833B2 (en) * 2010-06-24 2014-05-06 Sap Ag Adaptive demand-driven load balancing
US9092267B2 (en) * 2011-06-20 2015-07-28 Qualcomm Incorporated Memory sharing in graphics processing unit
US9195501B2 (en) * 2011-07-12 2015-11-24 Qualcomm Incorporated Instruction culling in graphics processing unit
JP2013114538A (ja) * 2011-11-30 2013-06-10 Toshiba Corp 情報処理装置、情報処理方法及び制御プログラム
US9032416B2 (en) * 2012-07-30 2015-05-12 Oracle International Corporation Load balancing using progressive sampling based on load balancing quality targets
US9277005B2 (en) * 2013-01-09 2016-03-01 Edgecast Networks, Inc. Optimized consistent request distribution for balanced load distribution in a content delivery network
US9276827B2 (en) * 2013-03-15 2016-03-01 Cisco Technology, Inc. Allocating computing resources based upon geographic movement
US9788210B2 (en) * 2013-06-11 2017-10-10 Sonus Networks, Inc. Methods and systems for adaptive buffer allocations in systems with adaptive resource allocation
US9338234B2 (en) * 2014-04-16 2016-05-10 Microsoft Technology Licensing, Llc Functional programming in distributed computing
US10261660B2 (en) * 2014-06-25 2019-04-16 Oracle International Corporation Orbit visualization animation
US9906589B2 (en) * 2014-11-14 2018-02-27 Facebook, Inc. Shared management service
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
US10229468B2 (en) * 2015-06-03 2019-03-12 Intel Corporation Automated conversion of GPGPU workloads to 3D pipeline workloads
US9965382B2 (en) * 2016-04-04 2018-05-08 Omni Ai, Inc. Data composite for efficient memory transfer in a behavioral recognition system

Also Published As

Publication number Publication date
JP2019537104A (ja) 2019-12-19
US20180115496A1 (en) 2018-04-26
EP3529697A1 (en) 2019-08-28
CN109791507A (zh) 2019-05-21
WO2018075131A1 (en) 2018-04-26

Similar Documents

Publication Publication Date Title
KR20190070915A (ko) 분산된 gpu들을 위해 데이터 로컬리티를 개선하기 위한 매커니즘
CN111279322B (zh) 一种处理系统和在3d堆栈存储器中混写的方法
US9921751B2 (en) Methods and systems for mapping a peripheral function onto a legacy memory interface
US10067911B2 (en) High performance inplace transpose operations
KR102288830B1 (ko) 텐서 메모리 액세스를 촉진할 수 있는 메모리 디바이스 및 방법
US10943183B2 (en) Electronics device performing software training on memory channel and memory channel training method thereof
KR102054335B1 (ko) 메모리 내의 변환 색인 버퍼
EP3017372B1 (en) Memory controlled data movement and timing
CN109785882B (zh) 具有虚拟体化架构的sram及包括其的系统和方法
TWI512469B (zh) 用於存取記憶體之系統及方法
EP4060505A1 (en) Techniques for near data acceleration for a multi-core architecture
JP2018136922A (ja) メモリープールを有するコンピューティングシステムのためのメモリー分割
CN114968371A (zh) 用于为不同的应用域配置并行处理器的技术
US10534545B2 (en) Three-dimensional stacked memory optimizations for latency and power
JP2023527770A (ja) メモリにおける推論
US20190377671A1 (en) Memory controller with memory resource memory management
JP7288344B2 (ja) 半導体システム及びその動作方法
EP4375840A1 (en) Memory controller, electronic system including the same and method of controlling memory access
US20240248609A1 (en) Accelerator module and computing system including the same
KR102322727B1 (ko) 데이터 스왑을 위한 메모리 시스템 및 그 동작방법
CN110297784B (zh) 一种虚拟权重存储器系统及数据处理方法
US20230315334A1 (en) Providing fine grain access to package memory
Megharaj Integrating Processing In-Memory (PIM) Technology into General Purpose Graphics Processing Units (GPGPU) for Energy Efficient Computing

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application