KR20190104223A - 연관 메모리 디바이스의 희소 행렬 곱셈 - Google Patents

연관 메모리 디바이스의 희소 행렬 곱셈 Download PDF

Info

Publication number
KR20190104223A
KR20190104223A KR1020197024553A KR20197024553A KR20190104223A KR 20190104223 A KR20190104223 A KR 20190104223A KR 1020197024553 A KR1020197024553 A KR 1020197024553A KR 20197024553 A KR20197024553 A KR 20197024553A KR 20190104223 A KR20190104223 A KR 20190104223A
Authority
KR
South Korea
Prior art keywords
sparse matrix
matrix
column
multiplier
multiplying
Prior art date
Application number
KR1020197024553A
Other languages
English (en)
Other versions
KR102333638B1 (ko
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 KR20190104223A publication Critical patent/KR20190104223A/ko
Application granted granted Critical
Publication of KR102333638B1 publication Critical patent/KR102333638B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)

Abstract

연관 메모리 디바이스에서 제1 희소 행렬과 제2 희소 행렬을 곱하는 방법은 연관 메모리 디바이스의 계산 칼럼에 제2 희소 행렬의 0이 아닌 각각의 요소와 관련된 피승수 정보를 저장하는 단계를 포함하고, 피승수 정보는 적어도 피승수값을 포함한다. 제1 선형 대수 규칙에 따라, 본 방법은 제1 희소 행렬의 0이 아닌 요소와 관련된 승수 정보를 연관된 피승수 각각과 연관시키고, 승수 정보는 적어도 승수값을 포함한다. 본 방법은 승수 정보를 연관된 피승수 각각의 계산 칼럼에 동시에 저장한다. 본 방법은, 모든 계산 칼럼에서, 계산 칼럼에 곱을 제공하기 위해, 승수값을 연관된 피승수값과 동시에 곱하고, 결과 행렬을 제공하기 위해, 제2 선형 대수 규칙에 따라, 계산 칼럼으로부터의 곱을 함께 더한다.

Description

