@caiji 原因是主核上有浮点寄存器和整数寄存器的区别,可以试试:
#define my_simdstore(va,addr) asm volatile("vldd %0,0(%1)" : “=f”(va) : "r"(addr))
=f
表示操作数是浮点寄存器。
swmore
@swmore
18
声望
278
帖子
9159
资料浏览
44
粉丝
2
关注
swmore 发布的帖子
-
RE: 向量化计算出现的异常问题
-
RE: 请问dma行模式,如何使用,测试了半天,发现还是有问题
@zhouyu 行模式下bsize和stride好像是正常使用的,就是原来的跨步和块大小,块大小好像也要是128B的整数倍。
-
RE: 请问dma行模式,如何使用,测试了半天,发现还是有问题
行模式要求主存地址128B对齐。
而且,id/8==0
是什么鬼?那不是第一行吗?行模式只需要一行里一个从核发送请求。 -
RE: 一个Ugly的针对CMake加入外部库的方式
另外给一个栗子吧:
test_cpe.c
#include <stdio.h> #include <slave.h> int cpe_hello(){ if (!_MYID) puts("Hahaha"); }
test_mpe.c
#include <athread.h> extern slave_cpe_hello(); void cpe_call(){ athread_init(); athread_spawn(cpe_hello, 0); athread_join(); }
gromacs-5.1.5/src/programs/mdrun_main.cpp
........ extern "C"{ void cpe_call(); } int main(int argc, char *argv[]) { cpe_call(); return gmx::CommandLineModuleManager::runAsMainCMain(argc, argv, &gmx_mdrun); }
注意extern C.
-
一个Ugly的针对CMake加入外部库的方式
鉴于前一阵子貌似大家已经因为编译和链入外部库的事情吵了起来.
我写了一个简单的脚本用来生成链入外部库的配置.mkdir $1 cd $1 cat > compile.sh <<EOF make -C cpelib -B && make -j 4 EOF mkdir cpelib cd cpelib cat > Makefile <<EOF CPE_SRCS=\$(wildcard *_cpe.c) MPE_SRCS=\$(wildcard *_mpe.c) CPE_OBJS=\$(patsubst %.c, %.o, \$(CPE_SRCS)) MPE_OBJS=\$(patsubst %.c, %.o, \$(MPE_SRCS)) OBJS=\$(CPE_OBJS) \$(MPE_OBJS) all: libmdrun-sw.a libmdrun-sw.a: \$(OBJS) -rm \$@ sw5ar cr \$@ \$(OBJS) \$(CPE_OBJS): %_cpe.o: %_cpe.c sw5cc -slave -c -msimd \$< -o \$@ \$(MPE_OBJS): %_mpe.o: %_mpe.c sw5cc -host -c -msimd \$< -o \$@ EOF make cd .. CC=mpicc CXX=mpiCC LDFLAGS="-Wl,--whole-archive,`readlink -f cpelib`/libmdrun-sw.a,--no-whole-archive" cmake .. -DGMX_FFT_LIBRARY=fftpack -DGMX_MPI=on -DGMX_DOUBLE=ON -DGMX_BUILD_MDRUN_ONLY=ON -DBUILD_SHARED_LIBS=off -LH
使用方式是:
- 初始化配置:
sh hlink.sh casename
- 放入自己的代码:
cp your_cpe_source_cpe.c casename cp your_mpe_source_mpe.c casename
这里的从核代码必须以_cpe.c结尾而主核代码为_mpe.c, make会自动根据这些文件进行wildcard并进行编译.
熟悉makefile的小朋友可以加一点自动依赖分析 (声明: 这个脚本生成的Makefile不带自动依赖分析所以我在compile.sh里面加入了-B).
3. 编译:cd casename sh compile.sh
- 大家加油!
另外: 如果脚本不好使不要投诉我了. 反正我一不是组委会的人, 二不是超算的技术支持, 所以投诉我是没有用的.