| 495 | } |
| 496 | |
| 497 | template <typename T> cl_int |
| 498 | baseMetod<T>::getResult() |
| 499 | { |
| 500 | cl_int err; |
| 501 | /* |
| 502 | if (C == NULL) { |
| 503 | err = clEnqueueReadBuffer(queues[0], bufB, CL_TRUE, 0, size * size * sizeof(TYPE), |
| 504 | B, 0, NULL, NULL); |
| 505 | } |
| 506 | else { |
| 507 | err = clEnqueueReadBuffer(queues[0], bufC, CL_TRUE, 0, size * size * sizeof(TYPE), |
| 508 | C, 0, NULL, NULL); |
| 509 | } |
| 510 | */ |
| 511 | /* |
| 512 | if (C == NULL) { |
| 513 | resultBuffer = Bresult; |
| 514 | } |
| 515 | else |
| 516 | { |
| 517 | resultBuffer = Cresult; |
| 518 | } |
| 519 | */ |
| 520 | |
| 521 | T* s = NULL; |
| 522 | s = ( resultBuffer == Aresult)? A: ( resultBuffer == Bresult) ? B: ( resultBuffer == Cresult)? C:( resultBuffer == Xresult)? X:( resultBuffer == Yresult)? Y: AP; |
| 523 | |
| 524 | cl_mem bufs = ( resultBuffer == Aresult)? bufA: ( resultBuffer == Bresult) ? bufB: ( resultBuffer == Cresult)? bufC:( resultBuffer == Xresult)? bufX:( resultBuffer == Yresult)? bufY: bufAP; |
| 525 | |
| 526 | size_t transferSize = 0; |
| 527 | if ( resultBuffer == Aresult || resultBuffer == Bresult || resultBuffer == Cresult ) |
| 528 | { |
| 529 | transferSize = size * size; |
| 530 | } |
| 531 | else if ( resultBuffer == Xresult || resultBuffer == Yresult ) |
| 532 | { |
| 533 | transferSize = size; |
| 534 | } |
| 535 | else if ( resultBuffer == APresult) |
| 536 | { |
| 537 | transferSize = (size * (size + 1))/2; |
| 538 | } |
| 539 | |
| 540 | transferSize *= sizeof(TYPE); |
| 541 | err = CL_SUCCESS; |
| 542 | |
| 543 | err = clEnqueueReadBuffer(queues[0], bufs, CL_TRUE, 0, transferSize, |
| 544 | s, 0, NULL, NULL); |
| 545 | return err; |
| 546 | |
| 547 | } |
| 548 | /////// |
| 549 | template<typename T> |
| 550 | class GemmMetod : public baseMetod<T> |