多核环境下的并行计算与分支限界算法
在当今的计算领域,多核CPU和GPU的应用越来越广泛,如何高效地开发和移植代码以充分利用这些硬件资源成为了关键问题。同时,对于许多组合优化问题,分支限界(B&B)算法是一种常用的精确求解方法,但在处理大规模实例时,其执行时间往往过长,因此并行计算成为了应对这一挑战的有效途径。
多核与GPU编程概述
在开发和移植适用于多核CPU和GPU的代码时,有多种编程模型、工具和技术可供选择。编译器、相关技术以及源到源的转换框架能够帮助我们将顺序代码转换为并行代码。
例如,在矩阵乘法的实现中,如果用户选择使用CUBLAS库,通过输入顺序C实现的相同源代码,经过处理后可得到调用CUBLAS库的代码:
// .... omitted commented code ...
// —> Added by Transformer - - -
void*
−dptr−x;
void*
−dptr−y;
void*
−dptr−z;
// Memory allocation
cudaMalloc ((void **)&−dptr−x, 10*10*sizeof(double));
cudaMalloc ((void **)&−dptr−y, 10*10*sizeof(double));
cudaMalloc ((void **)&−dptr−z, 10*10*sizeof(double));
cublasCreate(&handle );
// Data transfer CPU->GPU
cublasSetMatrix (10, 10, sizeo
超级会员免费看
订阅专栏 解锁全文

1434

被折叠的 条评论
为什么被折叠?



