Microsoft Accelerator и OpenCL поддерживают как CPU, так и GPU и не зависят от производителя (то есть работают на картах ATI и nVidia).
В случае OpenCL вам придется отдельно установить OpenCL на пользовательские машины (включенные в nVidia (поддерживает gvus от nvidia)) и ATI (поддерживает ati gpus и любые процессоры), загружаемые для Intel (поддержка cpus). Можно было бы просто сохранить AMD OpenCL.dll в комплекте с вашим программным обеспечением для использования в качестве откатного ЦП. OpenCL более развит (больше функций, меньше ошибок): он появился ранее, является кросс-платформенным и основан на существующих технологиях (CUDA, Brook +). OpenCL позволяет точно контролировать то, что вы на самом деле делаете, так что это быстрее, но немного сложнее.
Microsoft Accelerator, как я понял, работает на любом графическом процессоре с поддержкой DirectX (== любой современный графический процессор) и любом 64-разрядном процессоре. Он более плавно интегрируется в существующий код (без дополнительных файлов и множества библиотечных вызовов), но это не сказывается на производительности. MS Accelerator позволит вам быстрее реализовать ваши функции (это выглядит довольно просто), так что может быть хорошим началом. Но если он не показывает отличную производительность, вы все равно должны попробовать OpenCL, он мог бы работать лучше.
Итак, я бы посоветовал вам изучить OpenCL, поскольку: 1) OpenCL ближе к аппаратной архитектуре GPU, поэтому: а) он позволяет вам достигать более высокой производительности, б) вы можете писать более сложный код, в) вы будете учиться как все это работает; 2) Есть больше информации / учебники / хаки в Интернете; 3) Это кроссплатформенный (может быть, не очень хорошая функция в вашем случае, но все же); 4) OpenCL очень похож на CUDA, поэтому вы изучите сразу две технологии, связанные с GPU.