В наши дни для параллельного программирования есть две основные аппаратные среды: один - многопоточный процессор, а другой - графические карты, которые могут выполнять параллельные операции с массивами данных.
Вопрос: учитывая, что существуют две разные аппаратные среды, как я могу написать программу, которая является параллельной, но независимой от этих двух разных аппаратных сред. Я хочу сказать, что я хотел бы написать программу, и независимо от того, есть ли у меня видеокарта или многопоточный процессор или и то, и другое, система должна автоматически выбирать, на что ее можно запускать, либо на обеих графических картах, либо на многопоточном процессоре.Существуют ли какие-либо программные библиотеки/языковые конструкции, которые позволяют это?
Я знаю, что есть способы настроить таргетинг на графическую карту напрямую, чтобы запустить код, но мой вопрос в том, как мы можем программисты писать параллельный код, не зная ничего о аппаратном обеспечении, и система программного обеспечения должна планировать ее либо на графической карте, либо на ЦП.
Если вы хотите, чтобы я был более конкретным относительно платформы/языка, я бы хотел, чтобы ответ был о С++ или Scala или Java.
Спасибо