연관 메모리 디바이스의 희소 행렬 곱셈
본 출원은 2017년 1월 22일에 출원된 미국 가출원 제 62/449,036 호의 우선권을 주장하며, 이는 원용에 의해 본원에 참조로서 포함된다.
본 발명은 일반적으로 연관 메모리 디바이스에 관한 것이며, 특히 희소 행렬을 곱하는 효율적인 방법에 관한 것이다.
행렬 곱셈(행렬 곱)은 두 행렬 AB로부터 행렬 C를 생성한다. 만약 An × m 행렬이고 Bm × p 행렬인 경우, 그들의 행렬 곱 ABn × p 행렬이며, 여기서 A의 로우를 가로지르는 m 개의 엔트리는 B의 칼럼을 아래로 가로지르는 m개의 엔트리와 곱해지고, AB의 엔트리를 생성하기 위해 합산되는데, 즉, 곱 행렬 Ci, j 엔트리 각각은, (A의 로우 i를 가로지르는) A ik 와 (B의 칼럼 j를 아래로 가로지르는) B kj 을 곱함으로써 주어지고, 이 때 k=1, 2, …, m이며, 식 1에 따라 k에 대한 결과를 합산한다:
Figure pct00001
행렬 곱을 계산하는 것은 많은 알고리즘에서 핵심적인 작업이며, 오랜 시간이 소요될 수 있다. 특히, O (mnp)의 복잡성을 제공하는 큰 행렬에 대하여 곱셈 계산을 위한 다양한 알고리즘이 개발되었다.
본 출원 전체에 걸쳐, 행렬은 굵은 대문자로 표시되고, 예를 들어 A, 벡터는 굵은 소문자로 표시되며, 예를 들어 a, 벡터와 행렬의 엔트리는 기울임꼴, 예를 들어 Aa 로 표시된다. 따라서, 행렬 A의 엔트리 i, j는 A ij 로 지시되고 벡터 a의 엔트리 i는 a i 로 지시된다.
또한, 본 출원 전체에 걸쳐, 곱셈의 피연산자는 "승수(multiplier)" 및 "피승수(multiplicand)"라고 지칭될 수 있고, 각 피연산자의 값은 행렬 또는 벡터에서 유래될 수 있다.
본 발명의 바람직한 실시예에 따르면, 연관 메모리 디바이스에서 제1 희소 행렬과 제2 희소 행렬을 곱하는 방법이 제공된다. 본 방법은, 연관 메모리 디바이스의 계산 칼럼에 제2 희소 행렬의 0이 아닌 요소 각각과 관련된 피승수(multiplicand) 정보를 저장하는 단계를 포함하고, 피승수 정보는 적어도 피승수값을 포함한다. 제1 선형 대수 규칙에 따라, 본 방법은 제1 희소 행렬의 0이 아닌 요소와 관련된 승수 정보를 승수 정보와 연관된 피승수 각각과 연관시키고, 승수 정보는 적어도 승수값을 포함한다. 본 방법은 승수 정보를 연관된 피승수 각각의 계산 칼럼에 동시에 저장한다. 본 방법은, 모든 계산 칼럼에서, 계산 칼럼에 곱을 제공하기 위해, 승수값을 승수값과 연관된 피승수값과 동시에 곱하고, 결과 행렬을 제공하기 위해, 제2 선형 대수 규칙에 따라, 계산 칼럼으로부터의 곱을 함께 가산한다.
또한, 본 발명의 바람직한 실시예에 따르면, 정보는 로우 인덱스 및 칼럼 인덱스를 또한 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 제1 선형 대수 규칙은 승수의 로우 인덱스는 피승수의 칼럼 인덱스와 동일하다는 것을 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 제2 선형 대수 규칙은 계산 칼럼에서 피승수의 칼럼 인덱스를 따르는 것을 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 제1 희소 행렬은 조밀 벡터(dense vector)이고, 결과 행렬은 벡터이다.
또한, 본 발명의 바람직한 실시예에 따르면, 제1 희소 행렬의 각 로우는 벡터이고, 각각의 벡터는 개별적으로 계산되며, 제2 선형 대수 규칙은 또한 계산 칼럼에서 승수의 동일한 로우 인덱스에 따르는 것을 포함한다.
추가적으로, 본 발명의 바람직한 실시예에 따르면, 연관시키는 단계는 제1 희소 행렬의 각 승수와 연관된 모든 계산 칼럼을 동시에 검색하는 단계를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 동시에 검색하는 단계는, 제1 희소 행렬의 각 로우에 대해, 본 방법은 승수의 칼럼 인덱스를 모든 계산 칼럼의 로우 인덱스와 비교하고, 칼럼 인덱스와 동일한 로우 인덱스를 갖는 모든 계산 칼럼을 표시한다.
또한, 본 발명의 바람직한 실시예에 따르면, 가산하는 단계는, 동일한 칼럼 인덱스를 가진 모든 계산 칼럼을 동시에 검색하는 단계, 및 동일한 칼럼 인덱스를 갖는 계산 칼럼에서 모든 곱의 합을 계산하는 단계를 포함한다.
본 발명의 바람직한 실시예에 따르면, 제1 희소 행렬에 제2 희소 행렬을 곱하기 위한 시스템이 제공된다. 시스템은 로우 및 계산 칼럼에 배치된 연관 메모리 어레이, 데이터 구성기, 곱셈 유닛, 및 가산기를 포함한다. 데이터 구성기는, 계산 칼럼의 승수 및 피승수의 각각의 쌍에 관한 데이터를 저장하고, 데이터는 적어도 제1 선형 대수 규칙에 따라 연관된 승수와 피승수, 및 값을 포함한다. 곱셈 유닛은 모든 계산 칼럼을 동시에 활성화시키고, 활성화는 각각의 계산 칼럼에서 승수의 값과 피승수의 값 사이의 곱셈 연산의 곱을 제공한다. 가산기는, 연관된 계산 칼럼에 곱을 동시에 가산하는 가산기를 포함한다.
또한, 본 발명의 바람직한 실시예에 따르면, 데이터는 로우 인덱스 및 칼럼 인덱스를 또한 포함한다.
또한, 연관된 계산 칼럼은 제2 희소 행렬의 칼럼을 공유한다.
본 발명의 바람직한 실시예에 따르면, 연관 메모리 디바이스의 벡터와 희소 행렬을 곱하는 방법이 제공된다. 본 방법은, 희소 행렬의 0이 아닌 각각의 행렬 요소에 대해, 연관 메모리 디바이스의 계산 칼럼에서의 행렬 요소의 행렬 값, 행렬 요소의 행렬 로우 인덱스, 및 행렬 요소의 행렬 칼럼 인덱스를 저장한다. 본 방법은 또한 벡터 위치와 동일한 행렬 로우 인덱스를 갖는 계산 칼럼에 벡터의 벡터 인덱스로부터의 벡터 값을 저장한다. 동시에, 모든 계산 칼럼에서, 본 방법은 곱을 생성하기 위해 행렬 값에 벡터 값을 곱하고, 결과 벡터를 제공하기 위해 동일한 행렬 칼럼 인덱스를 가지는 계산 칼럼에 모든 곱을 함께 가산한다.
또한, 본 발명의 바람직한 실시예에 따르면, 벡터 값을 저장하는 동안, 본 방법은 각 벡터 인덱스와 동일한 행렬 로우 인덱스를 갖는 모든 계산 칼럼을 동시에 검색하고, 검색에 의해 발견된 모든 계산 칼럼에 벡터 인덱스로부터의 벡터 값을 동시에 저장한다.
본 발명의 바람직한 실시예에 따르면, 희소 행렬을 이용한 메모리 곱셈 방법이 제공된다. 희소 행렬의 0이 아닌 각각의 요소를 값 및 적어도 하나의 인덱스로 표현하는 단계를 포함한다. 본 방법은, 0이 아닌 요소로부터 승수를 선택하고, 선택된 승수의 승수-인덱스를 페칭(fetching)하는 단계를 또한 포함한다. 본 방법은, 매칭된 피승수-인덱스를 가지는 피승수를 검색하는 단계를 포함한다. 본 방법은, 승수를 피승수의 칼럼에 병렬적으로 분배하고, 승수에 피승수를 병렬적으로 곱하고, 모든 칼럼으로부터의 곱셈 결과를 가산한다.
본 발명으로 간주되는 발명의 대상은 특히 본 명세서의 결론 부분에서 지적되고 명백하게 청구된다. 그러나, 본 발명의 목적, 특징 및 장점과 함께 구성 및 동작 방법은 첨부 도면과 함께 읽는 경우에 이하의 상세한 설명을 참조함으로써 가장 잘 이해될 수 있다:
도 1은 본 발명의 바람직한 실시예에 따라 구성되고 동작하는 행렬 승수 시스템의 개략도이다.
도 2는 도 1의 행렬 승수 시스템에 의해 계산된 예시적인 희소 행렬, 예시적인 조밀 벡터, 및 예시적인 결과 벡터의 개략도이다.
도 3은 메모리 어레이에서 희소 행렬에 관련된 데이터 배치의 개략도이다.
도 4, 5 및 6은 메모리 어레이에서 조밀 벡터와 관련된 데이터의 배열의 개략도이다.
도 7은 메모리 어레이 내부에서 수행되는 곱셈 연산의 개략도이다.
도 8은 메모리 어레이 내부에서 수행되는 합 연산의 개략도이다.
도 9는 희소 행렬에 조밀 벡터를 곱하기 위한 도 1의 행렬 승수 시스템의 연산을 기술하는 개략적인 흐름도이다.
도 10은 그들의 메모리 표현을 갖는 2개의 예시적인 희소 행렬 및 메모리 표현을 갖는 예상 결과 행렬의 개략도이다.
도 11은 2 개의 희소 행렬을 곱하기 위해 수행되는 단계들을 설명하는 흐름의 개략도이다.
도 12 내지 도 38은 도 11의 흐름에 따라, 2개의 예시적인 희소 행렬을 곱하는 경우의 도 1의 행렬 승수 시스템에 의해 수행되는 단계의 개략도이다.
도 39는 예시적인 희소 벡터 및 그들의 메모리 표현을 갖는 예시적인 조밀 벡터의 개략도이다.
도 40, 41 및 42는 도 39의 희소 벡터와 조밀 행렬을 곱하는 경우의 도 1의 행렬 승수 시스템에 의해 수행되는 단계의 개략도이다.
설명의 단순화 및 명료화를 위해, 도면에 도시된 요소는 반드시 축적대로 도시된 것은 아님이 이해될 것이다. 예를 들어, 일부 요소의 치수는 명확성을 위해 다른 구성 요소에 비해 과장될 수 있다. 또한, 적절한 것으로 간주되는 경우, 대응하거나 유사한 요소를 나타내기 위해 도면들 사이에서 참조 번호가 반복될 수 있다.
이하의 상세한 설명에서, 본 발명의 철저한 이해를 제공하기 위해 다수의 특정 세부 사항이 기술된다. 그러나, 통상의 기술자는 본 발명이 이러한 특정 세부 사항 없이도 실시될 수 있다는 것을 이해할 것이다. 다른 경우에, 잘 알려진 방법, 절차 및 구성 요소는 본 발명을 모호하게 하지 않기 위하여 상세히 기술되지 않았다.
출원인은 희소 행렬 (즉, 0의 값을 가지는 많은 엔트리를 갖는 행렬)과 조밀 벡터의 곱이 연관 메모리에서 O(n+logβ)의 복잡성으로 수행될 수 있다는 것을 인식하는데, 여기서 β는 희소 행렬의 0이 아닌 요소이며, n은 조밀 벡터의 크기이다. 차원 n이 차원 m (n<<m)보다 훨씬 작은 경우, n은 무시할 수 있고, 복잡도는 큰 차원 m에 의존하지 않기 때문에 계산의 복잡도는 대략 O (logβ) 일 수 있다.
출원인은 또한 (두 행렬 모두 많은 엔트리가 0과 동일한) 두 희소 행렬의 곱셈이 O(β+logβ)의 복잡성으로 수행될 수 있음을 인식했으며, 여기서 β는 희소 행렬의 0이 아닌 요소의 개수이고, 희소 벡터와 조밀 벡터의 곱셈은 이와 유사하게 효율적으로 수행될 수 있다.
본 출원인은, 행렬 또는 벡터에서 0이 아닌 요소만이 곱셈의 결과에 기여하기 때문에, 이러한 요소만이 연관 어레이에 저장될 필요가 있음을 깨달았으며, 이 와중에도 곱셈의 정확한 결과를 여전히 제공한다. 출원인은 또한 행렬의 0이 아닌 요소가 선형 대수 규칙에 따라 계산 칼럼에 저장될 수 있어서, 각 곱셈 연산의 피승수와 승수가 동일한 계산 칼럼에 저장될 수 있다는 것 또한 깨달았다. 행렬로부터의 값이 하나 이상의 곱셈 연산에서 사용되는 경우에 곱셈 계산 칼럼에 저장될 수 있다는 것이 이해될 수 있다.
이제 참조되는 도 1은 본 발명의 바람직한 실시예에 따라 구성되고 연산되는 행렬 승수 시스템(100)의 개략도이다. 행렬 승수 시스템(100)은 희소 행렬 핸들러(sparse matrix handler)(110) 및 연관 메모리 어레이(120)를 포함한다. 희소 행렬 핸들러(110)는 식 1에서 정의된 계산을 수행하기 위해 데이터 구성기(114), 곱셈 유닛(116), 및 가산기(118)를 포함할 수 있다.
연관 메모리 어레이(120)는 곱셈을 수행하기 위해 필요한 정보를 저장할 수 있고, 본 발명의 공통 양수인에게 양도되고 원용에 의해 본원에 참조로서 포함된 미국 특허 제8,238,173 호 ("계산을 수행하기 위한 저장 셀 사용"); 미국 특허공개공보 US-2015-0131383호 ("비휘발성 메모리 컴퓨팅 디바이스"); 미국 특허 제9,418,719호("메모리 내 컴퓨팅 디바이스"); 미국 특허 제9,558,812호 ("SRAM 멀티셀 연산") 및 미국 특허 출원 제15/650,935호 ("비트 라인 프로세서를 갖는 메모리 내 컴퓨팅 디바이스")에 기술된 것과 같은 다목적 연관 메모리 디바이스일 수 있다.
데이터 구성기(114)는 0이 아닌 요소만이 원래 희소 행렬에서 그들의 위치의 지표와 함께 저장되도록 임의의 희소 행렬을 연관 메모리 어레이(120)의 여러 로우에 저장할 수 있다. 저장의 일 예시로, 연관 메모리 어레이(120)의 3개의 로우를 이용할 수 있어서, 하나의 로우는 행렬의 0이 아닌 값을 저장하는데 사용될 수 있고, 하나의 로우는 0이 아닌 값의 칼럼 인덱스를 저장하는데 사용될 수 있으며, 하나의 로우는 0이 아닌 값의 로우 인덱스를 저장하는데 사용될 수 있다. 이러한 아키텍쳐를 사용하여, 행렬의 0이 아닌 요소 각각은 연관 메모리 어레이(120)의 하나의 칼럼에 저장될 수 있으며, 이는 또한 계산 칼럼으로 지칭될 수 있고, 그러나, 계산 칼럼에서의 희소 행렬을 나타내는 다른 방식, 예를 들면 칼럼 베이스와 베이스 표현으로부터의 오프셋을 통하여, 그리고 행렬의 요소의 원래 위치를 제공하는 임의의 다른 표현 또한 이용될 수 있다.
이제 예시적인 희소 행렬(200), 예시적인 조밀 벡터(220), 및 희소 행렬(200)과 조밀 벡터(220)를 곱한 결과를 저장하는 예시적인 결과 벡터(240)의 개략도인 도 2를 참조한다.
희소 행렬(200)은 4개의 0이 아닌 요소: 행렬(200)의 칼럼 1, 로우 2에 저장된 값 3을 가지는 요소(202); 행렬(200)의 칼럼 2, 로우 2에 저장된 값 5를 가지는 요소(204); 행렬(200)의 칼럼 2, 로우 4에 저장된 값 9를 가지는 요소(206); 및 행렬(200)의 칼럼 4, 로우 4에 저장된 값 17을 가지는 요소(208)를 갖는다. 조밀 벡터(220)는 제1 위치에 값 4, 제2 위치에 값 -2, 제3 위치에 값 3, 및 제4 위치에 값 -1을 포함한다. 희소 행렬(200)과 조밀 벡터(220)의 곱셈은 이하와 같이 식 1에 행렬 및 벡터의 값을 적용함으로써 표현될 수 있음을 이해할 수 있다.
4*0 + -2*3 + 3*0 + -1*0 = -6
4*0 + -2*0 + 3*5 + -1*9 = 15 - 9 = 6
4*0 + -2*0 + 3*0 + -1*0 = 0
4*0 + -2*0 + 3*0 + -1*17 = -17
결과 벡터(240)는 제1 위치의 값 -6, 제2 위치의 값 6, 제3 위치의 값 0, 및 제4 위치의 값 -17을 포함할 수 있다.
이제 도 2의 조밀 벡터와 희소 행렬의 곱셈을 수행하기 위한 메모리 어레이(120)의 예시적인 이용의 개략도인 도 3을 참조한다.
데이터 구성기(114)는 이하와 같이 3개의 로우로 메모리 어레이(120A)의 계산 칼럼에 희소 행렬(200)의 각각의 요소를 저장할 수 있다: M-val 로우(352)는 행렬(200)의 0이 아닌 요소의 값을 저장할 수 있고, C-indx 로우(354)는 0이 아닌 요소의 칼럼 인덱스를 저장할 수 있으며, R-indx 로우(356)는 0이 아닌 요소의 로우 인덱스를 저장할 수 있다. 예를 들어, 행렬(200)의 요소(202)는 메모리 어레이(120A)의 계산 칼럼 Col-1에 저장된다. 3인 요소(202)는, M-val 로우(352)의 Col-1에 저장된다. 요소(202)의 칼럼 인덱스 1은 C-indx 로우(354)의 Col-1에 저장되고, 요소(202)의 로우 인덱스 2는 R-indx 로우(356)에 저장된다.
데이터 구성기(114)는 이제 참조되는 도 4에 도시된 바와 같이, 조밀 벡터를 메모리 어레이(120B)의 로우 V-val(402)에 더 저장할 수 있다. 도 4는 추가 로우 V-val을 갖는 도 3의 모든 값을 도시한다. 데이터 구성기(114)는 조밀 벡터(220)의 각 로우 i의 데이터 값을 그들의 R-indx 로우에서 동일한 로우 값 i를 갖는 메모리 어레이(120B)의 모든 계산 칼럼에 분배할 수 있다.
먼저, 데이터 구성기(114)는 로우 R-indx의 각 계산 칼럼 Col-k에서 1의 로우 값을 찾을 수 있다. 이 예시에서는, 로우 R-indx에 값 1을 갖는 계산 칼럼 Col-k가 없다. 다음에, 데이터 구성기(114)는 로우 R-indx의 각 계산 칼럼 Col-k에서 2의 로우 값을 찾을 수 있다. 데이터 구성기(114)는 점선(410)으로 지시된 바와 같이, Col-1을 값 2를 갖는 것으로 식별할 수 있고, 데이터 값인 -2를 화살표(420)에 지시된 바와 같이 계산 칼럼 Col-1의 로우 V-val에 기록할 수 있다.
도 5에서, 데이터 구성기(114)는 점선(510)으로 지시된 바와 같이 계산 칼럼 Col-2에서 다음 로우 값인 3을 찾을 수 있고, 화살표(520)에 의해 지시된 바와 같이 조밀 벡터(220)의 제3 위치에 저장된 데이터 값을 로우 V-val의 Col-2에 기록할 수 있다. 마지막으로, 도 6에서, 데이터 구성기(114)는 각각 점선(610, 611)에 의해 지시된 바와 같이 계산 칼럼 Col-3 및 Col-4 둘 다에서 다음 로우 값인 4를 찾을 수 있고, 화살표(620, 621)에서 각각 지시된 바와 같이 로우 V-val의 계산 칼럼 Col-3 과 Col-4에 조밀 벡터(220)의 제4 위치에 저장된 데이터 값을 기록할 수 있다.
연산의 세부 사항을 모호하게 하지 않기 위해 모든 도면의 예시에 일부 데이터 값이 존재하지 않는다는 것이 이해될 것이다. 그러나, 값들은 메모리 어레이(120)에 존재한다.
이제 곱셈 연산의 개략도인 도 7이 참조된다. 벡터 행렬 곱셈 연산의 각 단계에 대한 승수 및 피승수는 메모리 어레이(120C)의 동일한 계산 칼럼에 저장되는 것으로 이해될 수 있다. (도 1의) 곱셈 유닛(116)은, 동시에 모든 계산 칼럼에서 M-val에 저장된 값에 V-val에 저장된 값을 곱하고, 그 결과를 Prod 로우에 저장한다. Col-1의 M-val 에 저장된 값은 3이고, Col-1의 V-val에 저장된 값은 -2이며, 이들의 곱셈 결과 3*(-2) = (-6)은 Col-1의 Prod 로우에 저장된다. 마찬가지로, Col-2의 Prod 로우에는 5*3 = 15 값이 저장되고, Col-3의 Prod 로우에는 9*(-1) = (-9)이 저장되고, Col-4의 Prod 로우에는 17*(-1) = (-17) 값이 저장된다.
식 1에 기술된 행렬 벡터 곱셈 연산 동안 가산기(118)에 의해 수행되는 합 연산의 개략도인 도 8이 이제 참조된다. 가산기(118)는 로우 C-indx 로우의 칼럼 값이 동일한 Prod 로우의 모든 요소를 합산할 수 있고, 대응하는 칼럼의 Out 로우에 합을 저장할 수 있는데, 즉, 이는 가산기(118)가 로우 C-indx의 동일한 칼럼 값 j를 가지는 모든 계산 칼럼 Col-k를 검색할 수 있고, 대응하는 칼럼의 로우 Res에 저장된 값을 가산할 수 있으며, 그 결과를 Col-j의 Out 로우에 저장할 수 있다는 것이다.
가산기(118)는 동일한 칼럼에 속하는, 즉, 동일한 C-indx를 갖는 대응하는 값들에 대해 수행된 시프트 및 가산 연산을 사용하여 합계를 계산할 수 있다.
예를 들어, (원으로 표시된) Col-2 및 Col-3 둘 다 C-indx 로우에 저장된 칼럼 값은 2이며, 이는 원래의 희소 행렬(200)의 동일한 칼럼으로부터 유래된 연관 메모리 어레이(120C)의 이러한 계산 칼럼의 M-val 로우에 저장된 값을 지시한다. 식 1에 따르면, 동일한 칼럼의 곱셈 결과는 가산되어야하고, 따라서, 가산기(118)는 칼럼 Col-2의 Out 로우(802)에 관련 칼럼의 Res 값들의 합을 기록할 수 있다.
가산기(118)는 희소 행렬(200)의 각 칼럼에서 유래된 모든 항목들의 합을 Out 로우의 적절한 칼럼에 기록할 수 있다. 도 2의 예시에서, 연관 메모리 어레이(120C)의 Col-1에 저장된 희소 행렬(200)의 칼럼 1에는 단 하나의 값만이 존재한다. 따라서, Col-1의 Prod 로우에 저장된 값 -6은 Out 로우에 그대로 복사된다. 따라서, 가산기(118)는 C-indx 로우에 단 하나의 칼럼 값이 있는 (칼럼 1 및 4와 같은) 계산 칼럼에서 Prod 로우로부터 Out 로우로 값을 복사할 수 있다. 그렇지 않으면, 가산기(118)는 C-indx 로우에서 동일한 칼럼 값을 갖는 계산 칼럼에 대한 결과 값을 가산할 수 있다.
Out 로우는 희소 행렬과 조밀 벡터의 곱셈의 결과라는 것이 이해될 수 있다.
희소 행렬에 조밀 벡터를 곱하기 위한 시스템(100)의 연산을 설명하는 개략적인 흐름도(900)인 도 9를 참조한다. 910에서, 희소 행렬의 0이 아닌 요소 각각에 대해, 데이터 구성기(114)는 이하의 값들을 동일한 칼럼에 저장할 수 있다: M-Val 로우의 0이 아닌 값, C-indx 로우의 원래 행렬에 있는 값의 칼럼 인덱스, 및 R-indx 로우의 원래 행렬의 로우 인덱스.
920에서, 데이터 구성기(114)는 희소 행렬의 k번째 로우로부터의 요소를 저장하는 모든 칼럼의 로우 V-val에 조밀 벡터의 k번째 요소의 데이터 값을 기록할 수 있다. 930에서, 곱셈 유닛(116)은, 모든 계산 칼럼에서 동시에, 피승수 M-val의 값과 승수 V-val의 값을 곱하고, 그 결과를 Prod 로우에 저장할 수 있다. 940에서, 가산기(118)는 희소 행렬의 동일한 칼럼으로부터 유래한 Prod 로우에 저장된 값, 즉, 로우 C-indx에서 동일한 칼럼 값을 갖는 항목을 함께 가산할 수 있다.
흐름도(900)에서 도시된 단계는 제한하기 위한 것으로 의도된 것은 아니며, 통상의 기술자는 이러한 흐름도가 더 많거나 적은 단계로 실행될 수 있고, 또는 상이한 순서의 단계로, 또는 더 많거나 적은 기능을 가지는 각각의 단계로, 또는 그들의 임의의 조합으로 실행될 수 있다는 것을 이해할 것이다.
희소 행렬에 조밀 벡터를 곱하는 경우에 전술한 바와 같은 단일 희소 행렬을 저장하는 기술이 2개의 희소 행렬을 곱하기 위해서도 이용될 수 있다는 것 또한 이해될 수 있다. 이제, 그들의 메모리 표현인 Mem-M1 및 Mem-M2를 가지는 2개의 예시적인 행렬 M1과 M2, 및 곱셈 M3 = M2*M1의 예상되는 결과인 행렬 M3의 개략도인 도 10을 참조한다. Mem-M1 및 Mem-M2는 도 1의 메모리 어레이(120)의 로우 및 계산 칼럼을 차지한다.
이제, 위치 Mem-M1 및 Mem-M2에서 메모리 어레이(120)에 저장된 2개의 희소 행렬 M1 및 M2를 곱하기 위해 수행되는 단계들을 갖는 개략적인 흐름도(1100)인 도 11을 참조한다.
단계 1100에서, 데이터 구성기(114)는 Mem-M1에 표시되지 않은 다음 계산 칼럼을 위치시킬 수 있다. 단계 1120에서, 데이터 구성기(114)는 위치된 계산 칼럼의 값과 동일한 R-indx의 값을 갖는 Mem-M1의 모든 항목을 표시할 수 있다. 단계 1130에서, 데이터 구성기(114)는 새롭게 표시된 계산 칼럼 중 하나를 현재 계산 칼럼으로 선택할 수 있다. 단계 1140에서, 데이터 구성기(114)는, Mem-M1의 현재 계산 칼럼으로부터 Val-M1의 값을, Mem-M1에서 현재 항목의 C-indx의 값과 동일한 R-indx에서의 값을 갖는 Mem-M2의 모든 계산 칼럼의 Val-M1에 복사할 수 있다.
단계 1150에서, 데이터 구성기(114)는 새로 선택된 모든 항목이 핸들링되었는지를 확인할 수 있다. 핸들링되지 않은 항목들이 여전히 있다면, 데이터 구성기(114)는 단계 1130로 되돌아갈 수 있다. 단계 1160에서, 곱셈 유닛(116)은 Mem M2에서 Val-M1의 값과 Val-M2의 값을 병렬로 곱할 수 있고, M2의 칼럼과 M1의 로우의
Figure pct00002
의 결과를 제공할 수 있다. 단계 1170에서, 가산기(118)는 식 1의 시그마를 제공하는 모든 곱셈 결과를 가산할 수 있고, 단계 1180에서 가산기(118)는 결과를 출력 테이블 Mem-M3에 복사할 수 있다. 단계 1190에서, 데이터 구성기(114)는 모든 계산 칼럼이 핸들링되었는지를 검사할 수 있다. 만약 핸들링되었다고 표시되지 않은 Mem-M1 내에 계산 칼럼이 있다면, 데이터 구성기(114)는 단계 1110로 되돌아갈 수 있고, 그렇지 않다면, 연산은 단계 1195에서 완료될 수 있으며, 결과 행렬 M3은 행렬이 어떻게 저장되는지를 기술하는 도 3과 관련하여 기술된 연산과 반대로 Mem-M3에 저장된 정보로부터 생성될 수 있다.
도 11의 흐름과 관련된 의사코드(pseudocode)가 이하에 제공된다:
10) M1에서 표시되지 않은 모든 엔트리에 대한 반복
20) M1에서 표시되지 않은 다음 엔트리 선택
30) 로우 인덱스 판독
40) 동일한 로우 인덱스를 갖는 M1의 모든 항목 표시
50) M1의 표시된 모든 로우에 대해
60) col(M1) = row(M2)인 M2 검색
70) 선택된 값을 출력 테이블 비트 라인에 복사(분배)
80) 병렬로 곱하기
90) 동일한 칼럼에 속하는 모든 값을 시프트 및 가산
100) 출력 테이블 업데이트
110) 출구
의사코드 뿐만 아니라 흐름도(1100)에 대한 설명은 예시적인 목적이며, 통상의 기술자는 이러한 흐름이 변형하여 실시될 수 있음을 이해할 수 있다. 이들 변형은 통상의 기술자에게 명백할 수 있는 다른 변형들 중에서 더 많은 단계, 더 적은 단계, 단계의 순서 변경, 단계 건너뛰기 등을 포함할 수 있다.
흐름도(1100)에 따라, 2개의 예시적인 희소 행렬을 곱하는 단계가 도 12 내지 도 36에 개략적으로 도시되어 있으며, 이제 이를 참조한다. 도 12에서, 데이터 구성기(114)는 Mem-M1에서 Col-1인 표시되지 않은 다음 계산 칼럼을 찾을 수 있다. 다음으로, 도 13에서, 데이터 구성기(114)는 발견된 계산 칼럼의 R-indx의 값, 1을 판독할 수 있다. 다음으로, 도 14에서, 데이터 구성기(114)는 발견된 계산 칼럼의 R-indx의 값과 동일한 R-indx의 값을 갖는 Mem-M1의 모든 계산 칼럼을 찾을 수 있으며, 이들 모든 계산 칼럼을 새롭게 선택되고, 발견된 계산 칼럼을 포함하는 것으로 표시할 수 있다.
도 15에서, 데이터 구성기(114)는 표시된 계산 칼럼, Col-1중 하나를 현재로 선택할 수 있고, Mem-M1의 Col-1의 C-indx에 저장된 값 2를 판독할 수 있다. 도 16에서, 데이터 구성기(114)는, Mem-M1의 Col-1에서 C-indx의 값과 동일한 R-indx 값을 갖는 Mem-M2의 모든 계산 칼럼을 찾을 수 있으며, 도 17에서, 데이터 구성기(114)는 값인 1을 Mem-M1의 계산 칼럼 Col-1의 Val-M1으로부터 Mem-M2의 Col-1의 Val-M1으로 복사할 수 있고, 현재 계산 칼럼(Mem-M1에서 Col-1)이 핸들링된 것으로 표시할 수 있다.
도 13 내지 도 17에 기술된 연산들은 모든 표시된 항목들이 핸들링될 때까지 반복되며, 이 예시에서 이러한 연산은 (표시된 계산 칼럼이 2개만 존재하므로) 단지 한 번 더 반복된다. 도 18에서, 데이터 구성기(114)는 Col-4인 표시된 다음 계산 칼럼을 찾을 수 있으며, C-indx로부터 4인 값을 판독할 수 있다. 도 19에서, 데이터 구성기(114)는 R-index = 4를 갖는 Mem-M2의 모든 계산 칼럼을 찾을 수 있고, 도 20에서, 데이터 구성기(114)는 Mem-M1의 Col-4로부터의 Val-M1을 Mem-M2의 Col-3과 Col-4의 Val-M1으로 복사할 수 있고, Mem-M1의 Col-4이 핸들링된 것으로 표시할 수 있다.
도 21에서, 곱셈 유닛(116)은 Val-M1의 값에 Mem-M2의 계산 칼럼 Col-1, Col-3, 및 Col-4의 Val-M2의 값을 동시에 곱할 수 있고, Mem-M2의 Prod 로우에 저장할 수 있다. Mem-M2가 동일한 C-indx를 갖는 다수의 계산 칼럼을 포함하는 경우, 가산기(118)는 관련 계산 칼럼의 값을 합산할 수 있고, Mem-M2의 Out 로우에 결과를 저장할 수 있다는 것을 이해할 수 있다. 이 예시에서, 각각의 곱해진 계산 칼럼은 C-indx에 또다른 값을 가질 수 있으므로, Prod 로우의 값은 그대로 Out 로우에 복사된다.
도 22에서, 곱셈 유닛(116)은 값 C-indx와 곱해진 모든 계산 칼럼의 Out 로우의 결과, 즉, Mem-M2의 Col-1, Col-3, 및 Col-4와 (핸들링된 모든 계산 칼럼에 대해 동일한) Mem-M1으로부터의 R-indx의 값을 Mem-M3에 복사할 수 있다.
도 23 내지 도 38에서, Mem-M1의 모든 계산 칼럼이 핸들링될 때까지 동일한 절차가 반복되고, 최종 결과는 도 38의 Mem-M3에 저장된다. 결과 행렬은 도 10의 예상된 행렬 M3임을 이해할 수 있다.
도 39에 도시된 바와 같이 조밀 행렬을 희소 벡터와 곱하기 위해 유사한 개념이 사용될 수 있다는 것이 이해될 것이고, 도 39이 이제 참조된다. 데이터 구성기(114)는 조밀 행렬 M4의 모든 값을 그들의 행렬 표현과 유사한 연관 메모리(120)의 Mem-M4에 저장할 수 있다. 데이터 구성기(114)는 연관 메모리(120)의 로우 Val-V1에 벡터 V1의 0이 아닌 요소의 값, 및 연관 메모리(120)의 로우 인덱스에 벡터 V1의 그들의 연관된 위치를 저장할 수 있다.
도 40에서, 데이터 구성기(114)는 1인 Mem-V1의 제1 값을 Mem-M4의 Col-1 및Col-2의 모든 계산 칼럼에 복사할 수 있다. 도 41에서, 곱셈 유닛(116)은 2인 Mem-v1의 선택된 계산 칼럼의 인덱스 로우의 값을 판독할 수 있고, Mem-M4의 관련 로우인 Row-2에 저장된 값을 로우 Val-V1에 저장된 값과 곱할 수 있으며, 그 결과를 Mem-M4의 로우 Prod-1에 기록할 수 있다.
도 42에서, 데이터 구성기(114)는 다음 값인 3을 Mem-V1로부터 Mem-M4의 Val-V1으로 복사할 수 있고, 도 43에서, 곱셈 유닛(116)은, Mem-V1의 선택된 계산 칼럼의 인덱스 로우의 값인 4를 판독할 수 있고, Mem-M4의 관련 로우인 Row-4에 저장된 값을 로우 Val-V1에 저장된 값과 곱할 수 있으며, 가산기(118)는 곱셈의 결과를 이전 단계의 결과에 더할 수 있으므로, Mem-M4의 로우 Prod의 값은 Col-1에서 4 + (3 × -1) = 1이고, Col-2에서 -2 + (3 × 2) = 4이며, 이는 Mem-M4의 로우 Prod에 예상된 결과 벡터를 제공한다.
본 발명의 대안적인 실시예에서, 곱셈 유닛(116)과 가산기(118)는 곱셈과 덧셈 연산을 동시에 수행하는 동일한 구성 요소라는 것을 이해할 수 있다.
본 발명의 특정 특징이 본 명세서에서 예시되고 설명되었지만, 많은 수정, 대체, 변경, 및 등가물이 통상의 기술자에게 발생할 것이다. 그러므로, 첨부된 청구범위는 본 발명의 진정한 사상에 속하는 그러한 수정 및 변경을 모두 포함하도록 의도된 것으로 이해되어야 한다.

