2016-09-15 16 views
0

私は特定のタイムアウトでCUDAカーネルを起動しようとしています。私はCUDAカーネルのデバイスタイムアウトがあることを知っていますが、共有サーバーで作業しているので、可能であってもこのタイムアウトを設定するアクセス権はありません。タイムアウトでCUDA-Kernelを起動する

私はこれをオートチューニングアプリケーションに必要とします。私は、すでに発見された最速のランタイムよりも速くならないカーネルの実行をキャンセルするタイムアウトを設定したいと思います。

このようなタイムアウトでCUDAカーネルを起動する方法はありますか? ありがとうございます!

+0

https://devtalk.nvidia.com/default/topic/902660/per-kernel-timeout-/ – tera

答えて

1

teraのリンクのおかげで、自分自身でタイムアウトを実装することができました。このスレッドで説明したように、次のように実行できます。

const int timeout = 2000000; 
int progressed = 0; 
while (cudaEventQuery(stop) != cudaSuccess) { 
    usleep(20000); 
    progressed += 20000; 
    if (progressed >= timeout) { 
     cudaDeviceReset(); 

     throw std::runtime_error("timeout"); 
    } 
} 
// No timeout occured 

この場合、stopはカーネル実行後に記録されたイベントです。

関連する問題