みんな、おはよう
スラストを研究するときに、p2p メモリ アクセスをテストしたいと考えています。しかし、何か問題があります。
テストコードは次のようになります。
#include <iostream>
#include <thrust/device_vector.h>
#include <thrust/transform.h>
#include <thrust/functional.h>
using namespace std;
void test(thrust::device_vector<int> &Vec)
{
try{
thrust::negate<int> op;
thrust::transform(Vec.begin(),Vec.end(),Vec.begin(),op);
}catch(thrust::system::system_error &e)
{
cerr<<"Something wrong: "<<e.what()<<endl;
}
}
int main()
{
cudaSetDevice(0);
thrust::device_vector<int> Vec(5);
for(int i=0;i<5;i++)
{
Vec[i]=i;
cout<<i<<" ";
}
cout<<endl;
int TID=1;
cudaSetDevice(TID);
cudaDeviceEnablePeerAccess(0,0);
test(Vec);
for(int i=0;i<5;i++)
cout<<Vec[i]<<" ";
cout<<endl;
return 0;
}
このコードを実行すると、エラー メッセージが表示されます。
terminate called after throwing an instance of 'thrust::system::system_error'
what(): invalid device pointer
Aborted
どうしたの?