高性能计算
文章平均质量分 60
记录日常使用的加速计算内容。
NNNNNathan
slam博主,不定期更新感知相关博文。
展开
-
【OpenMP】2.6 内存模型
123。原创 2024-01-15 20:30:13 · 47 阅读 · 0 评论 -
【OpenMP】2.5 任务构造
123。原创 2024-01-15 20:29:15 · 46 阅读 · 0 评论 -
【OpenMP】2.4 数据环境
123。原创 2024-01-15 20:28:22 · 32 阅读 · 0 评论 -
【OpenMP】 2.3 并行化循环
前面的示例中,通过创建一组线程并通过线程ID与线程数来人为的定义每个线程需要处理的数据,这是一个常规的多线程任务分配的技巧;但是在openmp中通过#pragma omp for指令,可以通过简单的并行化循环构造即可快速实现前述的任务分配环节。 需要注意for构造指令需要在parallel构造的并行区域内才可以多线程运行。另外,可以将OMP构造指令组合在一起使用,如下示例所示: 规约可以通过多线程加速实现实现数组的累加、累乘、查找等工作。openmp的规约通过原创 2024-01-14 16:46:49 · 394 阅读 · 0 评论 -
【OpenMP】 2.2 线程同步
OpenMP中的线程时并发执行的,即不同线程时乱序执行的,有时需要并发线程来协调线程组的执行,达到约束线程组之间某些操作的顺序。 此处还是通过前文【OpenMP】 2.1 简单示例-CSDN博客的例程进行说明。 临界区critical构造定义了一个线程间相互排斥的代码块,即并行构造中一次只能有一个线程执行临界区中的代码块,其余的线程在critical构造处等待,直到之前的线程完成后依次运行。 上述示例中通过临界区实现的积分计算,且每个线程只执行一次临界区原创 2024-01-09 21:12:10 · 413 阅读 · 0 评论 -
【OpenMP】 2.1 简单示例
下面是一个定积分计算的例子,该程序通过将曲线下的面积近似为矩形面积的和来估计一个定积分的结果;选择积分和积分范围,使得这个积分的结果等于。另外OMP的线程在底层中通过线程池的方式来实现的,这种结构可以减少移动线程的方式替换创建与销毁线程的开销。如右边所示需要注意子线程中也是可以嵌套并行区域,需要注意避免引起数据数据竞争与内存带宽上限问题。export OMP_NUM_THREADS=线程数。结果如下,可以看到多线程的结果。原创 2024-01-08 22:04:11 · 426 阅读 · 0 评论