Cublas Library
-
Upload
abdul-dakkak -
Category
Documents
-
view
154 -
download
6
Transcript of Cublas Library
![Page 1: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/1.jpg)
CUDA Toolkit 4.0CUBLAS Library
![Page 2: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/2.jpg)
![Page 3: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/3.jpg)
![Page 4: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/4.jpg)
![Page 5: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/5.jpg)
![Page 6: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/6.jpg)
![Page 7: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/7.jpg)
![Page 8: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/8.jpg)
![Page 9: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/9.jpg)
![Page 10: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/10.jpg)
![Page 11: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/11.jpg)
![Page 12: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/12.jpg)
Chapter 1. Introduction
stat = cublasSetMatrix ( M , N , s i z e o f (∗ a ) , a , M , devPtrA , M ) ;
![Page 13: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/13.jpg)
![Page 14: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/14.jpg)
![Page 15: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/15.jpg)
![Page 16: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/16.jpg)
![Page 17: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/17.jpg)
![Page 18: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/18.jpg)
![Page 19: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/19.jpg)
![Page 20: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/20.jpg)
![Page 21: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/21.jpg)
![Page 22: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/22.jpg)
Chapter 4. CUBLAS Helper Function Reference
4.7 cublasSetPointerMode()
cublasStatus_tcublasSetPointerMode(cublasHandle_t handle, cublasPointerMode_t mode)
This function sets the pointer mode used by the CUBLAS library. The default is for thevalues to be passed by reference on the host. Please see the section on thecublasPointerMode_t type for more details.
Return Value MeaningCUBLAS_STATUS_SUCCESS the pointer mode was set successfullyCUBLAS_STATUS_NOT_INITIALIZED the library was not initialized
![Page 23: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/23.jpg)
![Page 24: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/24.jpg)
Chapter 4. CUBLAS Helper Function Reference
elemSize
![Page 25: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/25.jpg)
![Page 26: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/26.jpg)
Chapter 5CUBLAS Level-1 Function Reference
In this chapter we describe the Level-1 Basic Linear Algebra Subprograms (BLAS1)functions that perform scalar and vector based operations. We will use abbreviations<type> for type and <t> for the corresponding short type to make a more concise andclear presentation of the implemented functions. Unless otherwise specified <type> and<t> have the following meanings:
<type>
![Page 27: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/27.jpg)
![Page 28: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/28.jpg)
Chapter 5. CUBLAS Level-1 Function Reference
![Page 29: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/29.jpg)
![Page 30: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/30.jpg)
![Page 31: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/31.jpg)
![Page 32: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/32.jpg)
![Page 33: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/33.jpg)
![Page 34: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/34.jpg)
Chapter 5. CUBLAS Level-1 Function Reference
![Page 35: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/35.jpg)
Chapter 5. CUBLAS Level-1 Function Reference
![Page 36: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/36.jpg)
Chapter 5. CUBLAS Level-1 Function Reference
Param. Memory In/out Meaninghandle input
![Page 38: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/38.jpg)
![Page 39: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/39.jpg)
![Page 40: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/40.jpg)
![Page 41: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/41.jpg)
Chapter 6. CUBLAS Level-2 Function Reference
const cuDoubleComplex *beta,cuDoubleComplex *y, int incy)
This function performs the banded matrix-vector multiplication
y = �op(A)x + �y
where A is a m
![Page 42: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/42.jpg)
![Page 43: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/43.jpg)
![Page 44: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/44.jpg)
Chapter 6. CUBLAS Level-2 Function Reference
const float *x, int incx,const float *y, int incy,float *A, int lda)
cublasStatus_t cublasDger (cublasHandle_t handle, int m, int n,const double *alpha,const double *x, int incx,const double *y, int incy,double *A, int lda)
cublasStatus_t cublasCgeru(cublasHandle_t handle, int m, int n,const cuComplex *alpha,const cuComplex *x, int incx,const cuComplex *y, int incy,cuComplex *A, int lda)
cublasStatus_t cublasCgerc(cublasHandle_t handle, int m, int n,const cuComplex *alpha,const cuComplex *x, int incx,const cuComplex *y, int incy,cuComplex *A, int lda)
cublasStatus_t cublasZgeru(cublasHandle_t handle, int m, int n,const cuDoubleComplex *alpha,const cuDoubleComplex *x, int incx,const cuDoubleComplex *y, int incy,cuDoubleComplex *A, int lda)
cublasStatus_t cublasZgerc(cublasHandle_t handle, int m, int n,const cuDoubleComplex *alpha,const cuDoubleComplex *x, int incx,const cuDoubleComplex *y, int incy,cuDoubleComplex *A, int lda)
This function performs the rank-1 update
A =
(�xyT +A if ger(),geru() is called�xyH +A if gerc() is called
where A is a m� n
![Page 45: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/45.jpg)
![Page 46: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/46.jpg)
Chapter 6. CUBLAS Level-2 Function Reference
If uplo == CUBLAS_FILL_MODE_LOWER then the symmetric banded matrix A is stored
![Page 47: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/47.jpg)
![Page 50: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/50.jpg)
Chapter 6. CUBLAS Level-2 Function Reference
Param. Memory In/out Meaninghandle input handle to the CUBLAS library context.uplo input indicates if matrix A lower or upper part
is stored, the other symmetric part is not referen-
![Page 52: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/52.jpg)
Chapter 6. CUBLAS Level-2 Function Reference
Param.
![Page 53: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/53.jpg)
Chapter 6. CUBLAS Level-2 Function Reference
Param. Memory In/out Meaninghandle input handle to the CUBLAS library context.uplo input indicates if matrix A
![Page 54: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/54.jpg)
Chapter 6. CUBLAS Level-2 Function Reference
int n, int k, const cuDoubleComplex *A, int lda,cuDoubleComplex *x, int incx)
This function performs the triangular banded matrix-vector multiplication
x = op(A)x
where A is a triangular banded matrix, and x is a vector. Also, for matrix A
op(A) =
8><>:A if trans == CUBLAS_OP_N
AT if trans == CUBLAS_OP_T
AH if trans == CUBLAS_OP_C
If uplo == CUBLAS_FILL_MODE_LOWER
![Page 55: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/55.jpg)
![Page 56: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/56.jpg)
Chapter 6. CUBLAS Level-2 Function Reference
If
![Page 57: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/57.jpg)
![Page 58: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/58.jpg)
Chapter 6. CUBLAS Level-2 Function Reference
Param. Memory In/out Meaninghandle input handle to the CUBLAS library context.uplo input indicates if matrix A lower or upper part
is stored, the other part is not referen-
![Page 59: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/59.jpg)
![Page 60: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/60.jpg)
![Page 61: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/61.jpg)
![Page 62: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/62.jpg)
![Page 63: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/63.jpg)
Chapter 6. CUBLAS Level-2 Function Reference
This function performs the Hermitian matrix-vector multiplication
y = �Ax + �y
where A is a n� n Hermitian matrix stored in lower or upper mode, x and y
![Page 64: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/64.jpg)
Chapter 6. CUBLAS Level-2 Function Reference
cuComplex *y, int incy)cublasStatus_t cublasZhbmv(cublasHandle_t handle, cublasFillMode_t uplo,
int n, int k, const cuDoubleComplex *alpha,const cuDoubleComplex *A, int lda,const cuDoubleComplex *x, int incx,const cuDoubleComplex *beta,cuDoubleComplex *y, int incy)
This function performs the Hermitian banded matrix-vector multiplication
y =
![Page 65: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/65.jpg)
Chapter 6. CUBLAS Level-2 Function Reference
Param. Memory In/out Meaning
![Page 68: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/68.jpg)
Chapter 6. CUBLAS Level-2 Function Reference
6.21 cublas<t>her2()
cublasStatus_t cublasCher2(cublasHandle_t handle, cublasFillMode_t uplo,int n, const cuComplex *alpha,const cuComplex *x, int incx,const cuComplex *y, int incy,cuComplex *A, int lda)
cublasStatus_t cublasZher2(cublasHandle_t handle, cublasFillMode_t uplo,int n, const cuDoubleComplex *alpha,const cuDoubleComplex *x, int incx,const cuDoubleComplex *y, int incy,cuDoubleComplex *A, int ldx.aEmF16/F64 10.909
![Page 69: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/69.jpg)
Chapter 6. CUBLAS Level-2 Function Reference
6.22 cublas<t>hpr()
cublasStatus_t cublasChpr(cublasHandle_t handle, cublasFillMode_t uplo,int n, const float *alpha,const cuComplex *x, int incx,cuComplex *AP)
cublasStatus_t cublasZhpr(cublasHandle_t handle, cublasFillMode_t uplo,int n, const double *alpha,const cuDoubleComplex *x, int incx,cuDoubleComplex *AP)
![Page 71: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/71.jpg)
Chapter 6. CUBLAS Level-2 Function Reference
Param. Memory In/out Meaninghandle input handle to the CUBLAS library context.uplo input indicates if matrix A lower or upper part
is stored, the other Hermitian part is not referen-
![Page 72: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/72.jpg)
![Page 73: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/73.jpg)
![Page 74: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/74.jpg)
![Page 75: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/75.jpg)
![Page 76: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/76.jpg)
Chapter 7. CUBLAS Level-3 Function Reference
For references please refer to:ssymm, dsymm, csymm, zsymm
7.3 cublas<t>syrk()
cublasStatus_t cublasSsyrk(cublasHandle_t handle,cublasFillMode_t uplo, cublasOperation_t trans,int n, int k,const float *alpha,const float *A, int lda,const float *beta,float *C, int ldc)
cublasStatus_t cublasDsyrk(cublasHandle_t handle,cublasFillMode_t uplo, cublasOperation_t trans,int n, int k,const double *alpha,const double *A, int lda,const double *beta,double *C, int ldc)
cublasStatus_t cublasCsyrk(cublasHandle_t handle,cublasFillMode_t uplo, cublasOperation_t trans,int n, int k,const cuComplex *alpha,const cuComplex *A, int lda,const cuComplex *beta,cuComplex *C, int ldc)
cublasStatus_t cublasZsyrk(cublasHandle_t handle,cublasFillMode_t uplo, cublasOperation_t trans,int n, int k,const cuDoubleComplex *alpha,const cuDoubleComplex *A, int lda,const cuDoubleComplex *beta,cuDoubleComplex *C, int ldc)
This function performs the symmetric rank-k update
C = �op(A
![Page 77: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/77.jpg)
![Page 78: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/78.jpg)
![Page 79: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/79.jpg)
Chapter 7. CUBLAS Level-3 Function Reference
Param. Memory In/out Meaninghandle
Ch. 685.31[-p/out
![Page 80: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/80.jpg)
![Page 81: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/81.jpg)
![Page 82: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/82.jpg)
Chapter 7. CUBLAS Level-3 Function Reference
![Page 83: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/83.jpg)
Chapter 7. CUBLAS Level-3 Function Reference
No test for singularity or near-singularity is included in this function.
Param. Memory In/out Meaninghandle input
![Page 84: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/84.jpg)
![Page 86: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/86.jpg)
![Page 87: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/87.jpg)
Chapter 7. CUBLAS Level-3 Function Reference
Param. Memory In/out MeaningMeaning
![Page 88: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/88.jpg)
![Page 90: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/90.jpg)
![Page 91: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/91.jpg)
![Page 92: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/92.jpg)
Chapter 8. Appendix A: Using the CUBLAS Legacy API
Helper function
![Page 93: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/93.jpg)
Chapter 8. Appendix A: Using the CUBLAS Legacy API
8. Change the scalar parameters to be passed by reference, instead of by value (usuallysimply adding “&” symbol in C/C++ is enough, because the parameters are passedby reference on the host by default). However, note that if the routine is running
![Page 94: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/94.jpg)
![Page 95: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/95.jpg)
Chapter 8. Appendix A: Using the CUBLAS Legacy API
#d e f i n e M 6#d e f i n e N 5#d e f i n e IDX2C( i , j , ld ) ( ( ( j ) ∗( ld ) )+( i ) )
![Page 96: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/96.jpg)
Chapter 9Appendix B: CUBLAS Fortran Bindings
The CUBLAS library is implemented using the C-based CUDA toolchain, and thusprovides a C-style API. This makes interfacing to applications written in C and C++
![Page 97: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/97.jpg)
![Page 98: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/98.jpg)
Chapter 9. Appendix B: CUBLAS Fortran Bindings
stopend
![Page 99: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/99.jpg)
![Page 100: Cublas Library](https://reader037.fdocuments.us/reader037/viewer/2022102721/54778f38b4af9f863a8b46f3/html5/thumbnails/100.jpg)