| 515 | |
| 516 | template<> |
| 517 | void |
| 518 | xTrmm<cl_float>:: |
| 519 | roundtrip_func() |
| 520 | { |
| 521 | timer.Start(timer_id); |
| 522 | cl_int err; |
| 523 | //set up buffer |
| 524 | buffer_.buf_a_ = clCreateBuffer(ctx_, CL_MEM_READ_ONLY, |
| 525 | (buffer_.lda_ * buffer_.a_num_vectors_ + |
| 526 | buffer_.offA_) * sizeof(cl_float), |
| 527 | NULL, &err); |
| 528 | |
| 529 | buffer_.buf_b_ = clCreateBuffer(ctx_, CL_MEM_READ_WRITE, |
| 530 | (buffer_.ldb_ * buffer_.b_num_vectors_ + |
| 531 | buffer_.offB_) * sizeof(cl_float), |
| 532 | NULL, &err); |
| 533 | //initialize gpu buffer |
| 534 | err = clEnqueueWriteBuffer(queues_[0], buffer_.buf_a_, CL_TRUE, |
| 535 | buffer_.offA_ * sizeof(cl_float), |
| 536 | buffer_.lda_ * buffer_.a_num_vectors_ * |
| 537 | sizeof(cl_float), |
| 538 | buffer_.a_, 0, NULL, NULL); |
| 539 | |
| 540 | err = clEnqueueWriteBuffer(queues_[0], buffer_.buf_b_, CL_TRUE, |
| 541 | buffer_.offB_ * sizeof(cl_float), |
| 542 | buffer_.ldb_ *buffer_.b_num_vectors_ * |
| 543 | sizeof(cl_float), |
| 544 | buffer_.b_, 0, NULL, NULL); |
| 545 | //call_func |
| 546 | clblasStrmm(order_, buffer_.side_, buffer_.uplo_, |
| 547 | buffer_.trans_a_, buffer_.diag_, |
| 548 | buffer_.m_, buffer_.n_, buffer_.alpha_, |
| 549 | buffer_.buf_a_, buffer_.offA_, buffer_.lda_, |
| 550 | buffer_.buf_b_, buffer_.offB_, buffer_.ldb_, |
| 551 | numQueues, queues_, 0, NULL, NULL); |
| 552 | //read gpu buffer |
| 553 | err = clEnqueueReadBuffer(queues_[0], buffer_.buf_b_, CL_TRUE, |
| 554 | buffer_.offB_ * sizeof(cl_float), buffer_.ldb_ * buffer_.b_num_vectors_ * |
| 555 | sizeof(cl_float), |
| 556 | buffer_.b_, 0, NULL, &event_); |
| 557 | clWaitForEvents(1, &event_); |
| 558 | timer.Stop(timer_id); |
| 559 | |
| 560 | } |
| 561 | |
| 562 | template<> |
| 563 | void |
nothing calls this directly
no test coverage detected