我正在编写一个OpenCL代码来组装来自有限元离散化的稀疏矩阵,我希望有一些关于我可以用来在内核代码中组装这个矩阵的聪明结构的提示!我的意思是,我需要访问内核中的随机矩阵位置!
答案 0 :(得分:0)
随机访问大型数据集对GPU造成负担。我会不允许所有内核随机写入一个主表。这样做可能会导致性能低于串行CPU。
相反,我可能会给每个内核提供自己的内存块来处理。也许每个人都应该使用带有(行,列,值)元组的小坐标列表来组装矩阵的一部分。在组装矩阵数据时,每个内核应该只在它自己的内存块上工作,然后我将这些数据拉回到CPU进行排序并重新配置为更有效的格式。
如果您需要对排序的矩阵数据进行进一步的处理,最好创建第二个内核。内核在简单的任务中运行得最好。