首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是在fortran程序中定义线程数量的正确方法吗?

这是在fortran程序中定义线程数量的正确方法吗?
EN

Stack Overflow用户
提问于 2013-02-01 08:11:21
回答 1查看 154关注 0票数 0

我有一个为并行计算而写的FORTRAN程序。程序接受参数,线程的数量可以定义为参数。示例代码如下:

代码语言:javascript
复制
COUNT = NARGS()
      NTHREADS = 1

      ! *** GET THE COMMAND LINE ARGUMENTS, IF ANY
      IF(COUNT.GT.1)THEN
        ! *** ARGUMENT 1
        CALL GETARG(1, BUFFER, iStatus)
        IF (Buffer(1:4).EQ.'-NOP'.OR.Buffer(1:4).EQ.'-nop') THEN
          PAUSEIT=.FALSE.
        ENDIF
        IF (Buffer(1:3).EQ.'-NT'.OR.Buffer(1:3).EQ.'-nt') THEN
          READ(Buffer(4:10),*) NTHREADS
        ENDIF
        IF(COUNT.GT.2)THEN
          ! *** ARGUMENT 2
          CALL GETARG(2, BUFFER, iStatus)
          IF (Buffer(1:4).EQ.'-NOP'.OR.Buffer(1:4).EQ.'-nop') THEN
            PAUSEIT=.FALSE.
          ENDIF
          IF (Buffer(1:3).EQ.'-NT'.OR.Buffer(1:3).EQ.'-nt') THEN
            READ(Buffer(4:10),*) NTHREADS
          ENDIF
         ENDIF
      ENDIF

假设我的编译文件名是"hellofortran“。我可以将线程数定义为

代码语言:javascript
复制
./hellofortran -nt4 

我的程序将用4个线程读取程序。问题是,我可以在任何一台计算机上运行相同数量的内核。假设我有双核处理器。我只有两个核心,但我仍然可以运行6-8个线程或任何数量的线程。如何正确定义此特定实例中的线程数量?

我希望我已经解释了我的问题。我期待着很快听到关于如何改进我的计划的意见。谢谢。

Jdbaba

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-01 08:20:37

如果您使用的是OpenMP,并且只想设置要使用的线程数,那么我只需指定环境中的线程数:

代码语言:javascript
复制
OMP_NUM_THREADS=4
./hellofortran

并像往常一样编写OpenMP代码。有一些编程方法可以设置线程数,但这对您来说可能更简单。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14637538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档