Claims (15)

  1. 연관 메모리 디바이스에서 제1 희소 행렬과 제2 희소 행렬을 곱하는 방법으로서,
    상기 연관 메모리 디바이스의 계산 칼럼에 상기 제2 희소 행렬의 0이 아닌 요소 각각과 관련된 피승수(multiplicand) 정보를 저장하는 단계 - 상기 피승수 정보는 적어도 피승수값을 포함함-;
    제1 선형 대수 규칙에 따라, 상기 제1 희소 행렬의 0이 아닌 요소와 관련된 승수(multiplier) 정보를, 상기 승수 정보와 연관된 피승수 각각과 연관시키는 단계 - 상기 승수 정보는 적어도 승수값을 포함함 -;
    상기 승수 정보를, 상기 연관된 피승수 각각의 상기 계산 칼럼에 동시에 저장하는 단계;
    상기 계산 칼럼에 곱을 제공하기 위해, 모든 계산 칼럼에서, 승수값을 상기 승수값과 연관된 피승수값과 동시에 곱하는 단계; 및
    결과 행렬을 제공하기 위해, 제2 선형 대수 규칙에 따라 연관된 계산 칼럼으로부터의 곱을 함께 가산하는 단계를 포함하는,
    제1 희소 행렬과 제2 희소 행렬을 곱하는 방법.
  2. 제1항에 있어서,
    상기 정보는 로우 인덱스 및 칼럼 인덱스를 또한 포함하는,
    제1 희소 행렬과 제2 희소 행렬을 곱하는 방법.
  3. 제2항에 있어서,
    상기 제1 선형 대수 규칙은, 상기 승수의 로우 인덱스는 상기 피승수의 칼럼 인덱스와 동일한 것을 포함하는,
    제1 희소 행렬과 제2 희소 행렬을 곱하는 방법.
  4. 제2항에 있어서,
    상기 제2 선형 대수 규칙은, 상기 계산 칼럼에서 상기 피승수의 칼럼 인덱스를 따르는 것을 포함하는,
    제1 희소 행렬과 제2 희소 행렬을 곱하는 방법.
  5. 제2항에 있어서,
    상기 제1 희소 행렬은 조밀 벡터(dense vector)이고, 상기 결과 행렬은 벡터인,
    제1 희소 행렬과 제2 희소 행렬을 곱하는 방법.
  6. 제4항에 있어서,
    상기 제1 희소 행렬의 각 로우는 벡터이고, 각각의 벡터는 개별적으로 계산되며,
    상기 제2 선형 대수 규칙은, 상기 계산 칼럼에서 상기 승수의 동일한 로우 인덱스를 따르는 것을 또한 포함하는,
    제1 희소 행렬과 제2 희소 행렬을 곱하는 방법.
  7. 제2항에 있어서,
    상기 연관시키는 단계는,
    상기 제1 희소 행렬의 각 승수와 연관된 모든 계산 칼럼을 동시에 검색하는 단계를 포함하는,
    제1 희소 행렬과 제2 희소 행렬을 곱하는 방법.
  8. 제7항에 있어서,
    상기 동시에 검색하는 단계는, 상기 제1 희소 행렬의 각 로우에 대해,
    상기 승수의 칼럼 인덱스를 상기 모든 계산 칼럼의 로우 인덱스와 동시에 비교하고, 상기 칼럼 인덱스와 동일한 로우 인덱스를 갖는 모든 계산 칼럼을 표시하는 단계를 포함하는,
    제1 희소 행렬과 제2 희소 행렬을 곱하는 방법.
  9. 제2항에 있어서,
    상기 가산하는 단계는, 동일한 칼럼 인덱스를 가진 모든 계산 칼럼을 동시에 검색하고, 동일한 칼럼 인덱스를 가진 계산 칼럼에서 모든 곱의 합을 계산하는 단계를 포함하는,
    제1 희소 행렬과 제2 희소 행렬을 곱하는 방법.
  10. 제1 희소 행렬과 제2 희소 행렬을 곱하기 위한 시스템으로서,
    로우 및 계산 칼럼에 배치된 연관 메모리 어레이;
    상기 계산 칼럼의 승수 및 피승수의 각각의 쌍에 관한 데이터를 저장하는 데이터 구성기로서, 상기 데이터는 적어도 제1 선형 대수 규칙에 따라 연관된 상기 승수 및 피승수의 값을 포함하는, 데이터 구성기;
    모든 계산 칼럼을 동시에 활성화하는 곱셈 유닛으로서, 상기 활성화는 각각의 계산 칼럼에서 상기 승수의 값과 상기 피승수의 값 사이의 곱셈 연산의 곱을 제공하는, 곱셈 유닛; 및
    연관된 계산 칼럼에서 곱을 동시에 가산하는 가산기를 포함하는,
    제1 희소 행렬과 제2 희소 행렬을 곱하기 위한 시스템.
  11. 제10항에 있어서,
    상기 데이터는 로우 인덱스 및 칼럼 인덱스를 또한 포함하는,
    제1 희소 행렬과 제2 희소 행렬을 곱하기 위한 시스템.
  12. 제10항에 있어서,
    상기 연관된 계산 칼럼은 상기 제2 희소 행렬의 칼럼을 공유하는,
    제1 희소 행렬과 제2 희소 행렬을 곱하기 위한 시스템.
  13. 연관 메모리 디바이스의 벡터와 희소 행렬을 곱하는 방법으로서,
    상기 희소 행렬의 0이 아닌 행렬 요소 각각에 대해, 상기 연관 메모리 디바이스의 계산 칼럼에 상기 행렬 요소의 행렬 값, 상기 행렬 요소의 행렬 로우 인덱스, 및 상기 행렬 요소의 행렬 칼럼 인덱스를 저장하는 단계;
    상기 벡터 위치와 동일한 행렬 로우 인덱스를 갖는 계산 칼럼에 상기 벡터의 벡터 인덱스로부터의 벡터 값을 저장하는 단계;
    동시에, 모든 계산 칼럼에서, 곱을 생성하기 위해 행렬 값에 벡터 값을 곱하는 단계; 및
    결과 벡터를 제공하기 위해 동일한 행렬 칼럼 인덱스를 가지는 계산 칼럼에 모든 곱을 함께 가산하는 단계를 포함하는,
    연관 메모리 디바이스의 벡터와 희소 행렬을 곱하는 방법.
  14. 제13항에 있어서,
    상기 벡터 값을 저장하는 단계는,
    각 벡터 인덱스와 동일한 행렬 로우 인덱스를 갖는 모든 계산 칼럼을 동시에 검색하고, 상기 검색에 의해 발견된 모든 계산 칼럼에 상기 벡터 인덱스로부터의 벡터 값을 동시에 저장하는 단계를 또한 포함하는,
    연관 메모리 디바이스의 벡터와 희소 행렬을 곱하는 방법.
  15. 희소 행렬을 이용한 메모리 곱셈 방법으로서,
    상기 희소 행렬의 0이 아닌 요소 각각을, 값과 하나 이상의 인덱스로 표현하는 단계;
    상기 0이 아닌 요소로부터 승수를 선택하고, 상기 선택된 승수의 승수-인덱스를 페칭(fetching)하는 단계;
    매칭된 피승수-인덱스를 가지는 피승수를 검색하는 단계;
    상기 승수를 상기 피승수의 칼럼에 병렬적으로 분배하는 단계; 및
    상기 승수에 상기 피승수를 병렬적으로 곱하고, 상기 모든 칼럼으로부터의 곱셈 결과를 가산하는 단계를 포함하는,
    희소 행렬을 이용한 메모리 곱셈 방법.
