公告:非计时区代码不允许增,删,改
-
请认真阅读!!!
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 可以给个示例吗,因为手册上写得不是很清楚,而且我要传的数组不止一个