CTNF 17/991,493 CTNF 95226 DETAILED ACTION Notice of Pre-AIA or AIA Status 07-03-aia AIA 15-10-aia The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA. Information Disclosure Statement The information disclosure statement (IDS) submitted on 11/22/2022 is in compliance with the provisions of 37 CFR 1.97. Accordingly, the information disclosure statement is being considered by the examiner. Specification The abstract is objected to because it refers to purported merits of the invention. Examiner suggest deleting the statements that includes improve performance and increased data locality, reduced cache misses, reduced time stalling on memory accesses, and reduced bandwidth consumption. See MPEP § 608.01(b) for guidelines for the preparation of patent abstracts. Claim Objections Claims 1-20 are objected to under 37 C.F.R. 1.71(a) which requires “full, clear, concise, and exact terms” as to enable any person skilled in the art or science to which the invention or discovery appertains, or with which it is most nearly connected, to make and use the same. The following should be corrected. A. In claim 1 lines 3-4, “the matrix multiplication operations” should read “the sparse matrix multiplication operations” instead for consistency of claim terminologies. Claims 4, 15 and 17 recite a similar limitation and is objected to for the same reason. Claims 2-14 inherit the same deficiency as claim 1 by reason of dependence. Claims 16-20 inherit the same deficiency as claim 15 by reason of dependence. Claim Rejections - 35 USC § 102 07-07-aia AIA 07-07 The following is a quotation of the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action: A person shall be entitled to a patent unless – 07-08-aia AIA (a)(1) the claimed invention was patented, described in a printed publication, or in public use, on sale, or otherwise available to the public before the effective filing date of the claimed invention. 07-12-aia AIA (a)(2) the claimed invention was described in a patent issued under section 151, or in an application for patent published or deemed published under section 122(b), in which the patent or application, as the case may be, names another inventor and was effectively filed before the effective filing date of the claimed invention. 07-15 AIA Claim s 1-4, 10, 15-17 and 20 are rejected under 35 U.S.C. 102( a)(1 ) as being anticipated by Zhang et al. (NPL – “ Gamma: Leveraging Gustavson’s Algorithm to Accelerate Sparse Matrix Multiplication ”), hereinafter Zhang . Regarding claim 1, Zhang teaches a processor comprising (Zhang Figs. 4-5 processor – GAMMA accelerator) : a scheduler configured to schedule sparse matrix multiplication operations based at least upon similarity of two or more rows in a sparse matrix used for the matrix multiplication operations (Zhang Figs. 4-5; scheduler – scheduler; section 3 “Gamma consists of … a scheduler that adaptively distributes work across PEs … the scheduler fetches row fibers from matrix A and dispatches them to PEs”; section 3.3; section 1 first paragraph “we focus on accelerating sparse matrix-sparse matrix multiplication (spMspM)”; page 688 left col middle “we propose a preprocessing technique (Sec. 4) that combines row reordering”; section 4-4.1 “Affinity-based row-reordering targets disparate adjacent rows of A by reordering rows so that similar rows are processed consecutively”; sparse matrix multiplication operations - sparse matrix-sparse matrix multiplication (spMspM)). Regarding claim 2, Zhang teaches all the limitations of claim 1 as stated above. Further, Zhang teaches wherein the similarity of the two or more rows in the sparse matrix used for the sparse matrix multiplication operations is based upon locations of non-zero values in the two or more rows of the sparse matrix (Zhang section 4.1). Regarding claim 3, Zhang teaches all the limitations of claim 1 as stated above. Further, Zhang teaches wherein the locations of non-zero values in the two or more rows in the sparse matrix are determined during generation of a Compressed Sparse Row (CSR) representation of the sparse matrix (Zhang Fig. 1, section 2.1, and section 4.1). Regarding claim 4, Zhang teaches all the limitations of claim 1 as stated above. Further, Zhang teaches wherein the similarity of the two or more rows in the sparse matrix used for the sparse matrix multiplication operations is based upon locations of cached data used for the matrix multiplication operations (Zhang section 4.1). Regarding claim 10, Zhang teaches all the limitations of claim 1 as stated above. Further, Zhang teaches wherein accesses to data in the two or more rows in the sparse matrix are scheduled together (Zhang section 4-4.1). Regarding claims 15-17 and 20, they are directed to a method practiced by the processor of claims 1-2, 4 and 10 respectively. All steps performed by the method of claims 15-17 and 20 would be practiced by the processor of claims 1-2, 4 and 10 respectively. Claims 1-2, 4 and 10 analysis applies equally to claims 15-17 and 20 respectively . Claim Rejections - 35 USC § 103 07-06 AIA 15-10-15 In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status. 07-20-aia AIA The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action: A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made. 07-21-aia AIA Claim s 1-5, 10-17 and 20 are rejected under 35 U.S.C. 103 as being unpatentable over Jiang et al. (NPL – “ A Novel Data Transformation and Execution Strategy for Accelerating Sparse Matrix Multiplication on GPUs ”), hereinafter Jiang, in view of Elsen et al. (US 20230041163 A1), hereinafter Elsen . Regarding claim 1, Jiang teaches a processor comprising (Jiang section 5.1 first paragraph processor – GPU) : a scheduler configured to schedule sparse matrix multiplication operations based at least upon similarity of two or more rows in a sparse matrix used for the matrix multiplication operations (Jiang abstract “In this work, we propose a novel row-reordering technique to improve data locality for SpMM and SDDMM on GPUs. The goal of such row-reordering is to place similar rows close to each other, allowing them to be processed together, and thus providing better temporal locality for the values of the dense matrix”; page 377 left col third paragraph “We propose to use a procedure to group similar row-reordering rows together”; Fig. 4 and section 3.1-3.2 “two rows with a large similarity should be put close to each other to allow more data reuse among the rows of the dense matrix”). Jiang does not explicitly teach a scheduler . However, on the same field of endeavor, Elsen discloses a scheduler configured to schedule sparse matrix multiplication operations (Else Figs. 1A-1B and paragraphs [0024, 0042]). Accordingly, it would have been obvious to one of ordinary skill in the art before the effective filling date of the claimed invention, to modify Jiang using Elsen and configure the processor to include a scheduler for scheduling the sparse matrix multiplication operations in order to distribute the workload of executing the sparse matrix multiplication operations across the processor for parallel processing (Elsen paragraphs [0024, 0031]. Furthermore, Elsen discloses that the parallel processing device in Fig. 1A-1B is a GPU in paragraph [0014], therefore, it would be obvious to include a scheduler in the GPU of Jiang because a scheduler appears to be a normal component of a GPU. Therefore, the combination of Jiang as modified in view of Elsen teaches a processor comprising: a scheduler configured to schedule sparse matrix multiplication operations based at least upon similarity of two or more rows in a sparse matrix used for the matrix multiplication operations. Regarding claim 2, Jiang as modified in view of Elsen teaches all the limitations of claim 1 as stated above. Further, Jiang as modified in view of Elsen teaches wherein the similarity of the two or more rows in the sparse matrix used for the sparse matrix multiplication operations is based upon locations of non-zero values in the two or more rows of the sparse matrix (Jiang Fig. 4 and section 3.1 first paragraph “Consider again the sparse matrix in Fig 1a. Row 0 has two identical columns (i.e. location of non-zeroes) with row 4, while row 1 has one identical column with row 5. If we exchange row 1 and row 4, we can get a reordered matrix as shown in Fig 4a”; section 3.1 fourth paragraph “For a sparse matrix, we first reorder the rows in a way that rows with identical columns are close to each other”). Regarding claim 3, Jiang as modified in view of Elsen teaches all the limitations of claim 2 as stated above. Further, Jiang as modified in view of Elsen teaches wherein the locations of non-zero values in the two or more rows in the sparse matrix are determined during generation of a Compressed Sparse Row (CSR) representation of the sparse matrix (Jiang Fig. 1 and section 2.1). Regarding claim 4, Jiang as modified in view of Elsen teaches all the limitations of claim 1 as stated above. Further, Jiang as modified in view of Elsen teaches wherein the similarity of the two or more rows in the sparse matrix used for the sparse matrix multiplication operations is based upon locations of cached data used for the matrix multiplication operations (Jiang page 377 left col middle “We propose to use a procedure to group similar row-reordering rows together … This allows rows with similar non-zeroes to be processed simultaneously and improves temporal locality in the cache when computing with the sparse tile” section 3.1 “Row-reordering can also help improve data locality for the sparse part – we can perform another round of row-reordering to bring similar rows in the sparse part together … Then for each thread-block only one memory access to the global memory is needed if there is no cache eviction. In this example, 6 accesses to the global memory are needed in total: 4 for the dense tiles and 2 for the sparse part. Compared with ASpT on the original sparse matrix (Fig 3c), row-reordering saves 5 more memory accesses and hence leads to better performance”). Regarding claim 5, Jiang as modified in view of Elsen teaches all the limitations of claim 1 as stated above. Further, Jiang as modified in view of Elsen teaches wherein the similarity of the two or more rows in the sparse matrix used for the sparse matrix multiplication operations is determined using one or more of Cosine similarity or Jaccard similarity of the two or more rows in the sparse matrix (Jiang section 3.2 “Two rows are similar if they have many non-zeros in identical columns. A natural definition of the similarity between two rows would be the Jaccard similarity between the two sets representing the two rows”). Regarding claim 10, Jiang as modified in view of Elsen teaches all the limitations of claim 1 as stated above. Further, Jiang as modified in view of Elsen teaches wherein accesses to data in the two or more rows in the sparse matrix are scheduled together (Jian Fig. 4 and page 377 left col third paragraph “we first reorder the rows of the sparse matrix such that rows with non-zeroes at similar locations are put in the same row panel … This allows rows with similar non-zeroes to be processed simultaneously and improves temporal locality in the cache when computing with the sparse tile”; section 3.1 last paragraph). Regarding claim 11, Jiang as modified in view of Elsen teaches all the limitations of claim 1 as stated above. Further, Jiang as modified in view of Elsen teaches wherein the scheduler is further configured to cause two or more different threads accessing the two or more rows in the sparse matrix to execute on one or more of a core with a cache, or on two or more cores with a shared cache (section 3.1 “because the number of nonzeros in each column of the dense tile may be increased (e.g., the first column of the first row panel in Fig 4a has 3 nonzeros), the data reuse in shared memory is improved, which leads to better amortization of the overhead of pre-loading data into the shared memory … Suppose two consecutive rows are processed by a thread-block of two warps. Then for each thread-block only one memory access to the global memory is needed if there is no cache eviction … These dense tiles are given to a GPU kernel that utilizes shared memory to cache the data of the input dense matrix”; section 2.3 “A straight-forward GPU implementation can assign a warp to process a row of the sparse matrix … with each thread in the warp processing a column of the dense matrix”; Elsen paragraphs [0058-0059] “A thread block represents a group of threads … Each streaming multiprocessor can execute one or more threads of a respective assigned thread block in parallel. Each thread running of a streaming multiprocessor can share the resources of the streaming multiprocessor, e.g. the computing units, shared memory, constant cache, L1 cache, etc. of the streaming multiprocessor”). Regarding claim 12, Jiang as modified in view of Elsen teaches all the limitations of claim 11 as stated above. Further, Jiang as modified in view of Elsen teaches wherein the two or more rows in the sparse matrix have a similarity that satisfies a similarity threshold (Jiang page 377 left col last paragraph “An important aspect of our work is achieving row reordering efficiently. For this purpose, we use a hierarchical clustering procedure. To reduce the clustering overhead, we use a locality sensitive hashing procedure to first generate candidate pairs that may have similarities larger than a threshold”). Regarding claim 13, Jiang as modified in view of Elsen teaches all the limitations of claim 1 as stated above. Further, Jiang as modified in view of Elsen teaches wherein the scheduler is further configured to assign the sparse matrix multiplication operations to one or more of: one or more threads or one or more wavefronts based upon the similarity of the two or more rows in the sparse matrix and load balancing (Jiang Fig. 4 and section 3.1 “two consecutive rows are processed by a thread-block of two warps”). Jiang does not explicitly teach wherein the scheduler is further configured to assign the sparse matrix multiplication operations to one or more of: one or more threads or one or more wavefronts based upon the similarity of the two or more rows in the sparse matrix and load balancing . However, on the same field of endeavor, Elsen discloses scheduling sparse matrix multiplication operations based on load balancing (Elsen Fig. 3 and paragraphs [0010, 0014, 0099, 0101] “the system can assign work to threads within the thread blocks such that each thread receives approximately the same amount of work to do”). Accordingly, it would have been obvious to one of ordinary skill in the art before the effective filling date of the claimed invention, to modify Jiang and generalize the teaching of Elsen by configuring scheduler to assign the sparse matrix multiplication operations to one or more of: one or more threads or one or more wavefronts based upon the similarity of the two or more rows in the sparse matrix and load balancing so that work can be balanced across threads such that a first subset of threads are not assigned significantly more work than a second subset of threads, causing the second subset of threads to be inactive (or to be performing worthless operations) while the first subset of threads completes their operations (Elsen paragraph [0104]). Therefore, the combination of Jiang as modified in view of Elsen teaches wherein the scheduler is further configured to assign the sparse matrix multiplication operations to one or more of: one or more threads or one or more wavefronts based upon the similarity of the two or more rows in the sparse matrix and load balancing. Regarding claim 14, Jiang as modified in view of Elsen teaches all the limitations of claim 1 as stated above. Further, Jiang as modified in view of Elsen teaches wherein the processor is one or more of a central processing unit, a graphics processing unit, or a programmed controller (Jiang section 5.1 first paragraph). Regarding claims 15-17 and 20, they are directed to a method practiced by the processor of claims 1-2, 4 and 10 respectively. All steps performed by the method of claims 15-17 and 20 would be practiced by the processor of claims 1-2, 4 and 10 respectively. Claims 1-2, 4 and 10 analysis applies equally to claims 15-17 and 20 respectively . 07-22-aia AIA Claim s 6, 8-9 and 18-19 are rejected under 35 U.S.C. 103 as being unpatentable over Jiang in view of Elsen as applied to claim s 1 and 15 above, and further in view of Butler et al. (US 9697245 B1), hereinafter Butler . Regarding claim 6, Jiang as modified in view of Elsen teaches all the limitations of claim 1 as stated above. Further, Jiang teaches wherein the similarity of the two or more rows in the sparse matrix used for the sparse matrix multiplication operations is determined using locality sensitive hashing (LSH) (Jiang section 3.2). Jiang does not explicitly teach wherein the similarity of the two or more rows in the sparse matrix used for the sparse matrix multiplication operations is determined by: determining a signature for each row from the two or more rows, and determining that values in one or more portions of the signature for each row from the two or more rows are the same . However, on the same field of endeavor, Butler discloses an LSH algorithm that includes determining a signature for each sparse row vector, and determining that values in one or more portions of the signature for each sparse row vector are the same (Butler Fig. 3 320-325 and col 6 lines 46-56). Accordingly, it would have been obvious to one of ordinary skill in the art before the effective filling date of the claimed invention, to modify Jiang using Butler and determine the similarity of the rows by determining a signature for each row from the two or more rows, and determining that values in one or more portions of the signature for each row from the two or more rows are the same in order to group together/cluster rows having similar signatures (Butler col 6 lines 50-56 and col 7 lines 24-27) for a more efficient row reordering (Jiang page 377 left col last paragraph). As discussed above, Jiang uses LSH, therefore, it is obvious to use the LSH algorithm of Butler to perform the row clustering of Jiang. Therefore, the combination of Jiang as modified in view of Elsen and Butler teaches wherein the similarity of the two or more rows in the sparse matrix used for the sparse matrix multiplication operations is determined by: determining a signature for each row from the two or more rows, and determining that values in one or more portions of the signature for each row from the two or more rows are the same. Regarding claim 8, Jiang as modified in view of Elsen teaches all the limitations of claim 1 as stated above. Further, Jiang as modified in view of Elsen teaches wherein the scheduler is further configured to: determine a signature for each row from the two or more rows , compare one or more portions of the signatures for the two or more rows to identify a plurality of clusters of similar rows (Jiang section 3.2 and algorithm 3 “in each iteration, we select the two clusters that have the largest similarity and group them into one. The similarity between the two clusters is the similarity between the representing rows of the two clusters … The idea of LSH is to hash the nodes to be clustered into different buckets such that nodes in the same buckets are likely to be very similar while nodes in different buckets are not similar”) , and sort the plurality of clusters based upon one or more of the number of rows in each cluster from the plurality of clusters or a total number of non-zero values in the rows of each cluster from the plurality of clusters (Jiang section 3.2, algorithm 3 and Figs. 4 and 6 “we use LSH to get a list of candidate pairs of rows that are likely to have large values of similarity score … we output the row indices cluster by cluster to generate the reordered rows … we always merge the smaller cluster into the larger one … the algorithm returns [0, 2, 4, 1, 3, 5] as the reordered rows of the sparse matrix”; the plurality of clusters are sorted based upon one or more of the number of rows in each cluster). Jiang does not explicitly teach wherein the scheduler is further configured to: determine a signature for each row from the two or more rows , compare one or more portions of the signatures for the two or more rows to identify a plurality of clusters of similar rows. However, on the same field of endeavor, Butler discloses an LSH algorithm that includes determining a signature for each sparse row vector, and clustering the sparse row by comparing the signatures of each sparse row to a determine a plurality of clusters of similar rows (Butler Fig. 3 320-325 and col 6 lines 46-56). Accordingly, it would have been obvious to one of ordinary skill in the art before the effective filling date of the claimed invention, to modify Jiang using Butler and determine a signature for each row from the two or more rows and compare one or more portions of the signatures for the two or more rows to identify a plurality of clusters of similar rows in order to group together/cluster rows having similar signatures (Butler col 6 lines 50-56 and col 7 lines 24-27) for a more efficient row reordering (Jiang page 377 left col last paragraph). As discussed above, Jiang uses LSH, therefore, it is obvious to use the LSH algorithm of Butler to perform the row clustering of Jiang. Therefore, the combination of Jiang as modified in view of Elsen and Butler teaches wherein the scheduler is further configured to: determine a signature for each row from the two or more rows, compare one or more portions of the signatures for the two or more rows to identify a plurality of clusters of similar rows, and sort the plurality of clusters based upon one or more of the number of rows in each cluster from the plurality of clusters or a total number of non-zero values in the rows of each cluster from the plurality of clusters. Regarding claim 9, Jiang as modified in view of Elsen and Butler teaches all the limitations of claim 8 as stated above. Further, Jiang as modified in view of Elsen and Butler teaches wherein the scheduler is further configured to: sort two or more rows within a particular cluster, from the plurality of clusters, based upon a number of non-zero values in each of the two or more rows within the particular cluster (Jiang Figs. 4 and 6; section 3.2 and algorithm 3). Regarding claims 18-19, they are directed to a method practiced by the processor of claims 6 and 8 respectively. All steps performed by the method of claims 18-19 would be practiced by the processor of claims 6 and 8 respectively. Claims 6 and 8 analysis applies equally to claims 18-19 respectively . 07-21-aia AIA Claim 7 is rejected under 35 U.S.C. 103 as being unpatentable over Jiang in view of Elsen and Butler applied to claim 6 above, and further in view of Zhang et al. (NPL – “ An Efficient Recommender System Using Locality Sensitive Hashing ”), hereinafter Z2 . Regarding claim 7, Jiang as modified in view of Elsen and Butler teaches all the limitations of claim 6 as stated above. Further, Jiang as modified in view of Elsen and Butler teaches wherein the signature for each row from the two or more rows is a signature vector and is determined by (Butler col 6 lines 45-49 “a vector of length k ( e.g., signature) by applying sparse LSH functions to each sparse row vector”): processing, using a plurality of permutation functions, metadata for the row to generate a plurality of permutations , wherein the metadata for the row indicates locations of non-zero values in the row, and selecting, from each permutation from the plurality of permutations, a value that is included in the signature vector (Jiang Fig.1 and section 2.1 metadata – rowptr and colidx). Jiang does not explicitly teach wherein the signature for each row from the two or more rows is a signature vector and is determined by: processing, using a plurality of permutation functions, metadata for the row to generate a plurality of permutations , wherein the metadata for the row indicates locations of non-zero values in the row, and selecting, from each permutation from the plurality of permutations, a value that is included in the signature vector . However, on the same field of endeavor, Z2 discloses determining a signature by generating a plurality of permutations using a plurality of permutation functions, and selecting, from each permutation from the plurality of permutations, a value that is included in the signature vector (Z2 section 4.2.1). Accordingly, it would have been obvious to one of ordinary skill in the art before the effective filling date of the claimed invention, to modify Jiang and generalize the teaching of Z2 and determine the signature for each row from the two or more rows by: processing, using a plurality of permutation functions, the metadata for the row indicating locations of non-zero values in the row to generate a plurality of permutations, and selecting, from each permutation from the plurality of permutations, a value that is included in the signature vector in order to implement a hash function h such that if two data items (x, y) are similar under some similarity measures, then with high probability h(x)=h(y), and (2) if (x, y) are dissimilar, then with high probability h(x)≠h(y) (Z2 section 4.2.1) and for a more efficient row reordering with reduced clustering overhead (Jiang page 377 left col last paragraph). Therefore, the combination of Jiang as modified in view of Elsen, Butler and Z2 teaches wherein the signature for each row from the two or more rows is a signature vector and is determined by: processing, using a plurality of permutation functions, metadata for the row to generate a plurality of permutations, wherein the metadata for the row indicates locations of non-zero values in the row, and selecting, from each permutation from the plurality of permutations, a value that is included in the signature vector . 07-22-aia AIA Claim s 5, 11-12 and 14 are rejected under 35 U.S.C. 103 as being unpatentable over Zhang as applied to claim 1 above, and further in view of Jiang . Regarding claim 5, Zhang teaches all the limitations of claim 1 as stated above. Zhang does not explicitly teach wherein the similarity of the two or more rows in the sparse matrix used for the sparse matrix multiplication operations is determined using one or more of Cosine similarity or Jaccard similarity of the two or more rows in the sparse matrix . However, on the same field of endeavor, Jiang discloses wherein a similarity of two or more rows in a sparse matrix used for a sparse matrix multiplication operations is determined using one or more of Cosine similarity or Jaccard similarity of the two or more rows in the sparse matrix (Jiang section 3.2 “Two rows are similar if they have many non-zeros in identical columns. A natural definition of the similarity between two rows would be the Jaccard similarity between the two sets representing the two rows”). Accordingly, it would have been obvious to one of ordinary skill in the art before the effective filling date of the claimed invention, to modify Zhang using Jiang and use Jaccard similarity to determine the similarity of the two or more rows in the sparse matrix because the Jaccard similarity of two rows is a natural definition of the similarity between the two rows (Jiang section 3.2). Therefore, the combination of Zhang as modified in view of Jiang teaches wherein the similarity of the two or more rows in the sparse matrix used for the sparse matrix multiplication operations is determined using one or more of Cosine similarity or Jaccard similarity of the two or more rows in the sparse matrix. Regarding claim 11, Zhang teaches all the limitations of claim 1 as stated above. Further, Zhang teaches wherein the scheduler is further configured to cause two or more different threads accessing the two or more rows in the sparse matrix to execute on one or more of a core with a cache, or on two or more cores with a shared cache (Zhang Fig. 5 and section 3). Zhang does not explicitly teach wherein the scheduler is further configured to cause two or more different threads accessing the two or more rows in the sparse matrix to execute on one or more of a core with a cache, or on two or more cores with a shared cache (Zhang Fig. 5 and section 3). However, on the same field of endeavor, Jiang discloses causing two or more different threads to process a row of a sparse matrix (Jiang section 2.3). Accordingly, it would have been obvious to one of ordinary skill in the art before the effective filling date of the claimed invention, to modify Zhang and generalize the teaching of Jiang by configuring the scheduler to cause two or more different threads accessing the two or more rows in the sparse matrix to execute on one or more of a core with a cache, or on two or more cores with a shared cache for a GPU implementation of the sparse matrix multiplication and for parallel processing (Jiang section 2.3). Therefore, the combination of Zhang as modified in view of Jiang teaches wherein the scheduler is further configured to cause two or more different threads accessing the two or more rows in the sparse matrix to execute on one or more of a core with a cache, or on two or more cores with a shared cache. Regarding claim 12, Zhang as modified in view of Jiang teaches all the limitations of claim 11 as stated above. Zhang does not explicitly teach wherein the two or more rows in the sparse matrix have a similarity that satisfies a similarity threshold. However, on the same field of endeavor, Jiang discloses wherein the two or more rows in the sparse matrix have a similarity that satisfies a similarity threshold (Jiang page 377 left col last paragraph “An important aspect of our work is achieving row reordering efficiently. For this purpose, we use a hierarchical clustering procedure. To reduce the clustering overhead, we use a locality sensitive hashing procedure to first generate candidate pairs that may have similarities larger than a threshold”). Accordingly, it would have been obvious to one of ordinary skill in the art before the effective filling date of the claimed invention, to modify Zhang using Jiang and use a similarity threshold for determining the similarity between the two or more rows in the sparse matrix in order to implement the row reordering more efficiently (Jiang page 377 left col last paragraph). Therefore, the combination of Zhang as modified in view of Jiang teaches wherein the two or more rows in the sparse matrix have a similarity that satisfies a similarity threshold. Regarding claim 14, Zhang as modified in view of Jiang teaches all the limitations of claim 1 as stated above. Zhang does not explicitly teach wherein the processor is one or more of a central processing unit, a graphics processing unit, or a programmed controller . However, on the same field of endeavor, Jiang discloses wherein the processor is one or more of a central processing unit, a graphics processing unit, or a programmed controller (Jiang section 5.1 first paragraph). Accordingly, it would have been obvious to one of ordinary skill in the art before the effective filling date of the claimed invention, to modify Zhang using Jiang and implement the processor of Zhang as a GPU in order to further accelerate/parallelize the algorithm of Zhang including the preprocessing step (Jiang section 5.4). Therefore, the combination of Zhang as modified in view of Jiang teaches wherein the processor is one or more of a central processing unit, a graphics processing unit, or a programmed controller . 07-22-aia AIA Claim 13 is rejected under 35 U.S.C. 103 as being unpatentable over Zhang as applied to claim 1 above, and further in view of Elsen . Regarding claim 13, Zhang teaches all the limitations of claim 1 as stated above. Further, Zhang teaches wherein the scheduler is further configured to assign the sparse matrix multiplication operations to one or more of: one or more threads or one or more wavefronts based upon the similarity of the two or more rows in the sparse matrix and load balancing (Zhang Fig. 5 and section 4-4.1). Zhang does not explicitly teach wherein the scheduler is further configured to assign the sparse matrix multiplication operations to one or more of: one or more threads or one or more wavefronts based upon the similarity of the two or more rows in the sparse matrix and load balancing . However, on the same field of endeavor, Elsen discloses scheduling sparse matrix multiplication operations to one or more threads based on load balancing (Elsen Fig. 3 and paragraphs [0010, 0014, 0099, 0101] “the system can assign work to threads within the thread blocks such that each thread receives approximately the same amount of work to do”). Accordingly, it would have been obvious to one of ordinary skill in the art before the effective filling date of the claimed invention, to modify Zhang and generalize the teaching of Elsen by configuring scheduler to assign the sparse matrix multiplication operations to one or more of: one or more threads or one or more wavefronts based upon the similarity of the two or more rows in the sparse matrix and load balancing for the parallel processing and so that work can be balanced across threads such that a first subset of threads are not assigned significantly more work than a second subset of threads, causing the second subset of threads to be inactive (or to be performing worthless operations) while the first subset of threads completes their operations (Elsen paragraph [0104]). Therefore, the combination of Zhang as modified in view of Elsen teaches wherein the scheduler is further configured to assign the sparse matrix multiplication operations to one or more of: one or more threads or one or more wavefronts based upon the similarity of the two or more rows in the sparse matrix and load balancing . 07-22-aia AIA Claim s 6, 8 and 18-19 are rejected under 35 U.S.C. 103 as being unpatentable over Zhang as applied to claim s 1 and 15 above, and further in view of Butler . Regarding claim 6, Zhang teaches all the limitations of claim 1 as stated above. Zhang does not explicitly teach wherein the similarity of the two or more rows in the sparse matrix used for the sparse matrix multiplication operations is determined by: determining a signature for each row from the two or more rows, and determining that values in one or more portions of the signature for each row from the two or more rows are the same . However, on the same field of endeavor, Butler discloses an algorithm that includes determining a signature for each sparse row vector, and determining that values in one or more portions of the signature for each sparse row vector are the same (Butler Fig. 3 320-325 and col 6 lines 46-56). Accordingly, it would have been obvious to one of ordinary skill in the art before the effective filling date of the claimed invention, to modify Zhang using Butler and determine the similarity of the rows by determining a signature for each row from the two or more rows, and determining that values in one or more portions of the signature for each row from the two or more rows are the same in order to group together/cluster rows having similar signatures (Butler col 6 lines 50-56 and col 7 lines 24-27). Therefore, the combination of Zhang as modified in view of Butler teaches wherein the similarity of the two or more rows in the sparse matrix used for the sparse matrix multiplication operations is determined by: determining a signature for each row from the two or more rows, and determining that values in one or more portions of the signature for each row from the two or more rows are the same. Regarding claim 8, Zhang teaches all the limitations of claim 1 as stated above. Zhang does not explicitly teach wherein the scheduler is further configured to: determine a signature for each row from the two or more rows, compare one or more portions of the signatures for the two or more rows to identify a plurality of clusters of similar rows, and sort the plurality of clusters based upon one or more of the number of rows in each cluster from the plurality of clusters or a total number of non-zero values in the rows of each cluster from the plurality of clusters . However, on the same field of endeavor, Butler discloses an algorithm that includes determining a signature for each sparse row vector, and sorting the sparse rows by clustering the sparse row by comparing the signatures of each sparse row to a determine a plurality of clusters of similar rows (Butler Fig. 3 320-325 and col 6 lines 46-56). Accordingly, it would have been obvious to one of ordinary skill in the art before the effective filling date of the claimed invention, to modify Zhang using Butler and determine a signature for each row from the two or more rows and compare one or more portions of the signatures for the two or more rows to identify a plurality of clusters of similar rows in order to group together/cluster rows having similar signatures (Butler col 6 lines 50-56 and col 7 lines 24-27). Therefore, the combination of Zhang as modified in view of Butler teaches wherein the scheduler is further configured to: determine a signature for each row from the two or more rows, compare one or more portions of the signatures for the two or more rows to identify a plurality of clusters of similar rows, and sort the plurality of clusters based upon one or more of the number of rows in each cluster from the plurality of clusters or a total number of non-zero values in the rows of each cluster from the plurality of clusters. Regarding claims 18-19, it is directed to a method practiced by the processor of claims 6 and 8 respectively. All steps performed by the method of claims 18-19 would be practiced by the processor of claims 6 and 8 respectively. Claims 6 and 8 analysis applies equally to claims 18-19 respectively . 07-21-aia AIA Claim 9 is rejected under 35 U.S.C. 103 as being unpatentable over Zhang in view of Butler applied to claim 8 above, and further in view of Jiang . Regarding claim 9, Zhang as modified in view of Butler teaches all the limitations of claim 8 as stated above. Zhang does not explicitly teach wherein the scheduler is further configured to: sort two or more rows within a particular cluster, from the plurality of clusters, based upon a number of non-zero values in each of the two or more rows within the particular cluster . However, on the same field of endeavor, Zhang discloses sorting two or more rows within a particular cluster, from a plurality of clusters, based upon a number of non-zero values in each of the two or more rows within the particular cluster (Jiang Figs. 4 and 6; section 3.2 and algorithm 3). Accordingly, it would have been obvious to one of ordinary skill in the art before the effective filling date of the claimed invention, to modify Zhang using Jiang and configure the scheduler to sort two or more rows within a particular cluster, from the plurality of clusters, based upon a number of non-zero values in each of the two or more rows within the particular cluster in order to implement a more efficient row reordering by using hierarchical clustering procedure (Jiang page 377 left col last paragraph). Therefore, the combination of Zhang as modified in view of Butler and Jiang teaches wherein the scheduler is further configured to: sort two or more rows within a particular cluster, from the plurality of clusters, based upon a number of non-zero values in each of the two or more rows within the particular cluster . 07-21-aia AIA Claim 7 is rejected under 35 U.S.C. 103 as being unpatentable over Zhang in view of Butler applied to claim 6 above, and further in view of Z2 . Regarding claim 7, Zhang as modified in view of Butler teaches all the limitations of claim 6 as stated above. Further, Zhang as modified in view of Butler teaches wherein the signature for each row from the two or more rows is a signature vector and is determined by (Butler col 6 lines 45-49 “a vector of length k ( e.g., signature) by applying sparse LSH functions to each sparse row vector”): processing, using a plurality of permutation functions, metadata for the row to generate a plurality of permutations , wherein the metadata for the row indicates locations of non-zero values in the row, and selecting, from each permutation from the plurality of permutations, a value that is included in the signature vector (Zhang Fig. 1 and section 2.1 metadata – row and column indexes). Zhang does not explicitly teach wherein the signature for each row from the two or more rows is a signature vector and is determined by: processing, using a plurality of permutation functions, metadata for the row to generate a plurality of permutations , wherein the metadata for the row indicates locations of non-zero values in the row, and selecting, from each permutation from the plurality of permutations, a value that is included in the signature vector . However, on the same field of endeavor, Z2 discloses determining a signature by generating a plurality of permutations using a plurality of permutation functions, and selecting, from each permutation from the plurality of permutations, a value that is included in the signature vector (Z2 section 4.2.1). Accordingly, it would have been obvious to one of ordinary skill in the art before the effective filling date of the claimed invention, to modify Zhang and generalize the teaching of Z2 and determine the signature for each row from the two or more rows by: processing, using a plurality of permutation functions, the metadata for the row indicating locations of non-zero values in the row to generate a plurality of permutations, and selecting, from each permutation from the plurality of permutations, a value that is included in the signature vector in order to implement a hash function h such that if two data items (x, y) are similar under some similarity measures, then with high probability h(x)=h(y), and (2) if (x, y) are dissimilar, then with high probability h(x)≠h(y) (Z2 section 4.2.1) and for a more efficient row reordering with reduced clustering overhead (Jiang page 377 left col last paragraph). Therefore, the combination of Zhang as modified in view of Butler and Z2 teaches wherein the signature for each row from the two or more rows is a signature vector and is determined by: processing, using a plurality of permutation functions, metadata for the row to generate a plurality of permutations, wherein the metadata for the row indicates locations of non-zero values in the row, and selecting, from each permutation from the plurality of permutations, a value that is included in the signature vector . Conclusion 07-96 AIA The prior art made of record and not relied upon is considered pertinent to applicant's disclosure. Wang et al. (US 20230075643 A1) related to scheduling sparse matrix multiplications using row reordering (i.e., based on similarity of two or more rows) as shown in at least Figure 8. Any inquiry concerning this communication or earlier communications from the examiner should be directed to Carlo Waje whose telephone number is (571)272-5767. The examiner can normally be reached 9:00-6:00 M-F. Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice. If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, James Trujillo can be reached at (571) 272-3677. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300. Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000. /Carlo Waje/Examiner, Art Unit 2151 (571)272-5767 Application/Control Number: 17/991,493 Page 2 Art Unit: 2151 Application/Control Number: 17/991,493 Page 3 Art Unit: 2151 Application/Control Number: 17/991,493 Page 4 Art Unit: 2151 Application/Control Number: 17/991,493 Page 5 Art Unit: 2151 Application/Control Number: 17/991,493 Page 6 Art Unit: 2151 Application/Control Number: 17/991,493 Page 7 Art Unit: 2151 Application/Control Number: 17/991,493 Page 8 Art Unit: 2151 Application/Control Number: 17/991,493 Page 9 Art Unit: 2151 Application/Control Number: 17/991,493 Page 10 Art Unit: 2151 Application/Control Number: 17/991,493 Page 11 Art Unit: 2151 Application/Control Number: 17/991,493 Page 12 Art Unit: 2151 Application/Control Number: 17/991,493 Page 13 Art Unit: 2151 Application/Control Number: 17/991,493 Page 14 Art Unit: 2151 Application/Control Number: 17/991,493 Page 15 Art Unit: 2151 Application/Control Number: 17/991,493 Page 17 Art Unit: 2151 Application/Control Number: 17/991,493 Page 18 Art Unit: 2151 Application/Control Number: 17/991,493 Page 20 Art Unit: 2151 Application/Control Number: 17/991,493 Page 21 Art Unit: 2151 Application/Control Number: 17/991,493 Page 22 Art Unit: 2151 Application/Control Number: 17/991,493 Page 23 Art Unit: 2151 Application/Control Number: 17/991,493 Page 24 Art Unit: 2151 Application/Control Number: 17/991,493 Page 25 Art Unit: 2151