当前位置:  开发笔记 > 运维 > 正文

OpenMP编程:如何指定线程数作为命令行选项

如何解决《OpenMP编程:如何指定线程数作为命令行选项》经验,为你挑选了1个好方法。

我正在运行一个本地blastx服务器.其中一个命令行选项是-num_threads.查看可执行文件blastx,认为它可能是设置OMP_NUM_THREADS的shell脚本,但事实证明它是在机器代码中.我假设(可能不正确)它是一个OpenMP应用程序,这让我思考.

问题:是否可以将OpenMP线程的数量更改为命令行选项,而不是使用环境变量OMP_NUM_THREADS?



1> Gilles..:

使用OpenMP,您基本上有3种不同的方法来指定parallel区域中使用的线程数:

最常用的是环境变量OMP_NUM_THREADS,需要在运行它之前在代码的环境中设置才能生效;

omp_set_num_threads()在到达平行区域之前调用的函数; 和

指令的可选num_threads()子句parallel.

这些标准的相对优先级由标准详细定义,但几乎归结为num_threads()优先omp_set_num_threads()于其优先于其优先级OMP_NUM_THREADS.

所以现在,如果您希望让代码定义要用作命令行选项的OpenMP线程数,那么您需要的是:

    要手动或使用类似的函数来解析命令行,getopt并将读取的值存储在变量中; 和

    在调用omp_set_num_threads()或作为num_threads()子句的参数时使用此值.两者中的任何一个都优先于可能设置的值OMP_NUM_THREADS.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有