0

Windows 7 x64、Visual C++ 10 の 4 GB RAM を搭載した GTX 690 GPU でこれをテストしました。

2 つのデバイスのそれぞれに 1.2 GB の RAM を割り当てたいと考えています。最初のデバイスから RAM を取得し、次に 2 番目のデバイスから RAM を取得すると、失敗してメモリ割り当てエラーが返されますが、最初にデバイス 1 から取得してからデバイス 0 から取得すると、問題はありません。誰でも理由を教えてもらえますか?

このコードは失敗します:

void    * pM1 , * pM2 ;

CudaCheck( cudaSetDevice( 0 ) ) ;
CudaCheck( cudaMalloc( & pM1 , 1200000000 ) ) ;
CudaCheck( cudaSetDevice( 1 ) ) ;
CudaCheck( cudaMalloc( & pM2 , 1200000000 ) ) ; 

このコードは動作します:

void    * pM1 , * pM2 ;

CudaCheck( cudaSetDevice( 1 ) ) ;
CudaCheck( cudaMalloc( & pM1 , 1200000000 ) ) ;
CudaCheck( cudaSetDevice( 0 ) ) ;
CudaCheck( cudaMalloc( & pM2 , 1200000000 ) ) ; 

ベスト、ラミン

PS CudaCheck 関数は、出力結果をチェックするだけです。

4

1 に答える 1

1

問題が解決しました。問題は、アクティブな SLI が原因でした。無効にしましたが、現在はスムーズに機能しています。

于 2013-06-15T09:37:07.260 に答える