-
Notifications
You must be signed in to change notification settings - Fork 178
/
tril_demo.py
33 lines (28 loc) · 981 Bytes
/
tril_demo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/env python
"""
Demonstrates how to extract the lower triangle of a matrix.
"""
from __future__ import print_function
import pycuda.autoinit
import pycuda.driver as drv
import numpy as np
import pycuda.gpuarray as gpuarray
import skcuda.linalg as culinalg
import skcuda.misc as cumisc
culinalg.init()
# Double precision is only supported by devices with compute
# capability >= 1.3:
import string
demo_types = [np.float32, np.complex64]
if cumisc.get_compute_capability(pycuda.autoinit.device) >= 1.3:
demo_types.extend([np.float64, np.complex128])
for t in demo_types:
print('Testing lower triangle extraction for type ' + str(np.dtype(t)))
N = 10
if np.iscomplexobj(t()):
a = np.asarray(np.random.rand(N, N), t)
else:
a = np.asarray(np.random.rand(N, N) + 1j * np.random.rand(N, N), t)
a_gpu = gpuarray.to_gpu(a)
b_gpu = culinalg.tril(a_gpu, False)
print('Success status: %r' % np.allclose(b_gpu.get(), np.tril(a)))