Gromacs程序有些数组无法传递给从核
-
我把从核代码放在外部库中,设主核中有一数组double *p,从核中有一数组double *slave_p,现在要将p中数据拷贝到slave_p。
将主核中的数组double *p的首地址传给从核,通过从核发起athread_get完成数据的传输
现在的问题是,gromacs中有些数组double *q:
1.在主核中能以q[i]的形式来访问数据,也就是说这个指针指向的数组是有效的,可以访问的
2.将q的首地址传给从核,从核athread_get后报以下错误,可能是从核没有办法通过q数组的首地址传输q的数据
3.打印q在主核与从核中的首地址,发现首地址并没有传错
4.自己申请了一个新的动态数组double *r,将q中的数据全部拷贝到r,把r传给从核,结果从核能从r中传输数据。
请问这可能是什么原因造成的?
-
遇到了同样的问题,望可以得到解答!
(这个问题卡一整天了
-
@Tashkent 从核上打印过q数组吗?此外,错误信息放的详细一点,你截的图没办法判断问题
-
@popo 从核上打印不了q数组,只打印了q的首地址
总之q数组就是传不了,哪怕只传1个double长度都会出现2中的错误
-
@tashkent 朋友试试bbs上的从核调试小工具啊。。。
-
static void cpe_printf(const char *fmt, ...){ volatile long vprintf_addr = (long)vprintf; int (*vprintf_ptr)(const char *, va_list) = (void*)vprintf_addr; va_list vlist; va_start(vlist, fmt); vprintf_ptr(fmt, vlist); va_end(vlist); }
------------------------------------------来自于@段晓辉
你试试这个打印函数
-
@popo 好的,我试试