<p dir="auto">I noticed that doing the following<br>
<code class="notranslate">mul!(C, A, view(B,:,j)) # where A is a SparseMatrixCSC and B is transpose(any matrix)</code>,<br>
falls back to the generic matvecmul.</p>
<p dir="auto">The thing that breaks it, is the transpose. Without that it works as expected.<br>
Of course, if I know that B is a transpose of some matrix, the code would just access the row j of that matrix instead.</p>
<p dir="auto">BTW: I'm trying to avoid unnecessary copies of the B[:,j] vectors.</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="julia&gt; using Requests

julia&gt; help(get)
INFO: Loading help data...
Base.get(collection, key, default)

   Return the value stored for the given key, or the given default
   value if no mapping for the key is present.

Base.get(f::Function, collection, key)

   Return the value stored for the given key, or if no mapping for the
   key is present, return &quot;f()&quot;.  Use &quot;get!&quot; to also store the
   default value in the dictionary.

   This is intended to be called using &quot;do&quot; block syntax:

      get(dict, key) do
          # default value calculated here
          time()
      end"><pre class="notranslate"><code class="notranslate">julia&gt; using Requests

julia&gt; help(get)
INFO: Loading help data...
Base.get(collection, key, default)

   Return the value stored for the given key, or the given default
   value if no mapping for the key is present.

Base.get(f::Function, collection, key)

   Return the value stored for the given key, or if no mapping for the
   key is present, return "f()".  Use "get!" to also store the
   default value in the dictionary.

   This is intended to be called using "do" block syntax:

      get(dict, key) do
          # default value calculated here
          time()
      end
</code></pre></div>
<p dir="auto">Oh, okay.  Let's disambiguate then:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="julia&gt; help(Requests.get)
Base.get(collection, key, default)

   Return the value stored for the given key, or the given default
   value if no mapping for the key is present.

Base.get(f::Function, collection, key)

   Return the value stored for the given key, or if no mapping for the
   key is present, return &quot;f()&quot;.  Use &quot;get!&quot; to also store the
   default value in the dictionary.

   This is intended to be called using &quot;do&quot; block syntax:

      get(dict, key) do
          # default value calculated here
          time()
      end"><pre class="notranslate"><code class="notranslate">julia&gt; help(Requests.get)
Base.get(collection, key, default)

   Return the value stored for the given key, or the given default
   value if no mapping for the key is present.

Base.get(f::Function, collection, key)

   Return the value stored for the given key, or if no mapping for the
   key is present, return "f()".  Use "get!" to also store the
   default value in the dictionary.

   This is intended to be called using "do" block syntax:

      get(dict, key) do
          # default value calculated here
          time()
      end
</code></pre></div>
<p dir="auto">Hrmmm.......</p>