I suppose a diagonal matrix is the worst-case for compressed storage.

Convert to coordinate format, insert the diagonal elements, and then 
convert back to CSC?

On Thursday, April 2, 2015 at 3:55:38 PM UTC-5, Seth wrote:
>
> The creation of the new sparse matrix (via spdiagm) doubles the amount of 
> memory, unfortunately. I had to kill it past 26 GB.
>
>
> On Thursday, April 2, 2015 at 1:36:48 PM UTC-7, Patrick O'Leary wrote:
>>
>> Perhaps try:
>>
>> z = e + spdiagm(fill(Inf, 50000), 0, 50000, 50000)
>>
>> I can't try a matrix that large, I don't have the memory on this 
>> system--I tested with 5000, though, and it is massively faster.
>>
>> On Thursday, April 2, 2015 at 3:21:37 PM UTC-5, Seth wrote:
>>>
>>>
>>>
>>> Consider the following:
>>>
>>> julia> @time e = sprandn(50000,50000,0.3);
>>> elapsed time: 95.837541848 seconds (17178 MB allocated, 0.08% gc time in 
>>> 4 pauses with 1 full sweep)
>>>
>>> then:
>>>
>>> julia> function doinf!(e::SparseMatrixCSC)
>>>            for i = 1:size(e)[1]
>>>                e[i,i] = Inf
>>>            end
>>>        end
>>> doinf! (generic function with 1 method)
>>>
>>> julia> @time z = doinf!(e);
>>>
>>>
>>> ...still going after about 20 minutes. I know sparse matrix insertion is 
>>> expensive, but is there a better way of doing this? (I don't have the 
>>> storage to make this a dense matrix.) I'm thinking it might be faster to 
>>> write my own function to assign random number or Inf within two loops, but 
>>> I'm surprised that the doinf! is taking so long.
>>>
>>

Reply via email to