OpenCLおよびCudaコードを hgpu.org にアップロードしています。ラップトップにグラフィックカードがないためです。コードをアップロードすると、次のエラーが表示されます。
make: Warning: File `main.cu' has modification time 381 s in the future
make: warning: Clock skew detected. Your build may be incomplete.
クロックスキューは、マシンのクロック時間とサーバーのクロック時間の違いによるものであることがわかっているため、サーバーの時間と同期しました。 OpenCLおよびC++コードは現在正常に実行されていますが、Cudaコードはまだこのエラーを発生させます。
だから私の質問は:
時間同期以外にクロックスキューエラーの他の理由はありますか?そして、もしあれば、どうすれば解決できますか?
Cuda Code:
__global__
void test()
{
}
int main()
{
dim3 gridblock(1,1,1);
dim3 threadblock(1,1,1);
test<<<gridblock,threadblock>>>();
return 0;
}
注:makeファイルも提供できます。
私は自分の質問に答えます。
Makefileに次のコード行を追加し、「クロックスキュー」の問題を修正しました。
clean:
find . -type f | xargs touch
rm -rf $(OBJS)
次のコマンドを入力します。
find . -exec touch \{\} \;
(検索する最初の引数は、検索するディレクトリを指定します)
この投稿を参照してください: リモートLinuxマシンでのC++のコンパイル-「クロックスキューが検出されました」警告 。
ソースコードのみをコピーし(実行可能ファイルはコピーしない)、touch *
最終変更時刻を現在のhgpu.orgサーバー時刻に設定します。これにより、残念ながらすべてが再構築されます。
好奇心から、PCの時刻を同期した後、main.cuの変更時間は今後381秒のままですか?
問題のあるファイルがあるディレクトリに移動し、touch *
コンソールで引用符なしで、あなたは良いはずです。
理由の1つは、PCの日付/時刻が不適切である可能性があります。
Ubuntu PCで以下を使用して日付と時刻を確認します。
date
例、日付と時刻を更新する方法の1つは次のとおりです。
date -s "23 MAR 2017 17:06:00"
やってみてください
make clean
(make
の代わりに)、その後
make
再び。