并行C程序是挪威科技大学并行计算课程中的一部分。该课程通过实际练习帮助学生入门,涉及多个并行计算技术的应用。本练习介绍C语言基础,并通过与矩阵计算相关的例子来加深理解。该练习的核心任务是解决一个区域增长问题。问题描述如下:你有一个二维像素网格,每个像素的灰度值在0到255之间。给定一个阈值和一些初始位置(种子),如果相邻像素之间的颜色差异低于该阈值,你需要将种子区域扩展到相邻像素。扩展将持续进行,直到区域无法再增长。在这个练习中,我们将使用MPI(消息传递接口)来实现并行化,MPI是一种广泛用于并行计算的消息传递协议。
在进一步的练习中,学生将被要求使用不同的并行编程模型来优化此问题,尤其是通过利用MPI在分布式计算环境中的优势。
串行优化任务:在此任务中,你需要编写一个函数来尽可能高效地执行稀疏矩阵向量乘法。具体要求是在spmv.c
文件中实现一个更快速的矩阵向量乘法函数。你的实现应该比包含的天真算法更高效。你可以通过定义自己的稀疏矩阵格式(使用struct s
)来进一步优化计算效率。
本练习同时涉及到pthreads的使用,以实现基于线程的并行计算,进一步提升计算效率。
暂无评论