Skip to content

Commit 48dbf13

Browse files
committed
debug
1 parent 858baa8 commit 48dbf13

File tree

4 files changed

+17
-0
lines changed

4 files changed

+17
-0
lines changed

base/PyNucleus_base/solvers.pyx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ cdef class lu_solver(solver):
154154
perm_r = self.perm_r
155155
perm_c = self.perm_c
156156
try:
157+
print('lu1 pre', np.linalg.norm(np.asarray(b)))
157158
temp = self.temp_mem
158159
n = perm_c.shape[0]
159160
for i in range(n):
@@ -166,14 +167,19 @@ cdef class lu_solver(solver):
166167
backward_solve_csc(self.U.indptr, self.U.indices, self.U.data, x, temp)
167168
for i in range(n):
168169
x[i] = temp[perm_c[i]]
170+
print('lu1 post', np.linalg.norm(np.asarray(x)))
169171
except AttributeError:
172+
print('lu2 pre', np.linalg.norm(np.asarray(b)))
170173
x[:] = self.Ainv.solve(np.array(b, copy=False, dtype=REAL))
174+
print('lu2 post', np.linalg.norm(np.asarray(x)))
171175
else:
172176
from scipy.linalg import lu_solve
177+
print('lu3 pre', np.linalg.norm(np.asarray(b)))
173178
assign(x, b)
174179
lu_solve((self.lu, self.perm),
175180
np.array(x, copy=False, dtype=REAL),
176181
overwrite_b=True)
182+
print('lu3 post', np.linalg.norm(np.asarray(x)))
177183
return 1
178184

179185
def __str__(self):

drivers/runParallelGMG.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@
166166
for cycle, label in [(V, 'MG'),
167167
(FMG_V, 'FMG')]:
168168
if getattr(d, 'do'+label):
169+
assert np.all(np.isfinite(rhs.toarray())), rhs.toarray()
169170
ml.cycle = cycle
170171
with d.timer('Solve '+label):
171172
numIter = ml(rhs, x)
@@ -176,6 +177,7 @@
176177
its.add('Number of iterations '+label, numIter)
177178
res.add('Residual norm '+label, resNorm)
178179
resHist.add(label, residuals)
180+
print(label, r0, residuals, numIter, resNorm)
179181

180182
# set up cg
181183
cg = solverFactory.build('cg', A=A, maxIter=d.maxiter, tolerance=tol, setup=True)
@@ -192,6 +194,7 @@
192194
(gmres, 'GMRES'),
193195
(bicgstab, 'BICGSTAB')]:
194196
if getattr(d, 'do'+label):
197+
assert np.all(np.isfinite(rhs.toarray())), rhs.toarray()
195198
solver.setPreconditioner(acc)
196199
solver.setInitialGuess()
197200
with d.timer('Solve '+label):
@@ -203,14 +206,17 @@
203206
its.add('Number of iterations '+label, numIter)
204207
res.add('Residual norm '+label, resNorm)
205208
resHist.add(label, residuals)
209+
print(label, r0, residuals, numIter, resNorm)
206210
if getattr(d, 'doP'+label):
211+
assert np.all(np.isfinite(rhs.toarray())), rhs.toarray()
207212
solver.setPreconditioner(ml.asPreconditioner(cycle=V), False)
208213
solver.setInitialGuess()
209214
with d.timer('Solve P'+label):
210215
numIter = solver(rhs, x)
211216
residuals = solver.residuals
212217
A.residual_py(x, rhs, r)
213218
resNorm = r.norm(False)
219+
print(label, r0, residuals, numIter, resNorm)
214220
rate.add('Rate of convergence P'+label, (resNorm/r0)**(1/numIter), tested=False if label == 'BICGSTAB' else None)
215221
its.add('Number of iterations P'+label, numIter, aTol=2 if label == 'BICGSTAB' else None)
216222
res.add('Residual norm P'+label, resNorm)

multilevelSolver/PyNucleus_multilevelSolver/coarseSolvers_{SCALAR}.pxi

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ cdef class {SCALAR_label}coarseSolver({SCALAR_label_lc_}iterative_solver):
108108
cdef BOOL_t solve_cg(self):
109109
self.rhs[:] = 0.
110110
self.overlapsCoarse.receive{SCALAR_label}(self.rhs)
111+
print('receive rhs', np.linalg.norm(np.asarray(self.rhs)))
111112
if self.intraLevelCoarse is not None:
112113
self.intraLevelCoarse.distribute{SCALAR_label}(self.rhs)
113114
with self.PLogger.Timer('solveTimeLocal'):
@@ -134,6 +135,7 @@ cdef class {SCALAR_label}coarseSolver({SCALAR_label_lc_}iterative_solver):
134135
if (self.overlapsFine is not None) or (b.shape[0] != self.Ainv.num_rows):
135136
with self.PLogger.Timer('solveTime'):
136137
if self.inSubdomain and self.canWriteRHS():
138+
print('send rhs', np.linalg.norm(np.asarray(b)))
137139
self.sendRHS(b)
138140
if self.inCG:
139141
ret = self.solve_cg()

multilevelSolver/PyNucleus_multilevelSolver/multigrid_{SCALAR}.pxi

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,8 @@ cdef class {SCALAR_label}multigrid({SCALAR_label_lc_}iterative_solver):
242242
str label = str(lvlNo)
243243
FakeTimer Timer = self.PLogger.Timer(label, manualDataEntry=True)
244244
{SCALAR_label}levelMemory lvl, lvlCoarse
245+
print('RHS on ', lvlNo, np.linalg.norm(np.asarray(b)))
246+
print('X pre on ', lvlNo, np.linalg.norm(np.asarray(x)))
245247
if lvlNo == 0:
246248
Timer.start()
247249
if isinstance(self.coarse_solver, {SCALAR_label_lc_}iterative_solver):
@@ -289,6 +291,7 @@ cdef class {SCALAR_label}multigrid({SCALAR_label_lc_}iterative_solver):
289291
lvl.smoother.eval(b, x, postsmoother=True)
290292
Timer.end()
291293
Timer.enterData()
294+
print('X post on ', lvlNo, np.linalg.norm(np.asarray(x)))
292295

293296
def asPreconditioner(self, INDEX_t maxIter=1, CycleType cycle=V):
294297
return {SCALAR_label}multigridPreconditioner(self, cycle, maxIter)

0 commit comments

Comments
 (0)