前言
“Hello World”作为经典的编程入门程序,多数学习新编程语言的人都会用新编程语言输出”Hello World”。现在,我要在神威·太湖之光上用C语言编写运行这个经典程序。
神威·太湖之光是采用众核架构的超级计算机,分为国产高速计算系统和商用辅助计算系统两个计算系统。国产高速计算系统采用申威26010处理器,每个处理器作为一个节点,共有40960个节点。每个处理器拥有4个核组,每个核组有1个主核和64个从核。换句话说,每个申威26010共有4(1+64)=260核,国产高速计算系统总共40960*4(1+64)=10649600核;商用辅助计算系统为980个计算节点:2路E5-2680v3,24核,2.5Ghz,128GB内存;32个胖节点:8路E7–8860v3,128核心,2.2Ghz,1TB内存。
我猜测商用辅助计算系统主要是用于企业需求,采用intel CPU,具有x86架构,适用于金融、动漫等科学价值低资源需求高的任务。国产高速计算系统适用于高学术价值或者高国家战略需求的任务。作为刚踩坑HPC的我,将在国产高速计算系统中用多个核心输出”Hello World” :)
Hello World
每个核组分为主核和从核,主核一般作为运算控制核心,从核作为运算核心。
所以有两个源文件host.c和slave.c。为了避免加速线程间同步的问题,我开了一个主从共享内存,从核直接把自己的结果存入到对应位置,最后主核输出结果。
host.c
1 |
|
slave.c
1 | #include <slave.h> |