当并行服务器已经开始工作后,就可以在网格中通过callx命令分配计算任务到各个服务器了。如下面的网格parallel01.dfx:
|
A |
1 |
=file("D:/files/txt/PersonnelInfo.txt") |
2 |
=A1.import@t(;pPart:pAll) |
3 |
=A2.select(State==pState) |
4 |
return A3 |
这个网格中的代码,从人员信息文件PersonnelInfo.txt中,读取一部分数据,并从中选出指定州的员工数据。其中用到的网格参数如下:
在主程序中,使用集群并发计算调用parallel.dfx,来计算全部Ohio州的员工:
|
A |
1 |
[192.168.10.229:8281] |
2 |
=callx("D:/files/dfx/parallel01.dfx","OH",to(20),20;A1) |
3 |
=A2.conj() |
其中,A1指定计算时调用的并发服务器列表,A2中用callx调用这些服务器来执行并发计算。计算后,A2中的结果如下:
可见,在使用集群服务器时,一个任务会根据参数的数量拆分为多个工作,交由集群服务器去执行。而每个分机又会将工作分配给各个进程去处理,每个进程都会返回一个结果,A2中的数据是就是每个结果排列构成的序列。在A3中将结果合并后,如下:
通过这种方法,主程序可以把复杂运算或者大数据量的运算,拆分成多个小任务,交由多个并行服务器分别计算,并在主程序中整合结果。关于并行计算的详细讲解,将在10.2集群计算 中继续。