常见问题

PAC2017在线培训答疑

浏览次数: 发布时间:2017-07-25 01:07:14

一、7月13日优化、应用组培训答疑:

1、Q:优化组KNL机器OPA是必须通过光纤吗?和Infiband有异同吗?

       A:OPA的连接线缆包括铜缆和光纤两种和InfiniBand的用处一样,都是高性能计算的互联网络,但是链路层协议不一样。

2、Q:利用intel编译器编译程序的时候,主要有哪些比较重要的编译选项对程序优化有比较好的作用(除了O3以外)?

       A:视情况可以开启如-fp-model fast=2这样的浮点性能优化的选项;多个文件可以尝试-ipo选项;再更多的可以需要具体情况具体分析了。

3、Q:TBB链接优化是怎么操作的?

       A:链接时加上参数-ltbbmalloc_proxy 。

4、Q:非KNL平台处理器可否模拟使用AVX-512指令集?

       A:抱歉恐怕不行。

5、Q:int nrow_l = ((nrow_i+15)>>4)<<4;     第四部的这个先左移后右移的意义是什么?移完还是50000?

       A:模16去除尾数,相当于(nrow_i+15)-(nrow_i+15)%16

6、Q:数据转置为什么提升了速度呢?

       A:内层循环 1)访存连续,可以更高效的向量化 2)分块后缓存命中率提升,降低取数据的延迟。

7、Q:#ifdef _USEHBW   这种条件编译是干嘛的?

       A:之前用Flat Mode的时候,MCDRAM是独立存在于系统中而并非向Cache Mode时直接作为L3 Cache来使用的,这里的宏定义的部分对应的是使用专门的Memkind库的API在Flat Mode下在MCDRAM上分配和释放内存空间的一些代码。因为幻灯讲解里用的是Cache Mode,所以这里的宏实际是不需要的。

8、Q:程序计时有很多方法,哪种比较好一点?

       A:通常说来用gettimeofday,对于MPI程序,就是MPI_Wtime,遇到精度要求更高的场合需要去调用一些访问TSC的接口来做查询了。

9、Q:MPI_Wtime,每个节点其实是有时差的,返回的究竟是什么时间呢?gettimeofday返回的时间实际是物理时间对吧,和程序用的 cpu时间有差别?

       A:MPI_Wtime底层就是调用gettimeofday,但是在MPI初始化的时候会有个同步,大多数时候我们关注物理时间比CPU时间更多。

10、Q:step1和step2这两个程序我调试过了,发现有一些错误。我用的是gfortran编译器。第一个错误是为什么Covariance.1.f90中定义MType,COV这些变量的时候为什么用的是REAL类型而不是REAL*8,因为main.f90中是用REAL*8定义的,这样会不会导致传参出现错误?第二个错误是为什么要用IRep=1.0/I2,MeanX1(IVar2)=MeanX1(IVar2)*IRep而不是直接用MeanX1(IVar2)=MeanX1(IVar2)/I2,这样不会造成浮点数运算精度出错的问题吗?

      A:应该没有用到单精度,所以编译参数应该是加了-r8。第二个问题,对于浮点性能优化的时候,即便是写/I2这样的形式,也可能会被优化成*(1.0/I2)这样的指令,KNL对于倒数指令是硬件支持的。浮点性能优化会不会影响精度,肯定是和算法精度是有关的,对于这个试题,其附带了验证部分,优化后能够通过,所以我们可以用到各种激进的优化手段

11、Q:TBB malloc proxy 连接怎么使用?

         A:用Intel编译器做链接时直接加上-ltbbmalloc_proxy选项即可。

12、Q:FMADD和MASK以及CMP_GT_UQ这类优化有哪些手册可以参考和指导?

         A:Intel Intrinsic Guide会有部分介绍。

13、Q:FMADD和MASK以及CMP_GT_UQ这类优化有哪些手册可以参考和指导?

         A:详情请参考https://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html 。

二、7月14日人工智能组答疑

1、Q:在GitHub上有两个版本的BigDL ,其中master版本中缺少了bigdl.sh这个文件。想问一下是使用另一个版本的bigdl吗?

      A:bigdl.sh现在已经没有了,因为有一些版本上的改变

2、Q:命令行参数--driver-memory 10g  --executor-memory 20g要保证电脑必须至少有20G的内存吗 demo code实际运行起来大概占多少内存呢?

      A:有的模型大有的模型内存小,本届竞赛组委会已经部署好了百度云的环境,内存应该不是问题。

3、Q:运行到optimization的时候,报错EOFError ERROR:py4j.java_gateway:An error occurred while trying to connect to the java server(127.0.0.1:41217)      response=connection.send_command(command)  Py4JNetworkError:Error while receiving意思是连不上spark?

      A:这个py4j应该是python接口的问题。