AIRobot

AIRobot quick note


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

Hello World on Sunway TaihuLight

发表于 2018-11-16 更新于 2019-01-02 分类于 未分类
本文字数: 1.2k 阅读时长 ≈ 1 分钟

前言

“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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <athread.h>

char s[64][100];

extern SLAVE_FUN(func)();

int main(int argc, char **argv)
{
int i;
printf("Hello World from Master-core\n");
athread_init();
printf("Master-core start spawning\n");
athread_spawn(func, 0);
athread_join();
athread_halt();
for(i=0;i<64;++i)
printf("%s\n",s[i]);
return 0;
}

slave.c

1
2
3
4
5
6
7
8
9
#include <slave.h>
#include <string.h>

extern char s[64][100];

void func()
{
sprintf(s[_MYID],"Hello World from slave-core %d",_MYID);
}

屏幕快照 2017-07-23 上午4.22.34.png

神威·太湖之光众核基础编译系统
帧差法侦测运动目标
  • 文章目录
  • 站点概览
AIRobot

AIRobot

AIRobot quick note
130 日志
15 分类
23 标签
GitHub E-Mail
Creative Commons
  1. 1. 前言
  2. 2. Hello World
0%
© 2023 AIRobot | 716k | 10:51