Multithreaded I/O in the DMD compiler (DDJ article by Walter)

Robert Fraser fraserofthenight at gmail.com
Sun Apr 5 22:58:33 PDT 2009


Brad Roberts wrote:
> BCS wrote:
>> Hello Daniel,
>>
>>> http://dobbscodetalk.com/index.php?option=com_myblog&show=Multithreade
>>> d-I-O.html&Itemid=29
>>>
>>> -- Daniel
>>>
>>> P.S.  "It really seems barbaric in our digital age that we all have
>>> motors and levers and gears and spinning things in our boxes."  Those
>>> damned spinning things!
>>>
>> Some sort of fixed size thread pool might work better than
>> thread-per-file after the files are loaded as the overhead of threads
>> isn't going to do you any good if you have many more threads than you
>> have cores
>>
> 
> Careful.. that rule of thumb applies to compute bound use of threads.
> 
> In this example, it's parallelization to achieve file io activity
> overlapping with compute activity.  If we were talking about physical
> disks, I'd say that one thread dedicated to "while(filetoread)
> open/read/close" would be sufficient.  Two would just add competing
> seeks.  But the picture likely changes once the files are in page cache.
> And SSD's are closer to memory than spindles, so it's unclear what the
> 'right' threading model there is too.  Regardless, with the model of
> most compilers today, as long as the data is ready by the time the main
> thread is ready for it, it's good enough.
> 
> It's fun to envision a really seriously multi-threaded compiler, but,
> like for any app, it requires a lot more care.. and dmd would need some
> cleanup to not use global state, but not a whole lot from the quick
> glances I've made at the source.  The devil, as always, is in the
> details.  There's enough to do and enough bugs to fix already that I
> can't see it as worth the investment right now, though.
> 
> Later,
> Brad

Compilers seem like they'd be easier to parallelize than other 
applications... but I think the last version of DSSS launches as many 
DMD processes as there are cores anyway.



More information about the Digitalmars-d mailing list