公告:非计时区代码不允许增,删,改



  • 请认真阅读!!!

    1. 非计时区代码不允许修改

    2. 关于头文件<athread.h>,函数athread_init , athread_spawn , athread_join , athread_halt 可以放在计时区同名函数的文件里。

    例如:

    LbmCavity3D.c

        #include <stdio.h>
        #include <stdlib.h>
        #include <math.h>
        #include <mpi.h>
        #include "Argument.h"
        int main(int argc, char *argv[])
        {
          ...
         TIME_ST();
        //假设你collide 函数需要上从核
         for (s = 0 ; s < STEPS ; s ++ ){
               bounce_send_init();
               ...
               stream(nodes, walls, flags, Xst, Xed, Yst, Yed, Z, current, other);
               collide(nodes, flags, Xst, Xed, Yst, Yed, Z, current);
               ...
               other = current;
               current = (current+1)%2;
         }
         TIME_ED();
          ...
    
       }
    
    
    

    Collide.c

    #include "Argument.h"
    #include<athread.h>
    #include <math.h>
    void slave_collide_slave(collideparam *ptr);
    void collide(Real *****nodes,
                            int ***flags,
                            int Xst,
                            int Xed,
                            int Yst,
                            int Yed,
                            int nz,
                            int current,
                            int step){
     ...
     collideparam args;
     if(step == 0){
      athread_init();
     }
    ...
     athread_spawn(collide_slave,&args);
     athread_join();
    ... 
    if(step == STEPS){
       athread_halt();  
     }
    }
    

    上述只是示例,每个参赛队可根据自身情况选择合适的方法解决问题



  • 根据本人丰富的跟sw5cc作战的经验.
    athread_init(), athread_halt()可以在不包含任何头文件的时候调用.
    望知悉.
    不包含头文件调用, 后果自负.
    还有一种方法是遍历符号表寻找athread_init等函数的地址.

    ====================
    专注CPC/PAC捣乱3年.



  • @夜深忽梦少年事 我觉得直接把头文件有用的东西拷贝到计时区就行了...

    (这规则怎么这么蹩脚...



  • @夜深忽梦少年事 你厉害我服了。。。



  • @jflfy 您这种专注ASC, ISC, SC捣乱的就不要来鄙视我这种小菜鸡了...



  • @jflfy 为了减轻复查时的负担



  • @jflfy 再说了初赛说明的文档里写明了不允许改非计时区代码的。。。



  • 我有个疑问,假设我要把一个数组nodes传到从核,我就必须把nodes声明成全局变量,这样才能被extern。但是现有的程序中nodes是放在main函数里面的,不能被extern。请问,如果不在main函数计时区以外的地方改动代码把nodes的定义放到main函数外的话,我怎样定义nodes才能把它传给从核?



  • @Tashkent athread_spawn 支持传参数



  • @popo 可以给个示例吗,因为手册上写得不是很清楚,而且我要传的数组不止一个


登录后回复