Да, устройство с графическим процессором должно быть установлено явно, или будет использоваться устройство по умолчанию (обычно устройство 0)
Имейте в виду, что после запуска среды выполнения с использованием одного устройства все функции, вызываемые в одном потоке, будут закреплены на этом устройстве.
Что-то, что я считаю полезным при запуске темы,
cudaThreadExit(); // clears all the runtime state for the current thread
cudaSetDevice(deviceId); // explicit set the current device for the other calls
cudaMalloc
cudaMemcpy
etc..
В руководстве по программированию есть глава, посвященная ему.