Да, это возможно, это цель OpenCL поверх CUDA (которая работает только с оборудованием NVIDIA). По сути, вы делаете ядро для написания кода на C99, которое затем будет скомпилировано в промежуточный «независимый от производителя» код. Этот последний код будет интерпретироваться вашей картой (AMD или Nvidia) во время выполнения.
Как правило, нет причин, по которым вы должны писать разные коды, специфичные для карт, и не использовать разные SDK (но хорошо… Я работаю на Max OS 10.7, которая, возможно, отличается от других сред)