2017-02-20 60 views
1

Простое приложение cuda helloworld отлично работает при построении в 32 бит с использованием сообщества visual studio 2015 в Windows 10. Однако, если я его построю в 64 бит, он не выполняетсяcuda простое приложение, работающее на 32 бит не для 64 бит

GPU: Telsa K40c

ToolKit: CUDA 8

Операционная система: Windows 10 64bit

Visual Studio: Community Edition.

нет сообщения об ошибке в выходной консоли.

#include "cuda_runtime.h" 
#include "device_launch_parameters.h" 
#include<stdio.h> 
__global__ void welcome() { 
printf("Hello world :)"); 
} 

int main() { 
welcome << <1, 1 >> >(); 
cudaDeviceSynchronize(); 
return 0; 
} 
+0

Я выполнил точные шаги в руководстве по установке, если это некорректная установка того, как будет работать образец deviceQuery. –

+0

Вы производите 64-битный код CUDA в дополнение к 64-битовому хост-коду? Это отдельный флаг, который его контролирует. Более точно 'nvcc -m32' генерирует 32-битный код устройства, отсутствие такого флага генерирует 64-битный код устройства. – CygnusX1

ответ

1

Я столкнулся с той же проблемой и открыл ошибку для nvidia # 1855074.

Они воспроизвели его успешно, и я жду обновления на нем.

Одно можно сказать точно, это на их стороне.

Единственным обходным решением, которое я нашел, было положить мою карту в режим WDDM через nvidia-smi, что сломало мою панель задач.

Я рекомендую подождать исправления.

+0

как отследить эту ошибку? это было разрешено? Я столкнулся с подобной проблемой. cudaMalloc просто зависает в Win10 x64 в одном из моих приложений! – azmath

+0

Должен быть разрешен, начиная с CUDA 9. –

+0

Я могу подтвердить, что CUDA 9.1 с VS 2017 15.5.6 имеет ту же проблему. У меня есть приложение на основе плагинов, где основное приложение загружает DLL во время выполнения. Все эти библиотеки используют CUDA. DLL, которые работают без проблем, используют библиотеку глубокого обучения 'dlib'. Проблема вызвана конкретной dll, которая использует глубокую систему обучения «darknet», и она зависает при вызове cudaMalloc. – azmath