Ситуация такова; набор вычислений (написанных на C++), которые лучше всего выполнять с использованием любого графического процессора, доступного в системе пользователя, или его ЦП, если такого графического процессора не существует, где эта пользовательская система не является машиной для сборки и будет неизвестной (но довольно стандартная настольная) конфигурация.
В настоящее время я могу писать код с помощью Thrust, но (если я не ошибаюсь) в момент его фактической сборки цель установлена (в широком смысле, Nvidia или просто ЦП), и двоичный файл будет использовать только аппаратное обеспечение графического процессора на компьютере пользователя ( возможно, иначе даже не запустится), если он из того же семейства графических процессоров, для которого был создан двоичный файл.
Что бы я хотел в волшебном идеальном мире, так это двоичный файл, который будет определять, какое (если есть) семейство графических процессоров (Nvidia, ATI, откат к простому процессору) доступно на машине, на которой оно работает, и использовать его. Необходимость создавать три отдельные версии и убедиться, что каждый пользователь получает правильную версию для своей конкретной машины, не является стартовой задачей (целями являются довольно стандартные рабочие столы; каждый из этих трех вполне приемлем; цель состоит в том, чтобы иметь двоичный файл для каждой из этих трех целей, который идентифицирует и использует доступный графический процессор сам по себе, будь то Nvidia, ATI или просто ЦП).
Я набирал несколько обнадеживающих терминов в Google, но пока не нашел ничего, что касалось бы этого; насколько я знаю, это полностью решенная проблема, и я просто не набрал нужных слов.
Может ли кто-нибудь сказать мне, что (если есть) стандартный способ сделать это?
Правки: удалена информация о неверной тяге, добавлено примечание об оборудовании конечной цели.