浏览次数:4582 发布时间:2017-08-31-12:08:00
总决赛赛题下载
总决赛作品提交截止日期:10月7日 24:00
参赛对象:CPC2017初赛晋级16强参赛队伍
下载链接:https://pan.baidu.com/s/1kVKIfhd
提取密码:cyck
程序说明
FFT是一种DFT的高效算法,称为快速傅立叶变换(fast Fourier transform),它根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得。本程序是FFT算法的一种并行实现。
程序包含5个源文件:
ft.f global.f print_results.f randi8.f timers.f以及2个头文件mpinpb.h npbparams.h。
其中ft.f是程序主要框架和算法实现;global.f中包含了多个全局变量的声明;print_results.f封装了程序结果打印函数,randi8.f实现了一种伪随机数算法,timers.f封装了计时函数。
编译说明
直接在fft目录下make即可。
$make
mpif90 -c -freeform global.f
mpif90 -c ft.f
mpif90 -c randi8.f
mpif90 -c print_results.f
mpif90 -c timers.f
mpif90 -o fft.exe ft.o global.o ./randi8.o ./print_results.o ./timers.o
运行说明
在fft目录下有./run.sh脚本,直接运行该脚本可以提交程序到队列中。
脚本内容如下:
rm –f run.log
cp -f ../code/opencfd.out ./
bsub -o run.log -q $queue_name -n $num -np 4 -share_size 4096 -host_stack 1024 -b -cgsp 64 ./fft.exe
其中num参数为MPI进程数量,每个算例固定并行规模;queue_name参数为队列名,需要根据实际分配的计算队列进行修改。
比赛规则
1、比赛最终提交的结果,需在给定的输入条件和run.sh提交脚本条件下运行完成,不得修改run.sh中的并行规模参数(-n $num)。
2、不得修改mpinpb.h npbparams.h global.f print_results.f randi8.f以及timers.f。对其他源文件的修改必须在原程序的核心算法基础上做出合理优化和改进,并得到与原程序相同的结果。
3、测试基准编译器为mpif90和mpicc。
4、最终优化比较,程序运行结束后,将对程序主要计算过程进行性能统计,以程序输出计时为评判依据。
5、主办方将准备三个不同规模的算例,FFT规模计算公式为2n1*2n2*2n3,其中n1≤12,n2≤12,n3≤12,且n1、n2和n3为正整数。在进行决赛时,现场由评审委员会抽取其中三个算例作为决赛赛题。并行规模不超过64个国产处理器(256核组)。
6、提交最终结果时,必须保持原有的目录结构和相关的源文件。每个算例路径下必须保留的文件包括:原有的run.sh 、fftout、所有的源文件、头文件以及run.log文件。
7、必须通过程序结果验证程序检验。
评分规则
FFT并行应用的总分为80分。所有参赛队伍将围绕给定的FFT并行计算程序进行性能优化。主办方将提供数个算例来测试参赛队伍对程序的优化效果,目标是取得最高的并行程序性能。三个算例的分数分别为25分、25分和30分。
计分规则:假设N是总算例个数,S1代表第i个算例的分值,那么总分数P的计算公式如下:
其中T1代表第i个算例的运行时间,Timin 代表所有参赛队伍中在第i个算例上取得的最少运行时间。
总决赛说明
举办日期:10月12日
参加对象:请初赛晋级的16强全体参赛队员到江苏无锡参加总决赛
神秘应用
在决赛期间,评审委员会还将现场公布一道赛题,对各参赛队的算法设计、程序优化以及临场应变能力进行考量。神秘应用总成绩为20分。
特别提醒:由于手机屏幕尺寸原因,会出现所显示的数据不准确情况,请各位参赛队伍务必通过百度网盘下载“CPC2017决赛赛题”说明文档。