【发布时间】:2015-05-18 14:35:58
【问题描述】:
在用 C 编程时,我正在学习一些关于 pthread 和性能的知识,我想知道最好的方法是将单个 int 添加到数组中的所有元素(相当大的一个,大约 5000元素)以及将int 与数组中的所有元素相乘的最佳方法。
我尝试并行执行此操作,但没有太大改进。我的并行方法是传递一个struct,其中包含要相加/相乘的值以及指向数组的指针。我将此作为参数传递给pthread_create。在被调用的函数中,我将给定值添加/乘以数组中的所有元素。
我觉得好像有一种更好的方法可以将单个数字相乘或相加到数组中的所有 5000 个(或更多)元素。我也听说过那些 SIMD 命令。在这种情况下这可能会有所帮助吗?
【问题讨论】:
-
5000 个元素对于简单的加法操作来说并没有那么多数据。
-
确实,创建和删除线程所需的开销时间可能会消耗通过并行计算获得的任何性能。我会尽可能简单地编写这段代码,然后摆弄编译器优化设置。
标签: c arrays parallel-processing pthreads