我对并行化有疑问:
我有两个数据集。数据集1有m行和k列,数据集2有n行和k列。(m> n)我的程序从文件中读取这些数据集并将它们存储在内存中。任务是获取Dataset1的每个实例(让我们调用此查询实例)并与Dataset2的所有实例进行比较。
现在我的问题是:
哪一个更有效率? //顺便说一下,我现在正在使用PThreads库。
答案 0 :(得分:1)
我会使用选项1,即分区数据集2。
理由:
数据集1可能太大而无法容纳在缓存中,这就是为什么你要扫描它并将每个条目与数据集2中的所有条目进行比较。
现在,我们假设数据集2也太大而无法完全适合单个处理器的缓存,但如果它被分区为x分区,则它足够大以适应缓存,每个处理器的缓存包含一个分区。在这种情况下,如果使用选项1,每个处理器的缓存将足够大以包含其中一个分区。如果你使用选项2,每个处理器都需要处理整个数据集2,这个数据集太大而无法容纳在其缓存中,因此会发生颠簸。
如果数据集2小到足以完全适合缓存,那么它可能与您选择的选项无关。