This example showcases the usage of rocBLAS' Level 1 SCAL function. The Level 1 API defines operations between vector and vector. SCAL is a scaling operator for an
- Read in and parse command line parameters.
- Allocate and initialize host vector.
- Compute CPU reference result.
- Create a rocBLAS handle.
- Allocate and initialize device vector.
- Use the rocBLAS handle to enable passing the
$a$ scaling parameter via a pointer to host memory. - Call rocBLAS' SCAL function.
- Copy the result from device to host.
- Destroy the rocBLAS handle, release device memory.
- Validate the output by comparing it to the CPU reference result.
The application provides the following optional command line arguments:
-
-a
or--alpha
. The scalar value$a$ used in the SCAL operation. Its default value is 3. -
-x
or--incx
. The stride between consecutive values in the data array that makes up vector$x$ , must be greater than zero. Its default value is 1. -
-n
or--n
. The number of elements in vector$x$ , must be greater than zero. Its default value is 5.
- rocBLAS is initialized by calling
rocblas_create_handle(rocblas_handle*)
and it is terminated by callingrocblas_destroy_handle(rocblas_handle)
. - The pointer mode controls whether scalar parameters must be allocated on the host (
rocblas_pointer_mode_host
) or on the device (rocblas_pointer_mode_device
). It is controlled byrocblas_set_pointer_mode
. rocblas_[sdcz]scal
multiplies each element of the vector by a scalar. Depending on the character matched in[sdcz]
, the scaling can be obtained with different precisions:s
(single-precision:rocblas_float
)d
(double-precision:rocblas_double
)c
(single-precision complex:rocblas_complex
)z
(double-precision complex:rocblas_double_complex
).
rocblas_create_handle
rocblas_destroy_handle
rocblas_handle
rocblas_float
rocblas_int
rocblas_set_pointer_mode
rocblas_pointer_mode_host
rocblas_sscal
hipFree
hipMalloc
hipMemcpy
hipMemcpyDeviceToHost
hipMemcpyHostToDevice