<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'><div dir='ltr'>
Thanks a lot for the quick answer.<br><br>Accordingly, I have just changed the code into below one, however<br>sparks are still being pruned.<br><br>Do you have any other ideas?<br><br>Bests,<br>Burak.<br><br>------<br><br>split4ToEnc :: RSAPublicKey -&gt; [Integer] -&gt; [Integer]<br>split4ToEnc (PUB n e) []&nbsp;&nbsp;&nbsp;&nbsp; = []<br>split4ToEnc (PUB n e) (x:xs) = <br>&nbsp;((ersa (PUB n e) secondPart2) ++ (ersa (PUB n e) secondPart1) ++ (ersa (PUB n e) firstPart2) ++ (ersa (PUB n e) firstPart1)) `using` strategy<br>&nbsp;where <br>&nbsp; firstPart1&nbsp; = fst (Main.splitAt((length (x:xs)) `div` 4) (fst(Main.splitAt ((length (x:xs)) `div` 2) (x:xs))))<br>&nbsp; firstPart2&nbsp; = snd (Main.splitAt((length (x:xs)) `div` 4) (fst(Main.splitAt ((length (x:xs)) `div` 2) (x:xs))))<br>&nbsp; secondPart1&nbsp; = fst (Main.splitAt((length (x:xs)) `div` 4) (snd(Main.splitAt ((length (x:xs)) `div` 2) (x:xs))))<br>&nbsp; secondPart2&nbsp; = snd (Main.splitAt((length (x:xs)) `div` 4) (snd(Main.splitAt ((length (x:xs)) `div` 2) (x:xs))))<br>&nbsp; strategy res = do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (rpar `dot` rdeepseq) (ersa (PUB n e) firstPart1) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (rpar `dot` rdeepseq) (ersa (PUB n e) firstPart2) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (rpar `dot` rdeepseq) (ersa (PUB n e) secondPart1) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (rpar `dot` rdeepseq) (ersa (PUB n e) secondPart2)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rdeepseq res<br><br>-----<br><br><br><div>&gt; From: aslatter@gmail.com<br>&gt; Date: Sat, 24 Sep 2011 11:19:49 -0500<br>&gt; Subject: Re: [Haskell-cafe] A Missing Issue on Second Generation Strategies<br>&gt; To: ekcburak@hotmail.com<br>&gt; CC: haskell-cafe@haskell.org<br>&gt; <br>&gt; On Sat, Sep 24, 2011 at 11:14 AM, Antoine Latter &lt;aslatter@gmail.com&gt; wrote:<br>&gt; &gt; 2011/9/24 Burak Ekici &lt;ekcburak@hotmail.com&gt;:<br>&gt; &gt;&gt; Dear List,<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; I am trying to parallelize RSA encryption and decryption by using below<br>&gt; &gt;&gt; manner,<br>&gt; &gt;&gt; but when I run executable output file with "+RTS -s -N2" command on Windows<br>&gt; &gt;&gt; 7,<br>&gt; &gt;&gt; output stats say 4 sparks are being created however none of them converted<br>&gt; &gt;&gt; into<br>&gt; &gt;&gt; real OS threads.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; -- SPARKS :4 (0 converted, 4 pruned) --<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; I was thinking that the problem could occur due to lack of forcing<br>&gt; &gt;&gt; parallelization but,<br>&gt; &gt;&gt; as far as I know 'rdeepseq' works for that aim.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; Briefly, I could not solve the issue why parallelization was not being<br>&gt; &gt;&gt; implemented.<br>&gt; &gt;&gt; I would be appreciated if any of you shed a light on the issue that I<br>&gt; &gt;&gt; missed.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; Here is the mentioned part of code:<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; split4ToEnc :: RSAPublicKey -&gt; [Integer] -&gt; [Integer]<br>&gt; &gt;&gt; split4ToEnc (PUB n e) []&nbsp;&nbsp;&nbsp;&nbsp; = []<br>&gt; &gt;&gt; split4ToEnc (PUB n e) (x:xs) =<br>&gt; &gt;&gt; &nbsp;((ersa (PUB n e) secondPart2) ++ (ersa (PUB n e) secondPart1) ++ (ersa (PUB<br>&gt; &gt;&gt; n e) firstPart2) ++ (ersa (PUB n e) firstPart1)) `using` strategy<br>&gt; &gt;&gt; &nbsp;where<br>&gt; &gt;&gt; &nbsp; firstPart1&nbsp; = fst (Main.splitAt((length (x:xs)) `div` 4) (fst(Main.splitAt<br>&gt; &gt;&gt; ((length (x:xs)) `div` 2) (x:xs))))<br>&gt; &gt;&gt; &nbsp; firstPart2&nbsp; = snd (Main.splitAt((length (x:xs)) `div` 4) (fst(Main.splitAt<br>&gt; &gt;&gt; ((length (x:xs)) `div` 2) (x:xs))))<br>&gt; &gt;&gt; &nbsp; secondPart1&nbsp; = fst (Main.splitAt((length (x:xs)) `div` 4)<br>&gt; &gt;&gt; (snd(Main.splitAt ((length (x:xs)) `div` 2) (x:xs))))<br>&gt; &gt;&gt; &nbsp; secondPart2&nbsp; = snd (Main.splitAt((length (x:xs)) `div` 4)<br>&gt; &gt;&gt; (snd(Main.splitAt ((length (x:xs)) `div` 2) (x:xs))))<br>&gt; &gt;&gt; &nbsp; strategy res = do<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a &lt;- rpar (ersa (PUB n e) (firstPart1) `using` rdeepseq)<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b &lt;- rpar (ersa (PUB n e) (firstPart2) `using` rdeepseq)<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c &lt;- rpar (ersa (PUB n e) (secondPart1) `using` rdeepseq)<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d &lt;- rpar (ersa (PUB n e) (secondPart2) `using` rdeepseq)<br>&gt; &gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rdeepseq res<br>&gt; &gt;&gt;<br>&gt; &gt;<br>&gt; &gt; This isn't an area I'm expert in, but your strategy looks off to me -<br>&gt; &gt; since you're not using 'a', 'b', 'c' and 'd' anywhere, it would make<br>&gt; &gt; sense that you're not seeing much speedup. Also, the strategy doesn't<br>&gt; &gt; seem to be doing anything with it's input, which looks different from<br>&gt; &gt; most of the examples I've seen.<br>&gt; &gt;<br>&gt; &gt; In summary, your strategy doesn't appear to have anything relating it<br>&gt; &gt; to the computation you're doing with the `using`, if that makes any<br>&gt; &gt; sense.<br>&gt; &gt;<br>&gt; <br>&gt; May a better way to phrase things is that your strategy never does<br>&gt; anything to its input (like force any parts of it to evaluate), it<br>&gt; merely sparks of computations that no one ever looks at. Which is why<br>&gt; they get pruned.<br>&gt; <br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; Thanks a lot,<br>&gt; &gt;&gt; Burak.<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;&gt; _______________________________________________<br>&gt; &gt;&gt; Haskell-Cafe mailing list<br>&gt; &gt;&gt; Haskell-Cafe@haskell.org<br>&gt; &gt;&gt; http://www.haskell.org/mailman/listinfo/haskell-cafe<br>&gt; &gt;&gt;<br>&gt; &gt;&gt;<br>&gt; &gt;<br></div>                                               </div></body>
</html>