UPMLIB:优化OpenMP程序内存性能的运行时系统
1. UPMLIB在NAS BT基准测试中的使用
在NAS BT基准测试系统中,UPMLIB的使用代码如下:
call upmlib_init()
call upmlib_memrefcnt(u, size_of_u)
call upmlib_memrefcnt(rhs,size_of_rhs)
call upmlib_memrefcnt(forcing,size_of_forcing)
...
do step=1,niter
call compute_rhs
call x_solve
call y_solve
call z_solve
call addi
stat=upmlib_check_pset()
if (stat .gt. 0) then
call upmlib_switch(PREDICTIVE)
else
call upmlib_switch(COMPETITIVE)
endif
call upmlib_migrate_pages()
enddo
upmlib_check_pset() 函数会轮询操作系统提供的调度信息。若操作系统至少执行了一次线程迁移,且迁移后的线程在同一节点上停留了足够长的时间,该函数将返回一个正值。若未发生此类线程迁移,在外部 do 循环的每次迭代结束时,会调用 upmlib_migrate_pages() 函
超级会员免费看
订阅专栏 解锁全文
19

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



