Решая свою текущую задачу (созадние нейроконструктора работающего на видахе) сделали с комрадом библиотеку для программирования видах AMD - уровень абстракции над уровнем абстракции над вычислениями ( Computation Abstraction Layer == CAL) кто видел примеры из AMD StreamComputing SDK (CAL) тот поймёт зачем это было сделано ( что бы писать меньше хост-кода для запуска каждой задачи ;-)).
Могу вас уверить обьём кода уменьшился в 4-5 раз. Вот пример простейшего приложения
#include "useGPU.h"
using namespace std;
std::string programIL =
"il_ps_2_0\n"
"dcl_input_interp(linear) v0.xy\n"
"dcl_output_generic o0\n"
"dcl_resource_id(0)_type(2d,unnorm)_fmtx(float)_fmty(float)_fmtz(float)_fmtw(float)\n"
"sample_resource(0)_sampler(0) r0, v0.xy\n"
"dcl_literal l0, 0x3F000000, 0x3F000000, 0x3F000000, 0x3F000000\n"
"sub r2.x, r0.x, v0.x\n"
"mov o0.x, r2.x\n"
"ret_dyn\n"
"end\n";
void main()
{
useGPU g;
float idata[256][256];
for (int i = 0; i < j =" 0;" odata =" NULL;" string=""> > params;
params.push_back( make_pair(0,"i0") );
params.push_back( make_pair(1,"o0") );
CALevent e = g.Execute(0,0,1,params);
while ( g.Wait(0,e) == CAL_RESULT_PENDING);
void* ret = g.GetResult(1);
odata = reinterpret_cast
for(int i = 0; i <>
{
for(int j = 0; j <>