2013-08-14 20 views
9

Przesyłam mój kod OpenCL i Cuda do hgpu.org, ponieważ nie mam karty graficznej na moim laptopie. Kiedy mogę przesłać mój kod pojawia się następujący błąd:Jak rozwiązać błąd: "Wykryto przekroczenie zegara"?

make: Warning: File `main.cu' has modification time 381 s in the future 
make: warning: Clock skew detected. Your build may be incomplete. 

wiem, że zegar pochylać to spowodowane różnicą w swoim czasie maszyny zegara i czasu zegar serwera, więc mój czas synchronizowany z serwera. Kod OpenCL i C++ działa teraz dobrze, ale kod Cuda wciąż daje mi ten błąd.

Więc moje pytanie brzmi:

Czy jest jakiś inny powód, dla zegara skośnej błędu oprócz synchronizacji czasu? A jeśli tak, to jak mam to rozwiązać?

Kod Cuda:

__global__ 
void test() 
{ 
} 

int main() 
{ 
    dim3 gridblock(1,1,1); 
    dim3 threadblock(1,1,1); 

    test<<<gridblock,threadblock>>>(); 
    return 0; 
} 

Uwaga: Mogę dostarczyć plik make too.

+1

Screencap kodu jest ... nieparzysty ... – Reinderien

+0

możliwy duplikat [Kompilacja C++ na zdalnym komputerze z systemem Linux - "Ostrzeżenie o wykryciu zegara" (http://stackoverflow.com/questions/3824500/compiling- c-on-remote-linux-machine-clock-skew-detected-warning-warning) – skrrgwasme

Odpowiedz

6

Zamierzam odpowiedzieć na własne pytanie.

I dodaje następujące linie kodu do mojego Makefile i ustaliła „zegar pochylać” problem:

clean: 
    find . -type f | xargs touch 
    rm -rf $(OBJS) 
+4

To traktuje tylko symptom, a nie przyczynę leżącą u podłoża, nie "rozwiązuje" problemu. Jeśli ktoś ma ten problem, nie rób tego! – RolKau

+0

@RolKau Jak myślisz, co to jest problem? – zindarod

5

Zobacz ten artykuł: Compling C++ on remote Linux machine - “clock skew detected” warning.

Proponuję tylko kopiowanie kodu źródłowego (bez plików wykonywalnych), a następnie uruchamianie touch *, aby ustawić czas ostatniej modyfikacji na bieżący czas serwera hgpu.org. To zmusi wszystko do niestety odbudowania.

Z ciekawości, czy czas modyfikacji main.cu nadal wynosi 381 sekund w przyszłości po zsynchronizowaniu czasu twojego komputera?

+0

Tak, jest to błąd po zakończeniu synchronizacji. Przesyłam również tylko pliki make i main.cu na serwer, bez plików wykonywalnych. – zindarod

+0

Czy użyłeś dotyku w pliku make? Jeśli możesz podać kilka wskazówek, jak z niego korzystać? Dodałem dotyku w pliku make, ale nie ma to żadnego wpływu. – zindarod

+0

Nie użyłem dotyku w pliku Makefile, zazwyczaj nie potrzebuję w ogóle dotykać. Myślałem o tym, że wykonujesz go z wiersza poleceń tuż przed uruchomieniem make. – chippies

5

Wpisz następujące polecenie

find -exec touch \{\} \; 
+8

Chcesz opracować? – swdev

2

Wystarczy przejść do katalogu, w którym plik jest niepokojące, typ touch * bez cudzysłowu w konsoli i powinno być dobrze.

+2

I zaktualizować znaczniki czasu wszystkich plików w tym katalogu? Czy nie jest to trochę niebezpieczne, zwłaszcza jeśli przypadkowo zrobione w niewłaściwym katalogu? –

-2

Makefile : Clock skew detected „Możliwym rozwiązaniem jest dotknąć każdego pliku w drzewie źródłowym w celu aktualizacji znaczniki czasu: Idź do korzeni sub-tree zrobić: find -exec dotyk {} \; Następnie należy oczyścić i ponowić kompilację

1

Jednym z powodów może być niewłaściwa data/czas.. twój komputer.

W komputerze Ubuntu sprawdzić datę i godzinę za pomocą:

date 

przykład jeden ze sposobów na datę i czas aktualizacji jest:

date -s "23 MAR 2017 17:06:00" 
+0

pasuje do tej sytuacji, prawidłowy czas systemowy, problem został rozwiązany. :) – yurenchen

0

spróbuj zrobić

make clean 

(zamiast make), a następnie

make 

ponownie.

Powiązane problemy