Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

Cholesky Factorization on GPU

s769
Beginner
194 Views

I am trying to compute a Cholesky factorization of a large matrix with an Intel Data Center Max 1550s GPU. The matrix size is 100,000 x 100,000. For testing, I am creating a random SPD matrix and seeing what the factorization/solve times are. The code file is attached. In the file, there is a commented out portion where it was making a random matrix. I changed it to just try a scaled Identity matrix first.

 

To compile:

 

icpx -fsycl -DGPU -o cholesky_gpu cholesky_gpu.cpp -lmkl_sycl -lmkl_intel_ilp64 -lmkl_core -lmkl_sequential -lsycl -lOpenCL

 

And then run:

./cholesky_gpu <N>

 where N is the matrix size. This works fine for matrices up to 40,000 or so. If I use the random matrix version, I start seeing errors like

Provided range is out of integer limits. Pass `-fno-sycl-id-queries-fit-in-int' to disable range check.

I thought this had to do with the `range<2>(N,N)` becoming too big (I am using size_t and not int). With the scaled identity matrix, the potrf call gives an error saying the matrix is not positive definite.

 

Can someone help me solve this issue? I am very new to SYCL, so I might be making a very silly mistake somewhere. If there is an example Cholesky code that works on an arbitrary size matrix, that would be perfect!

 

Thanks

0 Kudos
1 Reply
Chao_Y_Intel
Moderator
79 Views

Could you please check the oneMKL example for Cholesky factorization located in the following folder:


mkl/latest/share/doc/mkl/examples/examples_sycl.tgz


The Cholesky factorization examples can be found at:


sycl/lapack/source/potrs.cpp

sycl/lapack/source/potrs_usm.cpp


If you are working with a large matrix, please define the dimension as 64-bit integers and use the oneMKL 64-bit integer interface.


Reply