Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

How to abort or stop this (accidently large defined) SparseArray production?

s = N[SparseArray[Table[{2^i, 4} -> i, {i, 30}]]]  

Alt+. or Alt+, seem to give up. Even your Windows task manager is struggling.

share|improve this question
9  
Evaluation->Quit Kernel -> Local often succeeds where Abort Evaluation fails for me. –  image_doctor Jan 13 '13 at 16:42
1  
1  
Concerning the Task Manager statement: Although the TM struggles, and can take a minute or two to respond, I find that patience pays off: navigate to the [Processes] tab, right-click on the instance of Mathkernel.exe that is hogging all the RAM, and choose "end process." Each step can require a painfully long wait, but in the end it does work. –  whuber Jan 13 '13 at 19:12
1  
Another related question: mathematica.stackexchange.com/q/2789/5 –  rm -rf Jan 13 '13 at 20:58
add comment

1 Answer 1

Could use $Pre to wrap things in MemoryConstrained. I'll illustrate with an unusually tight constraint.

SetAttributes[memcon, HoldAll]
memcon[new_] := MemoryConstrained[new, 10^4]
$Pre = memcon;

Examples:

ByteCount[Range[10^6]]

(* Out[4]= $Aborted *)

s = N[SparseArray[Table[{2^i, 4} -> i, {i, 20}]]]

(* Out[5]= $Aborted *)
share|improve this answer
2  
If you don't preclude the use of $Pre as I did in my earlier question this is an excellent method. I recommend it to anyone using version 7 or earlier. Belisarius gives a nice method for v8+ in the linked thread that does not tie up $Pre. –  Mr.Wizard Jan 14 '13 at 1:14
    
Another question would be: why does this fill up the memory at all? The array is very sparse with only a few elements. Is there a limit on the size of SparseArrays that's exceeded here? –  Szabolcs Jan 29 '13 at 22:25
    
@Szabolcs InputForm[SparseArray[Table[{2^i, 4} -> i, {i, 5}]]] seems to show a dense 1-d listwith the jth element indicating how many nontrivial elements have been seen prior to row j. That at least is my guess. –  Daniel Lichtblau Jan 29 '13 at 22:42
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.