KR1020197024553A 2017-01-22 2018-01-17 연관 메모리 디바이스의 희소 행렬 곱셈 KR102333638B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762449036P 2017-01-22 2017-01-22
US62/449,036 2017-01-22
PCT/IB2018/050279 WO2018134740A2 (en) 2017-01-22 2018-01-17 Sparse matrix multiplication in associative memory device

Publications (2)

Publication Number Publication Date
KR20190104223A true KR20190104223A (ko) 2019-09-06
KR102333638B1 KR102333638B1 (ko) 2021-12-01

Family

ID=62907052

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197024553A KR102333638B1 (ko) 2017-01-22 2018-01-17 연관 메모리 디바이스의 희소 행렬 곱셈

Country Status (4)

Country Link
US (2) US10489480B2 (ko)
KR (1) KR102333638B1 (ko)
CN (2) CN110325988B (ko)
WO (1) WO2018134740A2 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102092263B1 (ko) * 2016-07-17 2020-03-24 쥐에스아이 테크놀로지 인코포레이티드 일정한 처리 시간 내에 k개의 극값을 찾는 방법
US10489480B2 (en) * 2017-01-22 2019-11-26 Gsi Technology Inc. Sparse matrix multiplication in associative memory device
US10366322B2 (en) 2017-10-06 2019-07-30 DeepCube LTD. System and method for compact and efficient sparse neural networks
US10509846B2 (en) * 2017-12-13 2019-12-17 Intel Corporation Accelerator for processing data
US11216732B2 (en) * 2018-05-31 2022-01-04 Neuralmagic Inc. Systems and methods for generation of sparse code for convolutional neural networks
EP3690679A4 (en) 2018-08-06 2021-02-17 Huawei Technologies Co., Ltd. MATRIX PROCESSING PROCESS AND APPARATUS, AND LOGIC CIRCUIT
US11163528B2 (en) * 2018-11-29 2021-11-02 International Business Machines Corporation Reformatting matrices to improve computing efficiency
CN111339490B (zh) * 2020-02-18 2024-04-19 三星(中国)半导体有限公司 矩阵乘法计算方法和装置
CN112015472B (zh) * 2020-07-16 2023-12-12 中国科学院计算技术研究所 基于数据流架构的稀疏卷积神经网络加速方法及系统
CN116325003A (zh) 2020-10-01 2023-06-23 Gsi 科技公司 用于大流行研究的功能性蛋白质分类
CN112712173B (zh) * 2020-12-31 2024-06-07 北京清微智能科技有限公司 基于mac乘加阵列的稀疏化运算数据的获取方法及系统
CN112799635B (zh) * 2021-02-08 2022-11-15 算筹(深圳)信息科技有限公司 一种新型外积累加求解稠密矩阵与稀疏矩阵内积的方法
EP4310700A4 (en) * 2021-03-31 2024-05-29 Huawei Technologies Co., Ltd. MATRIX MULTIPLIER, MATRIX CALCULATION METHOD, AND RELATED DEVICE
CN113378115B (zh) * 2021-06-22 2024-04-09 东南大学 一种基于磁性随机存储器的近存稀疏向量乘法器
CN113506589B (zh) * 2021-06-28 2022-04-26 华中科技大学 一种稀疏矩阵存算系统及方法
CN114003196B (zh) * 2021-09-02 2024-04-09 上海壁仞智能科技有限公司 矩阵运算装置与矩阵运算方法
CN117931131B (zh) * 2024-03-22 2024-07-26 中国人民解放军国防科技大学 一种稀疏矩阵乘指令实现方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100029180A (ko) * 2007-03-15 2010-03-16 리니어 알제브라 테크놀로지스 리미티드 트리비얼 산술 연산들을 이용하는 프로세서
KR101400577B1 (ko) * 2013-03-11 2014-06-19 한양대학교 산학협력단 Gpu를 이용한 희소행렬 곱셈 방법
KR101929847B1 (ko) * 2018-05-15 2018-12-17 주식회사 퓨쳐디자인시스템 희소행렬 연산 방법과 장치

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5014327A (en) 1987-06-15 1991-05-07 Digital Equipment Corporation Parallel associative memory having improved selection and decision mechanisms for recognizing and sorting relevant patterns
US5206822A (en) * 1991-11-15 1993-04-27 Regents Of The University Of California Method and apparatus for optimized processing of sparse matrices
US5216822A (en) * 1992-05-05 1993-06-08 Silvia Madiedo Blow dryer air filter
US20040122887A1 (en) * 2002-12-20 2004-06-24 Macy William W. Efficient multiplication of small matrices using SIMD registers
EP2438512B1 (en) * 2009-06-02 2019-03-06 Intel Corporation Methods, systems and computer program products for providing a distributed associative memory base
US10832746B2 (en) 2009-07-16 2020-11-10 Gsi Technology Inc. Non-volatile in-memory computing device
US8238173B2 (en) 2009-07-16 2012-08-07 Zikbit Ltd Using storage cells to perform computation
CN102033854A (zh) * 2010-12-17 2011-04-27 中国科学院软件研究所 针对稀疏矩阵的数据存储方法及基于该方法的SpMV实现方法
CN102141976B (zh) * 2011-01-10 2013-08-14 中国科学院软件研究所 稀疏矩阵的对角线数据存储方法及基于该方法的SpMV实现方法
US9317482B2 (en) * 2012-10-14 2016-04-19 Microsoft Technology Licensing, Llc Universal FPGA/ASIC matrix-vector multiplication architecture
CN103106183A (zh) * 2013-01-29 2013-05-15 福建天晴数码有限公司 基于mapreduce的大规模稀疏矩阵乘法运算的方法
US9367519B2 (en) * 2013-08-30 2016-06-14 Microsoft Technology Licensing, Llc Sparse matrix data structure
US10153042B2 (en) 2013-11-28 2018-12-11 Gsi Technology Inc. In-memory computational device with bit line processors
US9418719B2 (en) 2013-11-28 2016-08-16 Gsi Technology Israel Ltd. In-memory computational device
US9286216B2 (en) * 2014-01-16 2016-03-15 Carnegie Mellon University 3DIC memory chips including computational logic-in-memory for performing accelerated data processing
US9697176B2 (en) * 2014-11-14 2017-07-04 Advanced Micro Devices, Inc. Efficient sparse matrix-vector multiplication on parallel processors
US9760538B2 (en) * 2014-12-22 2017-09-12 Palo Alto Research Center Incorporated Computer-implemented system and method for efficient sparse matrix representation and processing
US10996959B2 (en) * 2015-01-08 2021-05-04 Technion Research And Development Foundation Ltd. Hybrid processor
CN110335633B (zh) 2015-05-05 2024-01-12 Gsi科技公司 Sram多单元操作
US9558156B1 (en) * 2015-11-24 2017-01-31 International Business Machines Corporation Sparse matrix multiplication using a single field programmable gate array module
US10489480B2 (en) * 2017-01-22 2019-11-26 Gsi Technology Inc. Sparse matrix multiplication in associative memory device
US10452744B2 (en) * 2017-03-27 2019-10-22 Oracle International Corporation Memory management for sparse matrix multiplication
US10620951B2 (en) * 2018-06-22 2020-04-14 Intel Corporation Matrix multiplication acceleration of sparse matrices using column folding and squeezing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100029180A (ko) * 2007-03-15 2010-03-16 리니어 알제브라 테크놀로지스 리미티드 트리비얼 산술 연산들을 이용하는 프로세서
KR101400577B1 (ko) * 2013-03-11 2014-06-19 한양대학교 산학협력단 Gpu를 이용한 희소행렬 곱셈 방법
KR101929847B1 (ko) * 2018-05-15 2018-12-17 주식회사 퓨쳐디자인시스템 희소행렬 연산 방법과 장치

Also Published As

Publication number Publication date
CN113961876A (zh) 2022-01-21
WO2018134740A2 (en) 2018-07-26
US10846365B2 (en) 2020-11-24
US20200097521A1 (en) 2020-03-26
WO2018134740A3 (en) 2018-09-27
CN110325988A (zh) 2019-10-11
CN110325988B (zh) 2021-10-29
CN113961876B (zh) 2024-01-30
US20180210862A1 (en) 2018-07-26
US10489480B2 (en) 2019-11-26
KR102333638B1 (ko) 2021-12-01

Similar Documents

Publication Publication Date Title
KR102333638B1 (ko) 연관 메모리 디바이스의 희소 행렬 곱셈
KR102458885B1 (ko) 인메모리 행렬 곱셈 및 뉴럴 네트워크에서 그것의 사용
CN111052122B (zh) 模拟量子电路
CN110520834B (zh) 替选循环限制
Ozaki et al. Error-free transformations of matrix multiplication by using fast routines of matrix multiplication and its applications
Stephen et al. Counting inequivalent monotone Boolean functions
KR20190113007A (ko) 합성곱 연산을 위한 장치 및 방법
Maurer et al. A parallel block LU decomposition method for distributed finite element matrices
CN113853601A (zh) 用于矩阵运算的装置和方法
Kant Finding linear dependencies in integration-by-parts equations: a Monte Carlo approach
Hull Machine learning for economics and finance in tensorflow 2
Paniello Evolution coalgebras
Gu et al. Tensor attention training: Provably efficient learning of higher-order transformers
US20210049496A1 (en) Device and methods for a quantum circuit simulator
Afshord et al. An input variable partitioning algorithm for functional decomposition of a system of Boolean functions based on the tabular method
Baig et al. Experimental data for Goldfeld’s conjecture over function fields
Zhang et al. Pass-efficient randomized LU algorithms for computing low-rank matrix approximation
JP2014021797A (ja) 欠損値予測装置及び商品推薦装置及び方法及びプログラム
Dembińska Asymptotic normality of numbers of observations in random regions determined by order statistics
Roma Dynamic scaling based preconditioning for truncated Newton methods in large scale unconstrained optimization
Erway et al. Shifted l-bfgs systems
US20220414184A1 (en) Data processing apparatus and data processing method
Stavrou Canonical forms of order-k (k= 2, 3, 4) symmetric tensors of format 3×…× 3 over prime fields
WO2023032013A1 (ja) 演算装置、演算方法、及びプログラム
Andelić et al. Vertex types in some lexicographic products of graphs

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant