• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

SYBEX Practice Tests chapter 6 q 69, number of parallel streams

 
Ranch Hand
Posts: 55
1
  • Number of slices to send:
    Optional 'thank-you' note:
Hello,
This is question #69 from chapter 6 of the SYBEX Practice Tests book for exam 1Z0-829.

Chapter 6, question 69 wrote:Which statements about the following code are correct?
...
C. It consistently prints another value.
D. It does not consistently print the same value on every execution.
...


I picked D, but the correct answer is C.

My question is: Since the printed number depends on how the stream was split, is it even possible to tell how many streams the source will be split into and if the number of streams will be consistent?
There is only one choice for an answer, even if the question says "which statements".
 
Marshal
Posts: 79393
377
  • Number of slices to send:
    Optional 'thank-you' note:

Ira Go wrote:. . . . . .

Note they have intentionally written the wrong value for identity. The identity for addition is 0.

. . . There is only one choice for an answer, even if the question says "which statements".

That is confusing, yes.
 
Master Rancher
Posts: 4905
74
  • Number of slices to send:
    Optional 'thank-you' note:
Ira, I think you are right that the output will depend on the number of threads used in the parallel split.  At least, theoretically.  In practice, such a small stream will almost certainly never have any work for a second thread, regardless of the fact that it's parallel.  Even for a much larger stream, I have a hard time finding an example that actually shows inconsistent values.  But here's one to look at:

This still gives the same result, -2014259968, each time I run it.  But if I comment out the call to parallel(), I get -2014260031.  This confirms that the result is affected by whether it's parallel or not.  Each time a new accumulator is created for a new split of the work, the incorrect identity value of 1 creates an additional error in the calculation.  In practice this is still pretty deterministic on a given JVM on a given machine... but it's at least theoretically possible that the result could be different, depending on what else the processor is busy with.  I think it's a bad question, because although the result is probably consistent, it's not guaranteed to be consistent.

The simplest fix, actually, would be to use the correct identity of 0 instead of 1.  Then the results are guaranteed to be consistent, even with parallel streams.  If they want to use an incorrect identity like 1, the correct answer should expose that fact, not hide it.
 
Ira Go
Ranch Hand
Posts: 55
1
  • Number of slices to send:
    Optional 'thank-you' note:

Campbell Ritchie wrote:Note they have intentionally written the wrong value for identity. The identity for addition is 0.



Campbell, thank you for your reply. But that was not my question.
 
Ira Go
Ranch Hand
Posts: 55
1
  • Number of slices to send:
    Optional 'thank-you' note:
Thank you, Mike.
Sure, it is a very small stream and it might be split consistently. But still, in general, there are no guarantees that streams will be split consistently, quite the opposite.
I run this on my system, and it gave me different results on a stream of 1000 numbers.

Running it a few times gave me the following


number of parallel streams: 14
number of parallel streams: 9
number of parallel streams: 8


I hope there are not questions like this on the real exam.
Edit: pasted the wrong code.
 
Author
Posts: 297
12
  • Number of slices to send:
    Optional 'thank-you' note:
I have two observations, first, assuming you copied, and I read, that question correctly, then the given answer is wrong, and you were right to pick option D. Even if this prints a consistent value on a single JVM on a single machine, it will very possibly print different values on different JVMs, and on different hardware. Even though there's a tiny amount of data in this stream, there's nothing that the compiler or runtime can do to determine that the amount of work on each element of that stream is tiny. If it takes 30 cpu minutes to perform some complex calculation on each item, then a sequential stream would take 90 minutes to complete, where a truly parallel one might only take 30.

My second observation is that you almost certainly *will* find a question like this on the exam (though I expect the expected answer will be correct!) precisely because this kind of error is fundamental, and requires that the programmer be fully aware (as you seem to be) of the constraints that apply to code intended to run in a parallel stream. But, since you were right in your initial assessment I don't expect you'll have any difficulty with such a question.

Good luck,
Simon


 
Ira Go
Ranch Hand
Posts: 55
1
  • Number of slices to send:
    Optional 'thank-you' note:
Thank you Simon. That settles it. I do think it is a good question, but the answer given in the book threw me off.

Here is the full list of choices for this question:

Chapter 6. question 69 wrote:A. It consistently prints 6.
B. It consistently prints 7.
C. It consistently prints another value.
D. It does not consistently print the same value on every execution.
E. It compiles but throws an exception at runtime.
F. None of the above



Thank you everybody.
 
Consider Paul's rocket mass heater.
reply
    Bookmark Topic Watch Topic
  • New Topic
vceplus-200-125    | boson-200-125    | training-cissp    | actualtests-cissp    | techexams-cissp    | gratisexams-300-075    | pearsonitcertification-210-260    | examsboost-210-260    | examsforall-210-260    | dumps4free-210-260    | reddit-210-260    | cisexams-352-001    | itexamfox-352-001    | passguaranteed-352-001    | passeasily-352-001    | freeccnastudyguide-200-120    | gocertify-200-120    | passcerty-200-120    | certifyguide-70-980    | dumpscollection-70-980    | examcollection-70-534    | cbtnuggets-210-065    | examfiles-400-051    | passitdump-400-051    | pearsonitcertification-70-462    | anderseide-70-347    | thomas-70-533    | research-1V0-605    | topix-102-400    | certdepot-EX200    | pearsonit-640-916    | itproguru-70-533    | reddit-100-105    | channel9-70-346    | anderseide-70-346    | theiia-IIA-CIA-PART3    | certificationHP-hp0-s41    | pearsonitcertification-640-916    | anderMicrosoft-70-534    | cathMicrosoft-70-462    | examcollection-cca-500    | techexams-gcih    | mslearn-70-346    | measureup-70-486    | pass4sure-hp0-s41    | iiba-640-916    | itsecurity-sscp    | cbtnuggets-300-320    | blogged-70-486    | pass4sure-IIA-CIA-PART1    | cbtnuggets-100-101    | developerhandbook-70-486    | lpicisco-101    | mylearn-1V0-605    | tomsitpro-cism    | gnosis-101    | channel9Mic-70-534    | ipass-IIA-CIA-PART1    | forcerts-70-417    | tests-sy0-401    | ipasstheciaexam-IIA-CIA-PART3    | mostcisco-300-135    | buildazure-70-533    | cloudera-cca-500    | pdf4cert-2v0-621    | f5cisco-101    | gocertify-1z0-062    | quora-640-916    | micrcosoft-70-480    | brain2pass-70-417    | examcompass-sy0-401    | global-EX200    | iassc-ICGB    | vceplus-300-115    | quizlet-810-403    | cbtnuggets-70-697    | educationOracle-1Z0-434    | channel9-70-534    | officialcerts-400-051    | examsboost-IIA-CIA-PART1    | networktut-300-135    | teststarter-300-206    | pluralsight-70-486    | coding-70-486    | freeccna-100-101    | digitaltut-300-101    | iiba-CBAP    | virtuallymikebrown-640-916    | isaca-cism    | whizlabs-pmp    | techexams-70-980    | ciscopress-300-115    | techtarget-cism    | pearsonitcertification-300-070    | testking-2v0-621    | isacaNew-cism    | simplilearn-pmi-rmp    | simplilearn-pmp    | educationOracle-1z0-809    | education-1z0-809    | teachertube-1Z0-434    | villanovau-CBAP    | quora-300-206    | certifyguide-300-208    | cbtnuggets-100-105    | flydumps-70-417    | gratisexams-1V0-605    | ituonline-1z0-062    | techexams-cas-002    | simplilearn-70-534    | pluralsight-70-697    | theiia-IIA-CIA-PART1    | itexamtips-400-051    | pearsonitcertification-EX200    | pluralsight-70-480    | learn-hp0-s42    | giac-gpen    | mindhub-102-400    | coursesmsu-CBAP    | examsforall-2v0-621    | developerhandbook-70-487    | root-EX200    | coderanch-1z0-809    | getfreedumps-1z0-062    | comptia-cas-002    | quora-1z0-809    | boson-300-135    | killtest-2v0-621    | learncia-IIA-CIA-PART3    | computer-gcih    | universitycloudera-cca-500    | itexamrun-70-410    | certificationHPv2-hp0-s41    | certskills-100-105    | skipitnow-70-417    | gocertify-sy0-401    | prep4sure-70-417    | simplilearn-cisa    |
http://www.pmsas.pr.gov.br/wp-content/    | http://www.pmsas.pr.gov.br/wp-content/    |