[PATCH] D59676: Make Parallel.h build with libc++ on Windows.

Alexandre Ganea via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri May 10 09:29:41 PDT 2019


aganea added a comment.

In addition to the `std::mutex` issue @BillyONeal mentions, it seems there's a fair amount of "friction"/spinning in concrt.
As a good example, while using WIP patch D55585 <https://reviews.llvm.org/D55585>, about ~15% of time is spent in concrt yielding the CPU on a 6-core PC. And the more cores you have, the worse it gets, up to ~33% of time yielding the CPU on a 36-cores PC (see below).

@BillyONeal do you think your new parallel algorithm(s) will give a better throughput?

---

//The tests below are from a LLD compiled with Clang 8.0 /MT /INCREMENTAL:NO to ensure no thunking, using concrt/ppl includes from MSVC 19.16.27030.1 x64//
//The dataset exercised by the parallel loop below is 8.8 GB, out of memory-mapped OBJs files. Both machines below have 128 GB and a dual NVMe SSD RAID0 drive, so I/O is not an issue (I've checked in WPA)//
//The vector being iterated has ~4700 elements (pointers), see https://reviews.llvm.org/D55585#change-l7lid0abOGLS PDB.cpp, L1660//

//First test, running on a 6-core Intel Xeon W-2135:// F8861211: lld-link_6core_meow.png <https://reviews.llvm.org/F8861211>

// View on a debug build in VS:// F8860945: lld-concrt-spin.png <https://reviews.llvm.org/F8860945>

//Second test, running on a 36-core Dual Intel Xeon Gold 6140 - interestingly, the CPU graph at the top shows that it was never able to fully use all cores// F8861213: lld-link_36core_meow.png <https://reviews.llvm.org/F8861213>


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D59676/new/

https://reviews.llvm.org/D59676





More information about the llvm-commits mailing list