diff --git a/arraycontext/impl/pyopencl.py b/arraycontext/impl/pyopencl.py
index 3cbf9856dfe0c3a20d513487460e099208752eed..9b02343812df3450455f5a45ac054e15e961f3b3 100644
--- a/arraycontext/impl/pyopencl.py
+++ b/arraycontext/impl/pyopencl.py
@@ -187,6 +187,19 @@ def _flatten_array(ary):
 
 class _PyOpenCLFakeNumpyLinalgNamespace(BaseFakeNumpyLinalgNamespace):
     def norm(self, ary, ord=None):
+        from numbers import Number
+        import pyopencl.array as cla
+
+        if isinstance(ary, Number):
+            return abs(ary)
+
+        if ord is None and isinstance(ary, cla.Array):
+            if ary.ndim == 1:
+                ord = 2
+            else:
+                # mimics numpy's norm computation
+                return self.norm(_flatten_array(ary), ord=2)
+
         try:
             from meshmode.dof_array import DOFArray
         except ImportError:
diff --git a/test/test_arraycontext.py b/test/test_arraycontext.py
index 76a169d760d0ac2395605b1e560a053909174b33..b632e208d0af7edc79baccda5cdaf87a2354f94b 100644
--- a/test/test_arraycontext.py
+++ b/test/test_arraycontext.py
@@ -734,6 +734,23 @@ def test_norm_complex(actx_factory, norm_ord):
     assert abs(norm_a_ref - norm_a)/norm_a < 1e-13
 
 
+@pytest.mark.parametrize("ndim", [1, 2, 3, 4, 5])
+def test_norm_ord_none(actx_factory, ndim):
+    from numpy.random import default_rng
+
+    actx = actx_factory()
+
+    rng = default_rng()
+    shape = tuple(rng.integers(2, 7, ndim))
+
+    a = rng.random(shape)
+
+    norm_a_ref = np.linalg.norm(a, ord=None)
+    norm_a = actx.np.linalg.norm(actx.from_numpy(a), ord=None)
+
+    np.testing.assert_allclose(norm_a, norm_a_ref)
+
+
 if __name__ == "__main__":
     import sys
     if len(sys.argv) > 1: