Ответ 1
Я собираюсь ответить на собственный вопрос.
Я добавил следующие строки кода в свой файл Makefile, и он исправил проблему "перекоса часов":
clean:
find . -type f | xargs touch
rm -rf $(OBJS)
Я загружаю свой 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.
Я собираюсь ответить на собственный вопрос.
Я добавил следующие строки кода в свой файл Makefile, и он исправил проблему "перекоса часов":
clean:
find . -type f | xargs touch
rm -rf $(OBJS)
Введите следующую команду:
find . -exec touch \{\} \;
(первый аргумент для поиска указывает каталог для поиска)
См. это сообщение: Компиляция С++ на удаленной машине Linux - предупреждение о перекосе часовых поясов.
Я бы предложил только скопировать исходный код (без исполняемых файлов), а затем запустить touch *
, чтобы установить последние измененные времена на текущее время сервера hgpu.org. Это заставит все, к сожалению, восстановить.
Из любопытства, является ли время модификации main.cu еще 381 секундой в будущем после синхронизации времени вашего ПК?
Просто перейдите в каталог, где находится тревожный файл, введите touch *
без кавычек в консоли, и вы должны быть хорошими.
Одной из причин может быть неправильная дата/время вашего ПК.
В Ubuntu PC для проверки даты и времени с помощью:
date
Пример. Один из способов обновления даты и времени:
date -s "23 MAR 2017 17:06:00"
попробуйте сделать
make clean
(вместо make
), то
make
снова.
Makefile: обнаружено искажение часов "Возможное решение - коснуться каждого файла в дереве источников, чтобы обновлять отметки времени: Перейдите в корень поддерева: найти. -exec touch {} \; Затем сделайте чистую компиляцию и повторите попытку.