从内核访问OpenCL稀疏矩阵

从内核访问OpenCL稀疏矩阵,opencl,sparse-matrix,numerical-methods,Opencl,Sparse Matrix,Numerical Methods,我正在编写一个OpenCL代码,用有限元离散化来组装一个稀疏矩阵,我希望能得到一些关于我可以在内核代码中组装这个矩阵的巧妙结构的提示!我的意思是,我需要访问内核中的一个随机矩阵位置 对大型数据集的随机访问对GPU来说是一种负担。我不允许所有内核随机写入一个主表。这样做可能会导致比串行CPU更差的性能 相反,我可能会给每个内核分配自己的内存块。也许每个人都应该使用一个带有(行、列、值)元组的小坐标列表来组装矩阵的一部分。在组装矩阵数据时,每个内核应该只处理自己的内存块,然后我会将这些数据拉回到CP

我正在编写一个OpenCL代码,用有限元离散化来组装一个稀疏矩阵,我希望能得到一些关于我可以在内核代码中组装这个矩阵的巧妙结构的提示!我的意思是,我需要访问内核中的一个随机矩阵位置

对大型数据集的随机访问对GPU来说是一种负担。我不允许所有内核随机写入一个主表。这样做可能会导致比串行CPU更差的性能

相反,我可能会给每个内核分配自己的内存块。也许每个人都应该使用一个带有(行、列、值)元组的小坐标列表来组装矩阵的一部分。在组装矩阵数据时,每个内核应该只处理自己的内存块,然后我会将这些数据拉回到CPU进行排序并重新配置为更有效的格式


如果需要对排序后的矩阵数据做进一步的工作,最好创建第二个内核。内核最适合直接的任务。

我不太喜欢有限元离散化,但GPGPU.org[包含许多关于稀疏矩阵的文章。