【发布时间】:2019-05-20 11:46:30
【问题描述】:
我正在尝试在 GPU 上复制向量数组的向量。
我尝试使用 OpenACC 复制子句。 copyin 子句不会复制我的数组的所有基础数据。当我尝试访问底层矢量数据时,在运行时出现“非法地址访问”错误。
vector<int32_t> *k1p = new vector<int32_t>[bin_num];
for (int i = 0; i < bin_mum; i++) {
//......
k1p[i].push_back(i);
}
#pragma acc kernels loop independent copyin(k1p[0:bin_num])
for (int i = 0; i < bin_mum; i++) {
//........
for (vector<int32_t>::const_iterator i2_it=k1p[i].begin(); i2_it!=k1p[i].end(); i2_it++) {
//.......
}
//..........
}
我想访问底层向量k1p[i]的元素,但实际上这段代码是用pgi编译器编译的,但是当我运行这段代码时,我得到了
调用 cuStreamSynchronize 返回错误 700:内核执行期间地址非法
【问题讨论】: