Как решить ошибку: "Обнаружено обнаружение перекоса"?

Я загружаю свой 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:

__global__
void test()
{
}

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

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

Примечание: я также могу предоставить файл make.

Ответ 1

Я собираюсь ответить на собственный вопрос.

Я добавил следующие строки кода в свой файл Makefile, и он исправил проблему "перекоса часов":

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

Ответ 2

Введите следующую команду:

find . -exec touch \{\} \;

(первый аргумент для поиска указывает каталог для поиска)

Ответ 3

См. это сообщение: Компиляция С++ на удаленной машине Linux - предупреждение о перекосе часовых поясов.

Я бы предложил только скопировать исходный код (без исполняемых файлов), а затем запустить touch *, чтобы установить последние измененные времена на текущее время сервера hgpu.org. Это заставит все, к сожалению, восстановить.

Из любопытства, является ли время модификации main.cu еще 381 секундой в будущем после синхронизации времени вашего ПК?

Ответ 4

Просто перейдите в каталог, где находится тревожный файл, введите touch * без кавычек в консоли, и вы должны быть хорошими.

Ответ 5

Одной из причин может быть неправильная дата/время вашего ПК.

В Ubuntu PC для проверки даты и времени с помощью:

date

Пример. Один из способов обновления даты и времени:

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

Ответ 6

попробуйте сделать

make clean

(вместо make), то

make

снова.

Ответ 7

Makefile: обнаружено искажение часов "Возможное решение - коснуться каждого файла в дереве источников, чтобы обновлять отметки времени: Перейдите в корень поддерева: найти. -exec touch {} \; Затем сделайте чистую компиляцию и повторите попытку.