From a8693504c9417a3f59c7a2172563adfe131672a4 Mon Sep 17 00:00:00 2001 From: k3yavi Date: Wed, 18 Jul 2018 13:03:20 -0400 Subject: [PATCH 01/37] removing hard coded values in dumping --- src/WhiteList.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/WhiteList.cpp b/src/WhiteList.cpp index ab43faf02..3aae62160 100644 --- a/src/WhiteList.cpp +++ b/src/WhiteList.cpp @@ -332,7 +332,6 @@ namespace alevin { DoubleMatrixT featureCountsMatrix( numCells, DoubleVectorT (numFeatures, 0.0)); // loop over each barcode - // TODO:: This can be parallelized tbb::task_scheduler_init tbbScheduler(aopt.numThreads); tbb::parallel_for( BlockedIndexRange(size_t(0), size_t(trueBarcodes.size())), @@ -447,15 +446,11 @@ namespace alevin { whitelistStream1 << "\n"; }*/ for(size_t i=0; i Date: Wed, 18 Jul 2018 22:38:24 -0400 Subject: [PATCH 02/37] back on develop --- CMakeLists.txt | 4 ++-- scripts/fetchRapMap.sh | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 69b5a7a0b..c409a51a4 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -339,7 +339,7 @@ if (BOOST_RECONFIGURE) set(CMAKE_PREFIX_PATH ${CMAKE_CURRENT_SOURCE_DIR}/external/install) set(Boost_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/external/install/include) set(Boost_LIBRARY_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/external/install/lib) - find_package(Boost 1.59.0 COMPONENTS iostreams filesystem system timer chrono program_options REQUIRED) + find_package(Boost 1.59.0 COMPONENTS iostreams filesystem system timer chrono program_options locale REQUIRED) set(FETCH_BOOST FALSE) endif() @@ -360,7 +360,7 @@ elseif(FETCH_BOOST) ## Let the rest of the build process know we're going to be fetching boost set (BOOST_LIB_SUBSET --with-iostreams --with-atomic --with-chrono --with-container --with-date_time --with-exception --with-filesystem --with-graph --with-graph_parallel --with-math - --with-program_options --with-system + --with-program_options --with-system --with-locale --with-timer) set (BOOST_WILL_RECONFIGURE TRUE) set (FETCH_BOOST FALSE) diff --git a/scripts/fetchRapMap.sh b/scripts/fetchRapMap.sh index 08981acbf..57dd9c476 100755 --- a/scripts/fetchRapMap.sh +++ b/scripts/fetchRapMap.sh @@ -22,8 +22,8 @@ if [ -d ${INSTALL_DIR}/src/rapmap ] ; then rm -fr ${INSTALL_DIR}/src/rapmap fi -SVER=salmon-v0.11.0 -#SVER=develop-salmon +#SVER=salmon-v0.11.0 +SVER=develop-salmon #SVER=pe-chaining EXPECTED_SHA256=152c7c5a6c091c47d971a6d6cf1051757f6d3f966a3ad99e8bed84e81be56f09 From 4ea064bfa1b76caa045b7068560b04122c503b66 Mon Sep 17 00:00:00 2001 From: k3yavi Date: Thu, 19 Jul 2018 10:40:19 -0400 Subject: [PATCH 03/37] hunch for error on Toms envt --- src/WhiteList.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/WhiteList.cpp b/src/WhiteList.cpp index 3aae62160..9bc1c8c41 100644 --- a/src/WhiteList.cpp +++ b/src/WhiteList.cpp @@ -134,8 +134,8 @@ namespace alevin { classCount, classPrior, numClasses, numTrueCells, numAmbiguousCells, numFalseCells); - trueProb.resize(numAmbiguousCells, 0.0); - falseProb.resize(numAmbiguousCells, 0.0); + //trueProb.resize(numAmbiguousCells, 0.0); + //falseProb.resize(numAmbiguousCells, 0.0); for (auto vec: sigma){ for (auto cell : vec){ @@ -147,16 +147,17 @@ namespace alevin { for (i=0; i Date: Mon, 23 Jul 2018 00:23:27 -0400 Subject: [PATCH 04/37] huge reduction of redundancy in processReadLibrary --- CMakeLists.txt | 22 - include/ProgramOptionsGenerator.hpp | 6 - include/ReadExperiment.hpp | 120 +- include/SalmonIndex.hpp | 150 +-- src/Alevin.cpp | 5 +- src/BuildSalmonIndex.cpp | 21 +- src/CMakeLists.txt | 17 +- src/ProgramOptionsGenerator.cpp | 44 - src/QSufSort.c | 402 ------- src/SalmonAlevin.cpp | 37 +- src/SalmonQuantify.cpp | 632 +++-------- src/bwt_gen.c | 1632 --------------------------- src/bwtindex.c | 295 ----- src/is.c | 223 ---- 14 files changed, 190 insertions(+), 3416 deletions(-) delete mode 100644 src/QSufSort.c delete mode 100644 src/bwt_gen.c delete mode 100644 src/bwtindex.c delete mode 100644 src/is.c diff --git a/CMakeLists.txt b/CMakeLists.txt index c409a51a4..435f908ee 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -462,28 +462,6 @@ ExternalProject_Add_Step(libcereal makedir DEPENDEES download DEPENDERS configure) -message("Build system will fetch and build BWA (for Salmon)") -message("==================================================================") -## -# This mode will likely go away soon, but until then, consider bundling directly with Salmon -## -include(ExternalProject) -ExternalProject_Add(libbwa - DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external - #URL https://github.com/COMBINE-lab/bwa/archive/0.7.12.3.tar.gz - #DOWNLOAD_NAME bwa-master.tar.gz - DOWNLOAD_COMMAND curl -k -L https://github.com/COMBINE-lab/bwa/archive/v0.7.12.5.tar.gz -o bwa-master.tar.gz && - ${SHASUM} 1ac5661d9e12e9017a47f0264201a75d9128f28dbd9a26952925f7745ddf6036 bwa-master.tar.gz && - mkdir -p bwa-master && - tar -xzvf bwa-master.tar.gz --strip-components=1 -C bwa-master - SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/bwa-master - INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/install - CONFIGURE_COMMAND "" - BUILD_COMMAND sh -c "make ${QUIET_MAKE} CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER}" - INSTALL_COMMAND sh -c "mkdir -p /lib && mkdir -p /include/bwa && cp libbwa.a /lib && cp *.h /include/bwa && cp is.c bwtindex.c bwt_gen.c QSufSort.c ${CMAKE_CURRENT_SOURCE_DIR}/src/" - BUILD_IN_SOURCE TRUE -) - ## Try and find TBB first find_package(TBB 2018.0 COMPONENTS tbb tbbmalloc tbbmalloc_proxy ) diff --git a/include/ProgramOptionsGenerator.hpp b/include/ProgramOptionsGenerator.hpp index 143751134..1cc888362 100644 --- a/include/ProgramOptionsGenerator.hpp +++ b/include/ProgramOptionsGenerator.hpp @@ -4,10 +4,6 @@ #include #include "SalmonOpts.hpp" -extern "C" { -#include "bwamem.h" -} - namespace salmon { namespace po = boost::program_options; class ProgramOptionsGenerator{ @@ -18,11 +14,9 @@ class ProgramOptionsGenerator{ po::options_description getBasicOptions(SalmonOpts& sopt); po::options_description getMappingSpecificOptions(SalmonOpts& sopt); - po::options_description getFMDOptions(mem_opt_t* memOpt, SalmonOpts& sopt); po::options_description getAlignmentSpecificOptions(SalmonOpts& sopt); po::options_description getAlevinBasicOptions(); po::options_description getAlevinDevsOptions(); - po::options_description getAdvancedOptions(int32_t& numBiasSamples, SalmonOpts& sopt); po::options_description getHiddenOptions(SalmonOpts& sopt); po::options_description getTestingOptions(SalmonOpts& sopt); diff --git a/include/ReadExperiment.hpp b/include/ReadExperiment.hpp index e91c34690..b56af0b56 100644 --- a/include/ReadExperiment.hpp +++ b/include/ReadExperiment.hpp @@ -1,13 +1,6 @@ #ifndef EXPERIMENT_HPP #define EXPERIMENT_HPP -extern "C" { -#include "bwa.h" -#include "bwamem.h" -#include "kvec.h" -#include "utils.h" -} - // Our includes #include "ClusterForest.hpp" #include "DistributionUtils.hpp" @@ -142,6 +135,7 @@ class ReadExperiment { // Now we'll have either an FMD-based index or a QUASI index // dispatch on the correct type. + fmt::MemoryWriter infostr; switch (salmonIndex_->indexType()) { case SalmonIndexType::QUASI: @@ -162,7 +156,9 @@ class ReadExperiment { } break; case SalmonIndexType::FMD: - loadTranscriptsFromFMD(); + infostr << "Error: This version of salmon " << versionPath.string() + << " does not support the FMD index mode."; + throw std::invalid_argument(infostr.str()); break; } @@ -325,112 +321,6 @@ class ReadExperiment { setTranscriptLengthClasses_(lengths, posBiasFW_.size()); } - void loadTranscriptsFromFMD() { - bwaidx_t* idx_ = salmonIndex_->bwaIndex(); - size_t numRecords = idx_->bns->n_seqs; - std::vector transcripts_tmp; - auto log = spdlog::get("jointLog"); - // transcripts_tmp.reserve(numRecords); - // transcripts_.reserve(numRecords); - - log->info("Index contained {} targets", numRecords); - // transcripts_.resize(numRecords); - for (auto i : boost::irange(size_t(0), numRecords)) { - uint32_t id = i; - char* name = idx_->bns->anns[i].name; - uint32_t len = idx_->bns->anns[i].len; - // copy over the length, then we're done. - transcripts_tmp.emplace_back(id, name, len); - } - - std::sort(transcripts_tmp.begin(), transcripts_tmp.end(), - [](const Transcript& t1, const Transcript& t2) -> bool { - return t1.id < t2.id; - }); - - double alpha = 0.005; - char nucTab[256]; - nucTab[0] = 'A'; - nucTab[1] = 'C'; - nucTab[2] = 'G'; - nucTab[3] = 'T'; - for (size_t i = 4; i < 256; ++i) { - nucTab[i] = 'N'; - } - - std::vector lengths; - lengths.reserve(transcripts_tmp.size()); - size_t tnum = 0; - // Load the transcript sequence from file - for (auto& t : transcripts_tmp) { - transcripts_.emplace_back(t.id, t.RefName.c_str(), t.RefLength, alpha); - /* from BWA */ - uint8_t* rseq = nullptr; - int64_t tstart, tend, compLen, l_pac = idx_->bns->l_pac; - tstart = idx_->bns->anns[t.id].offset; - tend = tstart + t.RefLength; - rseq = bns_get_seq(l_pac, idx_->pac, tstart, tend, &compLen); - if (compLen != t.RefLength) { - fmt::print(stderr, - "For transcript {}, stored length ({}) != computed length " - "({}) --- index may be corrupt. exiting\n", - t.RefName, compLen, t.RefLength); - std::exit(1); - } - std::string seq(t.RefLength, ' '); - if (rseq != 0) { - for (int64_t i = 0; i < compLen; ++i) { - seq[i] = nucTab[rseq[i]]; - } - } - - auto& txp = transcripts_.back(); - - // allocate space for the new copy - char* seqCopy = new char[seq.length() + 1]; - std::strcpy(seqCopy, seq.c_str()); - txp.setSequenceOwned(seqCopy); - txp.setSAMSequenceOwned( - salmon::stringtools::encodeSequenceInSAM(seq.c_str(), t.RefLength)); - lengths.push_back(t.RefLength); - /* - // Length classes taken from - // - https://github.com/cole-trapnell-lab/cufflinks/blob/master/src/biascorrection.cpp - // ====== - // Roberts, Adam, et al. - // "Improving RNA-Seq expression estimates by correcting for fragment - bias." - // Genome Biol 12.3 (2011): R22. - // ====== - // perhaps, define these in a more data-driven way - if (txp.RefLength <= 791) { - txp.lengthClassIndex(0); - } else if (txp.RefLength <= 1265) { - txp.lengthClassIndex(1); - } else if (txp.RefLength <= 1707) { - txp.lengthClassIndex(2); - } else if (txp.RefLength <= 2433) { - txp.lengthClassIndex(3); - } else { - txp.lengthClassIndex(4); - } - */ - free(rseq); - /* end BWA code */ - ++tnum; - } - - // Since we have the de-coded reference sequences, we no longer need - // the encoded sequences, so free them. - /** TEST OPT **/ - // free(idx_->pac); idx_->pac = nullptr; - /** END TEST OPT **/ - transcripts_tmp.clear(); - // ====== Done loading the transcripts from file - setTranscriptLengthClasses_(lengths, posBiasFW_.size()); - } - template bool processReads(const uint32_t& numThreads, const SalmonOpts& sopt, CallbackT& processReadLibrary) { @@ -446,7 +336,6 @@ class ReadExperiment { ~ReadExperiment() { // ---- Get rid of things we no longer need -------- - // bwa_idx_destroy(idx_); } ClusterForest& clusterForest() { return *clusters_.get(); } @@ -810,7 +699,6 @@ class ReadExperiment { * The index we've built on the set of transcripts. */ std::unique_ptr salmonIndex_{nullptr}; - // bwaidx_t *idx_{nullptr}; /** * The cluster forest maintains the dynamic relationship * defined by transcripts and reads --- if two transcripts diff --git a/include/SalmonIndex.hpp b/include/SalmonIndex.hpp index 3dd900ab8..c64bad7e0 100644 --- a/include/SalmonIndex.hpp +++ b/include/SalmonIndex.hpp @@ -1,13 +1,6 @@ #ifndef __SALMON_INDEX_HPP__ #define __SALMON_INDEX_HPP__ -extern "C" { -#include "bwa.h" -#include "bwamem.h" -#include "kvec.h" -#include "utils.h" -} - #include #include @@ -17,18 +10,13 @@ extern "C" { #include "cereal/types/vector.hpp" #include "spdlog/spdlog.h" -#include "BWAUtils.hpp" #include "BooMap.hpp" #include "FrugalBooMap.hpp" #include "IndexHeader.hpp" -#include "KmerIntervalMap.hpp" #include "RapMapSAIndex.hpp" #include "SalmonConfig.hpp" #include "SalmonIndexVersionInfo.hpp" -extern "C" { -int bwa_index(int argc, char* argv[]); -} // declaration of quasi index function int rapMapSAIndex(int argc, char* argv[]); @@ -46,12 +34,6 @@ class SalmonIndex { : loaded_(false), versionInfo_(0, false, 0, indexType), logger_(logger), seqHash256_(""), nameHash256_(""), seqHash512_(""), nameHash512_("") {} - ~SalmonIndex() { - if (idx_) { - bwa_idx_destroy(idx_); - } - } - void load(const boost::filesystem::path& indexDir) { namespace bfs = boost::filesystem; @@ -70,7 +52,9 @@ class SalmonIndex { auto indexType = versionInfo_.indexType(); // Load the appropriate index type if (indexType == SalmonIndexType::FMD) { - loadFMDIndex_(indexDir); + fmt::MemoryWriter infostr; + infostr << "Error: This version of salmon does not support FMD indexing"; + throw std::invalid_argument(infostr.str()); } else { loadQuasiIndex_(indexDir); } @@ -78,71 +62,6 @@ class SalmonIndex { loaded_ = true; } - bool buildAux_(boost::filesystem::path indexDir, uint32_t k) { - namespace bfs = boost::filesystem; - - bfs::path indexPath = indexDir / "bwaidx"; - // Load the bwa index - { - logger_->info("Reading BWT index from file"); - if ((idx_ = bwa_idx_load(indexPath.string().c_str(), - BWA_IDX_BWT | BWA_IDX_BNS | BWA_IDX_PAC)) == 0) { - logger_->error("Couldn't open index [{}] --- ", indexPath); - logger_->error( - "Please make sure that 'salmon index' has been run successfully"); - std::exit(1); - } - } - - auxIdx_.setK(k); - size_t numRecords = idx_->bns->n_seqs; - { // Load transcripts from file - logger_->info("Index contained {} targets; streaming through them", - numRecords); - for (auto i : boost::irange(size_t(0), numRecords)) { - char* name = idx_->bns->anns[i].name; - uint32_t len = idx_->bns->anns[i].len; - uint8_t* rseq = nullptr; - int64_t tstart, tend, compLen, l_pac = idx_->bns->l_pac; - tstart = idx_->bns->anns[i].offset; - tend = tstart + len; - rseq = bns_get_seq(l_pac, idx_->pac, tstart, tend, &compLen); - if (compLen != len) { - logger_->error("For transcript {}, stored length ({}) != computed " - "length ({}) --- index may be corrupt. exiting\n", - name, compLen, len); - std::exit(1); - } - if (len < k) { - continue; - } - for (uint32_t s = 0; s < len - k + 1; ++s) { - bwtintv_t resInterval; - KmerKey key(&(rseq[s]), k); - if (!auxIdx_.hasKmer(key)) { - bool foundInterval = bwautils::getIntervalForKmer( - idx_->bwt, k, &(rseq[s]), resInterval); - // If we found the interval for this k-mer - if (foundInterval) { - // If the interval for this k-mer isn't already in the hash - // then put it in the hash - auxIdx_[key] = resInterval; - } - } - } - } - // Since we have the de-coded reference sequences, we no longer need - // the encoded sequences, so free them. - free(idx_->pac); - idx_->pac = nullptr; - // ====== Done streaming through transcripts - } - - bfs::path auxIndexFile = indexDir / "aux.idx"; - auxIdx_.save(auxIndexFile); - return true; - } - bool build(boost::filesystem::path indexDir, std::vector& argVec, uint32_t k) { namespace bfs = boost::filesystem; @@ -150,7 +69,8 @@ class SalmonIndex { case SalmonIndexType::QUASI: return buildQuasiIndex_(indexDir, argVec, k); case SalmonIndexType::FMD: - return buildFMDIndex_(indexDir, argVec, k); + logger_->error("This version of salmon does not support FMD indexing"); + return false; default: logger_->warn("Unexpected index type; cannot build"); return false; @@ -158,7 +78,6 @@ class SalmonIndex { } bool loaded() { return loaded_; } - bwaidx_t* bwaIndex() { return idx_; } bool is64BitQuasi() { return largeQuasi_; } bool isPerfectHashQuasi() { return perfectHashQuasi_; } @@ -177,9 +96,6 @@ class SalmonIndex { return quasiIndexPerfectHash64_.get(); } - bool hasAuxKmerIndex() { return versionInfo_.hasAuxKmerIndex(); } - KmerIntervalMap& auxIndex() { return auxIdx_; } - SalmonIndexType indexType() { return versionInfo_.indexType(); } const char* transcriptomeSeq() { @@ -212,31 +128,6 @@ class SalmonIndex { std::string nameHash512() const { return nameHash512_; } private: - bool buildFMDIndex_(boost::filesystem::path indexDir, - std::vector& bwaArgVec, uint32_t k) { - namespace bfs = boost::filesystem; - char* bwaArgv[] = {const_cast(bwaArgVec[0].c_str()), - const_cast(bwaArgVec[1].c_str()), - const_cast(bwaArgVec[2].c_str()), - const_cast(bwaArgVec[3].c_str()), - const_cast(bwaArgVec[4].c_str()), - const_cast(bwaArgVec[5].c_str())}; - int bwaArgc = 6; - int ret = bwa_index(bwaArgc, bwaArgv); - - bool buildAux = (k > 0); - if (buildAux) { - buildAux_(indexDir, k); - } - - bfs::path versionFile = indexDir / "versionInfo.json"; - versionInfo_.indexVersion(salmon::indexVersion); - versionInfo_.hasAuxKmerIndex(buildAux); - versionInfo_.auxKmerLength(k); - versionInfo_.save(versionFile); - return (ret == 0); - } - bool buildQuasiIndex_(boost::filesystem::path indexDir, std::vector& quasiArgVec, uint32_t k) { namespace bfs = boost::filesystem; @@ -266,35 +157,6 @@ class SalmonIndex { return (ret == 0); } - bool loadFMDIndex_(const boost::filesystem::path& indexDir) { - namespace bfs = boost::filesystem; - if (versionInfo_.hasAuxKmerIndex()) { - // Read the aux index - logger_->info("Loading auxiliary index"); - bfs::path auxIdxFile = indexDir / "aux.idx"; - auxIdx_.setK(versionInfo_.auxKmerLength()); - auxIdx_.load(auxIdxFile); - logger_->info("Auxiliary index contained {} k-mers", auxIdx_.size()); - logger_->info("done"); - } - - logger_->info("Loading BWA index"); - // Read the actual BWA index - { // mem-based - boost::filesystem::path indexPath = indexDir / "bwaidx"; - // if ((idx_ = bwa_idx_load(indexPath.string().c_str(), - // BWA_IDX_BWT|BWA_IDX_BNS|BWA_IDX_PAC)) == 0) { - if ((idx_ = bwa_idx_load(indexPath.string().c_str(), BWA_IDX_ALL)) == 0) { - logger_->error("Couldn't open index [{}] --- ", indexPath); - logger_->error( - "Please make sure that 'salmon index' has been run successfully"); - std::exit(1); - } - } - logger_->info("done"); - return true; - } - bool loadQuasiIndex_(const boost::filesystem::path& indexDir) { namespace bfs = boost::filesystem; logger_->info("Loading Quasi index"); @@ -401,8 +263,6 @@ class SalmonIndex { std::unique_ptr>> quasiIndexPerfectHash64_{nullptr}; - bwaidx_t* idx_{nullptr}; - KmerIntervalMap auxIdx_; std::shared_ptr logger_; std::string seqHash256_; std::string nameHash256_; diff --git a/src/Alevin.cpp b/src/Alevin.cpp index 05d305765..73cf5ca48 100644 --- a/src/Alevin.cpp +++ b/src/Alevin.cpp @@ -825,8 +825,6 @@ int salmonBarcoding(int argc, char* argv[]) { //vector mate2ReadFiles; SalmonOpts sopt; - mem_opt_t* memOptions = mem_opt_init(); - memOptions->split_factor = 1.5; auto tot_cores = std::thread::hardware_concurrency(); sopt.numThreads = std::max(1, static_cast(tot_cores/4.0)); @@ -836,7 +834,6 @@ int salmonBarcoding(int argc, char* argv[]) { auto basicOpt = pogen.getBasicOptions(sopt); auto mapSpecOpt = pogen.getMappingSpecificOptions(sopt); auto advancedOpt = pogen.getAdvancedOptions(numBiasSamples, sopt); - auto fmdOpt = pogen.getFMDOptions(memOptions, sopt); auto hiddenOpt = pogen.getHiddenOptions(sopt); auto testingOpt = pogen.getTestingOptions(sopt); auto deprecatedOpt = pogen.getDeprecatedOptions(sopt); @@ -844,7 +841,7 @@ int salmonBarcoding(int argc, char* argv[]) { auto alevinDevsOpt = pogen.getAlevinDevsOptions(); po::options_description all("alevin options"); - all.add(inputOpt).add(alevinBasicOpt).add(alevinDevsOpt).add(basicOpt).add(mapSpecOpt).add(advancedOpt).add(fmdOpt).add(testingOpt).add(hiddenOpt).add(deprecatedOpt); + all.add(inputOpt).add(alevinBasicOpt).add(alevinDevsOpt).add(basicOpt).add(mapSpecOpt).add(advancedOpt)/*.add(fmdOpt)*/.add(testingOpt).add(hiddenOpt).add(deprecatedOpt); po::options_description visible("alevin options"); visible.add(inputOpt).add(alevinBasicOpt).add(basicOpt); diff --git a/src/BuildSalmonIndex.cpp b/src/BuildSalmonIndex.cpp index 4b3e2c7de..597cb6bf9 100644 --- a/src/BuildSalmonIndex.cpp +++ b/src/BuildSalmonIndex.cpp @@ -39,12 +39,6 @@ #include "spdlog/fmt/ostr.h" #include "spdlog/spdlog.h" -using my_mer = jellyfish::mer_dna_ns::mer_base_static; - -extern "C" { -int bwa_index(int argc, char* argv[]); -} - // Cool way to do this from // http://stackoverflow.com/questions/108318/whats-the-simplest-way-to-test-whether-a-number-is-a-power-of-2-in-c bool isPowerOfTwo(uint32_t n) { return (n > 0 and (n & (n - 1)) == 0); } @@ -229,19 +223,8 @@ Creates a salmon index. sidx.reset(new SalmonIndex(jointLog, SalmonIndexType::QUASI)); } else { - // Build the FMD-based index - bfs::path outputPrefix = indexDirectory / "bwaidx"; - std::cerr << "outputPrefix = " << outputPrefix << "\n"; - argVec->push_back("index"); - argVec->push_back("-s"); - optWriter << vm["sasamp"].as(); - argVec->push_back(optWriter.str()); - argVec->push_back("-p"); - argVec->push_back(outputPrefix.string()); - argVec->push_back(transcriptFile); - sidx.reset(new SalmonIndex(jointLog, SalmonIndexType::FMD)); - // Disable the auxiliary k-mer index for now - auxKmerLen = 0; + jointLog->error("This version of salmon does not support FMD indexing."); + return 1; } jointLog->info("building index"); diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 30a3d4adc..9f6c3b3f3 100755 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -4,7 +4,7 @@ ${GAT_SOURCE_DIR}/include/eigen3 ${GAT_SOURCE_DIR}/external ${GAT_SOURCE_DIR}/external/cereal/include ${GAT_SOURCE_DIR}/external/install/include -${GAT_SOURCE_DIR}/external/install/include/bwa +#${GAT_SOURCE_DIR}/external/install/include/bwa ${ZLIB_INCLUDE_DIR} ${TBB_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} @@ -13,10 +13,6 @@ ${GAT_SOURCE_DIR}/external/install/include/rapmap/digestpp ) set ( SALMON_MAIN_SRCS -QSufSort.c -is.c -bwt_gen.c -bwtindex.c ${GAT_SOURCE_DIR}/external/install/src/rapmap/RapMapFileSystem.cpp ${GAT_SOURCE_DIR}/external/install/src/rapmap/RapMapSAIndexer.cpp ${GAT_SOURCE_DIR}/external/install/src/rapmap/RapMapSAIndex.cpp @@ -60,7 +56,6 @@ ${GAT_SOURCE_DIR}/src/jellyfish/mer_dna.cc xxhash.c TranscriptGroup.cpp EffectiveLengthStats.cpp -BWAUtils.cpp LibraryFormat.cpp GenomicFeature.cpp VersionChecker.cpp @@ -200,7 +195,7 @@ target_link_libraries(salmon ${ZLIB_LIBRARY} ${SUFFARRAY_LIB} ${SUFFARRAY64_LIB} - ${GAT_SOURCE_DIR}/external/install/lib/libbwa.a + #${GAT_SOURCE_DIR}/external/install/lib/libbwa.a m ${LIBLZMA_LIBRARIES} ${BZIP2_LIBRARIES} @@ -224,7 +219,7 @@ target_link_libraries(unitTests ${ZLIB_LIBRARY} ${SUFFARRAY_LIB} ${SUFFARRAY64_LIB} - ${GAT_SOURCE_DIR}/external/install/lib/libbwa.a + #${GAT_SOURCE_DIR}/external/install/lib/libbwa.a m ${LIBLZMA_LIBRARIES} ${BZIP2_LIBRARIES} @@ -265,8 +260,8 @@ add_dependencies(salmon_core libstadenio) add_dependencies(salmon libstadenio) add_dependencies(salmon_core libspdlog) add_dependencies(salmon libspdlog) -add_dependencies(salmon_core libbwa) -add_dependencies(salmon libbwa) +#add_dependencies(salmon_core libbwa) +#add_dependencies(salmon libbwa) add_dependencies(salmon_core libgff) add_dependencies(salmon libgff) add_dependencies(salmon_core libdivsufsort) @@ -353,5 +348,5 @@ install( include(InstallRequiredSystemLibraries) add_test( NAME unit_tests COMMAND ${CMAKE_COMMAND} -DTOPLEVEL_DIR=${CMAKE_INSTALL_PREFIX} -P ${GAT_SOURCE_DIR}/cmake/UnitTests.cmake ) -add_test( NAME salmon_read_test_fmd COMMAND ${CMAKE_COMMAND} -DTOPLEVEL_DIR=${GAT_SOURCE_DIR} -P ${GAT_SOURCE_DIR}/cmake/TestSalmonFMD.cmake ) +#add_test( NAME salmon_read_test_fmd COMMAND ${CMAKE_COMMAND} -DTOPLEVEL_DIR=${GAT_SOURCE_DIR} -P ${GAT_SOURCE_DIR}/cmake/TestSalmonFMD.cmake ) add_test( NAME salmon_read_test_quasi COMMAND ${CMAKE_COMMAND} -DTOPLEVEL_DIR=${GAT_SOURCE_DIR} -P ${GAT_SOURCE_DIR}/cmake/TestSalmonQuasi.cmake ) diff --git a/src/ProgramOptionsGenerator.cpp b/src/ProgramOptionsGenerator.cpp index 4013f6c24..91bd86e72 100644 --- a/src/ProgramOptionsGenerator.cpp +++ b/src/ProgramOptionsGenerator.cpp @@ -586,50 +586,6 @@ namespace salmon { return advanced; } - po::options_description ProgramOptionsGenerator::getFMDOptions(mem_opt_t* memOptions, SalmonOpts& sopt) { - using std::string; - using std::vector; - - po::options_description fmd("\noptions that apply to the old FMD index"); - fmd.add_options() - ("minLen,k", - po::value(&(memOptions->min_seed_len))->default_value(salmon::defaults::fmdMinSeedLength), - "(S)MEMs smaller than this size won't be considered.") - ("maxOcc,m", - po::value(&(memOptions->max_occ))->default_value(salmon::defaults::maxSMEMOccs), - "(S)MEMs occuring more than this many times won't be considered.") - ("sensitive", po::bool_switch(&(sopt.sensitive))->default_value(salmon::defaults::fmdSensitive), - "Setting this option enables the splitting of SMEMs that are larger " - "than 1.5 times the minimum seed length (minLen/k above). This may " - "reveal high scoring chains of MEMs " - "that are masked by long SMEMs. However, this option makes " - "lightweight-alignment a bit slower and is " - "usually not necessary if the reference is of reasonable quality.") - ("extraSensitive", - po::bool_switch(&(sopt.extraSeedPass))->default_value(salmon::defaults::fmdExtraSeedPass), - "Setting this option enables an extra pass of \"seed\" search. " - "Enabling this option may improve sensitivity (the number of reads " - "having sufficient coverage), but will " - "typically slow down quantification by ~40%. Consider enabling this " - "option if you find the mapping rate to " - "be significantly lower than expected.") - ("coverage,c", po::value(&(sopt.coverageThresh))->default_value(salmon::defaults::fmdCoverageThresh), - "required coverage of read by union of SMEMs to consider it a \"hit\".") - ("splitWidth,s", - po::value(&(memOptions->split_width))->default_value(salmon::defaults::fmdSplitWidth), - "If (S)MEM occurs fewer than this many times, search for smaller, " - "contained MEMs. " - "The default value will not split (S)MEMs, a higher value will " - "result in more MEMs being explore and, thus, will " - "result in increased running time.") - ("splitSpanningSeeds,b", - po::bool_switch(&(sopt.splitSpanningSeeds))->default_value(salmon::defaults::fmdSplitSpanningSeeds), - "Attempt to split seeds that happen to fall on the " - "boundary between two transcripts. This can improve the fragment " - "hit-rate, but is usually not necessary."); - return fmd; - } - po::options_description ProgramOptionsGenerator::getHiddenOptions(SalmonOpts& sopt) { using std::string; using std::vector; diff --git a/src/QSufSort.c b/src/QSufSort.c deleted file mode 100644 index 36c5a519a..000000000 --- a/src/QSufSort.c +++ /dev/null @@ -1,402 +0,0 @@ -/* QSufSort.c - - Original source from qsufsort.c - - Copyright 1999, N. Jesper Larsson, all rights reserved. - - This file contains an implementation of the algorithm presented in "Faster - Suffix Sorting" by N. Jesper Larsson (jesper@cs.lth.se) and Kunihiko - Sadakane (sada@is.s.u-tokyo.ac.jp). - - This software may be used freely for any purpose. However, when distributed, - the original source must be clearly stated, and, when the source code is - distributed, the copyright notice must be retained and any alterations in - the code must be clearly marked. No warranty is given regarding the quality - of this software. - - Modified by Wong Chi-Kwong, 2004 - - Changes summary: - Used long variable and function names - - Removed global variables - - Replace pointer references with array references - - Used insertion sort in place of selection sort and increased insertion sort threshold - - Reconstructing suffix array from inverse becomes an option - - Add handling where end-of-text symbol is not necessary < all characters - - Removed codes for supporting alphabet size > number of characters - - No warrenty is given regarding the quality of the modifications. - -*/ - - -#include -#include -#include -#include "QSufSort.h" - -#define min(value1, value2) ( ((value1) < (value2)) ? (value1) : (value2) ) -#define med3(a, b, c) ( ac ? b : a>c ? c : a)) -#define swap(a, b, t); t = a; a = b; b = t; - -// Static functions -static void QSufSortSortSplit(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t lowestPos, - const qsint_t highestPos, const qsint_t numSortedChar); -static qsint_t QSufSortChoosePivot(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t lowestPos, - const qsint_t highestPos, const qsint_t numSortedChar); -static void QSufSortInsertSortSplit(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t lowestPos, - const qsint_t highestPos, const qsint_t numSortedChar); -static void QSufSortBucketSort(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t numChar, const qsint_t alphabetSize); -static qsint_t QSufSortTransform(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t numChar, const qsint_t largestInputSymbol, - const qsint_t smallestInputSymbol, const qsint_t maxNewAlphabetSize, qsint_t *numSymbolAggregated); - -/* Makes suffix array p of x. x becomes inverse of p. p and x are both of size - n+1. Contents of x[0...n-1] are integers in the range l...k-1. Original - contents of x[n] is disregarded, the n-th symbol being regarded as - end-of-string smaller than all other symbols.*/ -void QSufSortSuffixSort(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t numChar, const qsint_t largestInputSymbol, - const qsint_t smallestInputSymbol, const int skipTransform) -{ - qsint_t i, j; - qsint_t s, negatedSortedGroupLength; - qsint_t numSymbolAggregated; - qsint_t numSortedPos = 1; - qsint_t newAlphabetSize; - - if (!skipTransform) { - /* bucketing possible*/ - newAlphabetSize = QSufSortTransform(V, I, numChar, largestInputSymbol, smallestInputSymbol, - numChar, &numSymbolAggregated); - QSufSortBucketSort(V, I, numChar, newAlphabetSize); - I[0] = -1; - V[numChar] = 0; - numSortedPos = numSymbolAggregated; - } - - while ((qsint_t)(I[0]) >= -(qsint_t)numChar) { - i = 0; - negatedSortedGroupLength = 0; - do { - s = I[i]; - if (s < 0) { - i -= s; /* skip over sorted group.*/ - negatedSortedGroupLength += s; - } else { - if (negatedSortedGroupLength) { - I[i+negatedSortedGroupLength] = negatedSortedGroupLength; /* combine preceding sorted groups */ - negatedSortedGroupLength = 0; - } - j = V[s] + 1; - QSufSortSortSplit(V, I, i, j - 1, numSortedPos); - i = j; - } - } while (i <= numChar); - if (negatedSortedGroupLength) { - /* array ends with a sorted group.*/ - I[i+negatedSortedGroupLength] = negatedSortedGroupLength; /* combine sorted groups at end of I.*/ - } - numSortedPos *= 2; /* double sorted-depth.*/ - } -} - -void QSufSortGenerateSaFromInverse(const qsint_t* V, qsint_t* __restrict I, const qsint_t numChar) -{ - qsint_t i; - for (i=0; i<=numChar; i++) - I[V[i]] = i + 1; -} - -/* Sorting routine called for each unsorted group. Sorts the array of integers - (suffix numbers) of length n starting at p. The algorithm is a ternary-split - quicksort taken from Bentley & McIlroy, "Engineering a Sort Function", - Software -- Practice and Experience 23(11), 1249-1265 (November 1993). This - function is based on Program 7.*/ -static void QSufSortSortSplit(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t lowestPos, - const qsint_t highestPos, const qsint_t numSortedChar) { - - qsint_t a, b, c, d; - qsint_t l, m; - qsint_t f, v, s, t; - qsint_t tmp; - qsint_t numItem; - - numItem = highestPos - lowestPos + 1; - - if (numItem <= INSERT_SORT_NUM_ITEM) { - QSufSortInsertSortSplit(V, I, lowestPos, highestPos, numSortedChar); - return; - } - - v = QSufSortChoosePivot(V, I, lowestPos, highestPos, numSortedChar); - - a = b = lowestPos; - c = d = highestPos; - - while (1) { - while (c >= b && (f = KEY(V, I, b, numSortedChar)) <= v) { - if (f == v) { - swap(I[a], I[b], tmp); - a++; - } - b++; - } - while (c >= b && (f = KEY(V, I, c, numSortedChar)) >= v) { - if (f == v) { - swap(I[c], I[d], tmp); - d--; - } - c--; - } - if (b > c) - break; - swap(I[b], I[c], tmp); - b++; - c--; - } - - s = a - lowestPos; - t = b - a; - s = min(s, t); - for (l = lowestPos, m = b - s; m < b; l++, m++) { - swap(I[l], I[m], tmp); - } - - s = d - c; - t = highestPos - d; - s = min(s, t); - for (l = b, m = highestPos - s + 1; m <= highestPos; l++, m++) { - swap(I[l], I[m], tmp); - } - - s = b - a; - t = d - c; - if (s > 0) - QSufSortSortSplit(V, I, lowestPos, lowestPos + s - 1, numSortedChar); - - // Update group number for equal portion - a = lowestPos + s; - b = highestPos - t; - if (a == b) { - // Sorted group - V[I[a]] = a; - I[a] = -1; - } else { - // Unsorted group - for (c=a; c<=b; c++) - V[I[c]] = b; - } - - if (t > 0) - QSufSortSortSplit(V, I, highestPos - t + 1, highestPos, numSortedChar); - -} - -/* Algorithm by Bentley & McIlroy.*/ -static qsint_t QSufSortChoosePivot(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t lowestPos, - const qsint_t highestPos, const qsint_t numSortedChar) { - - qsint_t m; - qsint_t keyl, keym, keyn; - qsint_t key1, key2, key3; - qsint_t s; - qsint_t numItem; - - numItem = highestPos - lowestPos + 1; - - m = lowestPos + numItem / 2; - - s = numItem / 8; - key1 = KEY(V, I, lowestPos, numSortedChar); - key2 = KEY(V, I, lowestPos+s, numSortedChar); - key3 = KEY(V, I, lowestPos+2*s, numSortedChar); - keyl = med3(key1, key2, key3); - key1 = KEY(V, I, m-s, numSortedChar); - key2 = KEY(V, I, m, numSortedChar); - key3 = KEY(V, I, m+s, numSortedChar); - keym = med3(key1, key2, key3); - key1 = KEY(V, I, highestPos-2*s, numSortedChar); - key2 = KEY(V, I, highestPos-s, numSortedChar); - key3 = KEY(V, I, highestPos, numSortedChar); - keyn = med3(key1, key2, key3); - - return med3(keyl, keym, keyn); - - -} - -/* Quadratic sorting method to use for small subarrays. */ -static void QSufSortInsertSortSplit(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t lowestPos, - const qsint_t highestPos, const qsint_t numSortedChar) -{ - qsint_t i, j; - qsint_t tmpKey, tmpPos; - qsint_t numItem; - qsint_t key[INSERT_SORT_NUM_ITEM], pos[INSERT_SORT_NUM_ITEM]; - qsint_t negativeSortedLength; - qsint_t groupNum; - - numItem = highestPos - lowestPos + 1; - - for (i=0; i0 && key[j-1] > tmpKey; j--) { - key[j] = key[j-1]; - pos[j] = pos[j-1]; - } - key[j] = tmpKey; - pos[j] = tmpPos; - } - - negativeSortedLength = -1; - - i = numItem - 1; - groupNum = highestPos; - while (i > 0) { - I[i+lowestPos] = pos[i]; - V[I[i+lowestPos]] = groupNum; - if (key[i-1] == key[i]) { - negativeSortedLength = 0; - } else { - if (negativeSortedLength < 0) - I[i+lowestPos] = negativeSortedLength; - groupNum = i + lowestPos - 1; - negativeSortedLength--; - } - i--; - } - - I[lowestPos] = pos[0]; - V[I[lowestPos]] = groupNum; - if (negativeSortedLength < 0) - I[lowestPos] = negativeSortedLength; -} - -/* Bucketsort for first iteration. - - Input: x[0...n-1] holds integers in the range 1...k-1, all of which appear - at least once. x[n] is 0. (This is the corresponding output of transform.) k - must be at most n+1. p is array of size n+1 whose contents are disregarded. - - Output: x is V and p is I after the initial sorting stage of the refined - suffix sorting algorithm.*/ - -static void QSufSortBucketSort(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t numChar, const qsint_t alphabetSize) -{ - qsint_t i, c; - qsint_t d; - qsint_t groupNum; - qsint_t currentIndex; - - // mark linked list empty - for (i=0; i0; i--) { - c = I[i-1]; - d = (qsint_t)(V[c]); - groupNum = currentIndex; - V[c] = groupNum; - if (d >= 0) { - I[currentIndex] = c; - while (d >= 0) { - c = d; - d = V[c]; - V[c] = groupNum; - currentIndex--; - I[currentIndex] = c; - } - } else { - // sorted group - I[currentIndex] = -1; - } - currentIndex--; - } -} - -/* Transforms the alphabet of x by attempting to aggregate several symbols into - one, while preserving the suffix order of x. The alphabet may also be - compacted, so that x on output comprises all integers of the new alphabet - with no skipped numbers. - - Input: x is an array of size n+1 whose first n elements are positive - integers in the range l...k-1. p is array of size n+1, used for temporary - storage. q controls aggregation and compaction by defining the maximum intue - for any symbol during transformation: q must be at least k-l; if q<=n, - compaction is guaranteed; if k-l>n, compaction is never done; if q is - INT_MAX, the maximum number of symbols are aggregated into one. - - Output: Returns an integer j in the range 1...q representing the size of the - new alphabet. If j<=n+1, the alphabet is compacted. The global variable r is - set to the number of old symbols grouped into one. Only x[n] is 0.*/ -static qsint_t QSufSortTransform(qsint_t* __restrict V, qsint_t* __restrict I, const qsint_t numChar, const qsint_t largestInputSymbol, - const qsint_t smallestInputSymbol, const qsint_t maxNewAlphabetSize, qsint_t *numSymbolAggregated) -{ - qsint_t c, i, j; - qsint_t a; // numSymbolAggregated - qsint_t mask; - qsint_t minSymbolInChunk = 0, maxSymbolInChunk = 0; - qsint_t newAlphabetSize; - qsint_t maxNumInputSymbol, maxNumBit, maxSymbol; - - maxNumInputSymbol = largestInputSymbol - smallestInputSymbol + 1; - - for (maxNumBit = 0, i = maxNumInputSymbol; i; i >>= 1) ++maxNumBit; - maxSymbol = QSINT_MAX >> maxNumBit; - - c = maxNumInputSymbol; - for (a = 0; a < numChar && maxSymbolInChunk <= maxSymbol && c <= maxNewAlphabetSize; a++) { - minSymbolInChunk = (minSymbolInChunk << maxNumBit) | (V[a] - smallestInputSymbol + 1); - maxSymbolInChunk = c; - c = (maxSymbolInChunk << maxNumBit) | maxNumInputSymbol; - } - - mask = (1 << (a-1) * maxNumBit) - 1; /* mask masks off top old symbol from chunk.*/ - V[numChar] = smallestInputSymbol - 1; /* emulate zero terminator.*/ - - /* bucketing possible, compact alphabet.*/ - for (i=0; i<=maxSymbolInChunk; i++) - I[i] = 0; /* zero transformation table.*/ - c = minSymbolInChunk; - for (i=a; i<=numChar; i++) { - I[c] = 1; /* mark used chunk symbol.*/ - c = ((c & mask) << maxNumBit) | (V[i] - smallestInputSymbol + 1); /* shift in next old symbol in chunk.*/ - } - for (i=1; i*>; #endif -#include "LightweightAlignmentDefs.hpp" + //#include "LightweightAlignmentDefs.hpp" } //have to create new namespace because of multiple definition @@ -618,32 +609,6 @@ void processMiniBatch(ReadExperimentT& readExp, ForgettingMassCalculator& fmCalc /// START QUASI -// To use the parser in the following, we get "jobs" until none is -// available. A job behaves like a pointer to the type -// jellyfish::sequence_list (see whole_sequence_parser.hpp). -template -void processReadsQuasi( - paired_parser* parser, ReadExperimentT& readExp, ReadLibrary& rl, - AlnGroupVec& structureVec, - std::atomic& numObservedFragments, - std::atomic& numAssignedFragments, - std::atomic& validHits, std::atomic& upperBoundHits, - std::atomic& smallSeqs, - RapMapIndexT* idx, std::vector& transcripts, - ForgettingMassCalculator& fmCalc, ClusterForest& clusterForest, - FragmentLengthDistribution& fragLengthDist, BiasParams& observedBiasParams, - SalmonOpts& salmonOpts, - std::mutex& iomutex, bool initialRound, std::atomic& burnedIn, - volatile bool& writeToCache, AlevinOpts& alevinOpts, - SoftMapT& barcodeMap, spp::sparse_hash_map& trBcs, - std::vector& uniqueFLD) { - - // ERROR - salmonOpts.jointLog->error("MEM-mapping cannot be used with the Quasi index " - "--- please report this bug on GitHub"); - std::exit(1); -} - template void processReadsQuasi( paired_parser* parser, ReadExperimentT& readExp, ReadLibrary& rl, diff --git a/src/SalmonQuantify.cpp b/src/SalmonQuantify.cpp index 76b60f841..fca236c61 100644 --- a/src/SalmonQuantify.cpp +++ b/src/SalmonQuantify.cpp @@ -47,14 +47,6 @@ #include #include -extern "C" { -#include "bwa.h" -#include "bwamem.h" -#include "ksort.h" -#include "kvec.h" -#include "utils.h" -} - // Jellyfish 2 include #include "jellyfish/mer_dna.hpp" @@ -107,7 +99,6 @@ extern "C" { #include "Transcript.hpp" #include "AlignmentGroup.hpp" -#include "BWAUtils.hpp" #include "BiasParams.hpp" #include "CollapsedEMOptimizer.hpp" #include "CollapsedGibbsSampler.hpp" @@ -116,7 +107,6 @@ extern "C" { #include "FragmentLengthDistribution.hpp" #include "GZipWriter.hpp" #include "HitManager.hpp" -#include "KmerIntervalMap.hpp" #include "EffectiveLengthStats.hpp" #include "PairAlignmentFormatter.hpp" @@ -161,7 +151,7 @@ template using AlnGroupQueue = tbb::concurrent_queue*>; #endif -#include "LightweightAlignmentDefs.hpp" +//#include "LightweightAlignmentDefs.hpp" using ReadExperimentT = ReadExperiment>; @@ -849,57 +839,6 @@ inline int32_t getAlnScore( } /// START QUASI - -// To use the parser in the following, we get "jobs" until none is -// available. A job behaves like a pointer to the type -// jellyfish::sequence_list (see whole_sequence_parser.hpp). -template -void processReadsQuasi( - paired_parser* parser, ReadExperimentT& readExp, ReadLibrary& rl, - AlnGroupVec& structureVec, - std::atomic& numObservedFragments, - std::atomic& numAssignedFragments, - std::atomic& validHits, std::atomic& upperBoundHits, - RapMapIndexT* idx, std::vector& transcripts, - ForgettingMassCalculator& fmCalc, ClusterForest& clusterForest, - FragmentLengthDistribution& fragLengthDist, BiasParams& observedBiasParams, - /** - * NOTE : test new el model in future - * EffectiveLengthStats& obsEffLengths, - */ - mem_opt_t* memOptions, SalmonOpts& salmonOpts, double coverageThresh, - std::mutex& iomutex, bool initialRound, std::atomic& burnedIn, - volatile bool& writeToCache) { - - // ERROR - salmonOpts.jointLog->error("MEM-mapping cannot be used with the Quasi index " - "--- please report this bug on GitHub"); - std::exit(1); -} - -template -void processReadsQuasi( - single_parser* parser, ReadExperimentT& readExp, ReadLibrary& rl, - AlnGroupVec& structureVec, - std::atomic& numObservedFragments, - std::atomic& numAssignedFragments, - std::atomic& validHits, std::atomic& upperBoundHits, - RapMapIndexT* sidx, std::vector& transcripts, - ForgettingMassCalculator& fmCalc, ClusterForest& clusterForest, - FragmentLengthDistribution& fragLengthDist, BiasParams& observedBiasParams, - /** - * NOTE : test new el model in future - * EffectiveLengthStats& obsEffLengths, - */ - mem_opt_t* memOptions, SalmonOpts& salmonOpts, double coverageThresh, - std::mutex& iomutex, bool initialRound, std::atomic& burnedIn, - volatile bool& writeToCache) { - // ERROR - salmonOpts.jointLog->error("MEM-mapping cannot be used with the Quasi index " - "--- please report this bug on GitHub"); - std::exit(1); -} - template void processReadsQuasi( paired_parser* parser, ReadExperimentT& readExp, ReadLibrary& rl, @@ -914,7 +853,7 @@ void processReadsQuasi( * NOTE : test new el model in future * EffectiveLengthStats& obsEffLengths, **/ - mem_opt_t* memOptions, SalmonOpts& salmonOpts, double coverageThresh, + SalmonOpts& salmonOpts, double coverageThresh, std::mutex& iomutex, bool initialRound, std::atomic& burnedIn, volatile bool& writeToCache) { uint64_t count_fwd = 0, count_bwd = 0; @@ -1507,7 +1446,7 @@ void processReadsQuasi( * NOTE : test new el model in future * EffectiveLengthStats& obsEffLengths, **/ - mem_opt_t* memOptions, SalmonOpts& salmonOpts, double coverageThresh, + SalmonOpts& salmonOpts, double coverageThresh, std::mutex& iomutex, bool initialRound, std::atomic& burnedIn, volatile bool& writeToCache) { uint64_t count_fwd = 0, count_bwd = 0; @@ -1854,6 +1793,89 @@ void processReadsQuasi( /// DONE QUASI + +class ProcessFunctor { + private: + ReadExperimentT& readExp_; + ReadLibrary& rl_; + std::vector>& structureVec_; + std::atomic& numObservedFragments_; + std::atomic& numAssignedFragments_; + std::atomic& validHits_; + std::atomic& upperBoundHits_; + std::vector& transcripts_; + ForgettingMassCalculator& fmCalc_; + ClusterForest& clusterForest_; + FragmentLengthDistribution& fragLengthDist_; + std::vector& observedBiasParams_; + SalmonOpts& salmonOpts_; + double coverageThresh_; + std::mutex& iomutex_; + bool initialRound_; + std::atomic& burnedIn_; + volatile bool& writeToCache_; + std::vector& threads_; + public: + ProcessFunctor( + ReadExperimentT& readExp, + ReadLibrary& rl, + std::vector>& structureVec, + std::atomic& numObservedFragments, + std::atomic& numAssignedFragments, + std::atomic& validHits, + std::atomic& upperBoundHits, + std::vector& transcripts, + ForgettingMassCalculator& fmCalc, + ClusterForest& clusterForest, + FragmentLengthDistribution& fragLengthDist, + std::vector& observedBiasParams, + SalmonOpts& salmonOpts, + double coverageThresh, + std::mutex& iomutex, + bool initialRound, + std::atomic& burnedIn, + volatile bool& writeToCache, + std::vector& threads + ) : + readExp_(readExp), rl_(rl), structureVec_(structureVec), + numObservedFragments_(numObservedFragments), + numAssignedFragments_(numAssignedFragments), + validHits_(validHits), + upperBoundHits_(upperBoundHits), + transcripts_(transcripts), + fmCalc_(fmCalc), + clusterForest_(clusterForest), + fragLengthDist_(fragLengthDist), + observedBiasParams_(observedBiasParams), + salmonOpts_(salmonOpts), + coverageThresh_(coverageThresh), + iomutex_(iomutex), + initialRound_(initialRound), + burnedIn_(burnedIn), + writeToCache_(writeToCache), + threads_(threads) {} + + template + void operator()(size_t i, ParserT& parserPtr, IndexT* index) { + if (salmonOpts_.qmFileName != "" and i == 0) { + rapmap::utils::writeSAMHeader(*index, + salmonOpts_.qmLog); + } + auto threadFun = [&, i]() -> void { + processReadsQuasi( + parserPtr.get(), readExp_, rl_, structureVec_[i], + numObservedFragments_, numAssignedFragments_, validHits_, + upperBoundHits_, index, transcripts_, + fmCalc_, clusterForest_, fragLengthDist_, observedBiasParams_[i], + salmonOpts_, coverageThresh_, iomutex_, initialRound_, + burnedIn_, writeToCache_); + }; + threads_.emplace_back(threadFun); + } + + }; + + template void processReadLibrary( ReadExperimentT& readExp, ReadLibrary& rl, SalmonIndex* sidx, @@ -1865,7 +1887,7 @@ void processReadLibrary( std::atomic& upperBoundHits, // upper bound on # of mapped frags bool initialRound, std::atomic& burnedIn, ForgettingMassCalculator& fmCalc, - FragmentLengthDistribution& fragLengthDist, mem_opt_t* memOptions, + FragmentLengthDistribution& fragLengthDist, SalmonOpts& salmonOpts, double coverageThresh, bool greedyChain, std::mutex& iomutex, size_t numThreads, std::vector>& structureVec, volatile bool& writeToCache) { @@ -1946,9 +1968,38 @@ void processReadLibrary( *EffectiveLengthStats(numTxp)); **/ + // NOTE : When we can support C++14, we can replace the entire ProcessFunctor class above with this + // generic lambda. + /* + auto processFunctor = [&](size_t i, auto& parserPtr, auto* index) { + if (salmonOpts.qmFileName != "" and i == 0) { + rapmap::utils::writeSAMHeader(*index, + salmonOpts.qmLog); + } + auto threadFun = [&, i]() -> void { + processReadsQuasi( + parserPtr.get(), readExp, rl, structureVec[i], + numObservedFragments, numAssignedFragments, numValidHits, + upperBoundHits, index, transcripts, + fmCalc, clusterForest, fragLengthDist, observedBiasParams[i], + salmonOpts, coverageThresh, iomutex, initialRound, + burnedIn, writeToCache); + }; + threads.emplace_back(threadFun); + }; + */ + + ProcessFunctor processFunctor(readExp, rl, structureVec, + numObservedFragments, numAssignedFragments, numValidHits, + upperBoundHits, transcripts, + fmCalc, clusterForest, fragLengthDist, observedBiasParams, + salmonOpts, coverageThresh, iomutex, initialRound, + burnedIn, writeToCache, threads); // If the read library is paired-end // ------ Paired-end -------- - if (rl.format().type == ReadType::PAIRED_END) { + bool isPairedEnd = rl.format().type == ReadType::PAIRED_END; + bool isSingleEnd = rl.format().type == ReadType::SINGLE_END; + if (isPairedEnd) { if (rl.mates1().size() != rl.mates2().size()) { salmonOpts.jointLog->error("The number of provided files for " @@ -1966,122 +2017,53 @@ void processReadLibrary( numThreads, numParsingThreads, miniBatchSize)); pairedParserPtr->start(); + } else if (isSingleEnd) { + uint32_t numParsingThreads{1}; + // HACK! + if (rl.unmated().size() > 1 and numThreads > 8) { + numParsingThreads = 2; + } + singleParserPtr.reset(new single_parser(rl.unmated(), numThreads, + numParsingThreads, miniBatchSize)); + singleParserPtr->start(); + } - switch (indexType) { - case SalmonIndexType::FMD: { - for (size_t i = 0; i < numThreads; ++i) { - // NOTE: we *must* capture i by value here, b/c it can (sometimes, does) - // change value before the lambda below is evaluated --- crazy! - auto threadFun = [&, i]() -> void { - processReadsMEM( - pairedParserPtr.get(), readExp, rl, structureVec[i], - numObservedFragments, numAssignedFragments, numValidHits, - upperBoundHits, sidx, transcripts, fmCalc, clusterForest, - fragLengthDist, observedBiasParams[i], - /** - * NOTE : test new el model in future - * observedEffectiveLengths[i], - */ - memOptions, salmonOpts, coverageThresh, iomutex, initialRound, - burnedIn, writeToCache); - }; - threads.emplace_back(threadFun); - } - } break; - case SalmonIndexType::QUASI: { - // True if we have a 64-bit SA index, false otherwise - bool largeIndex = sidx->is64BitQuasi(); - bool perfectHashIndex = sidx->isPerfectHashQuasi(); - for (size_t i = 0; i < numThreads; ++i) { - // NOTE: we *must* capture i by value here, b/c it can (sometimes, does) - // change value before the lambda below is evaluated --- crazy! - if (largeIndex) { - if (perfectHashIndex) { // Perfect Hash - if (salmonOpts.qmFileName != "" and i == 0) { - rapmap::utils::writeSAMHeader(*(sidx->quasiIndexPerfectHash64()), - salmonOpts.qmLog); - } - auto threadFun = [&, i]() -> void { - processReadsQuasi>>( - pairedParserPtr.get(), readExp, rl, structureVec[i], - numObservedFragments, numAssignedFragments, numValidHits, - upperBoundHits, sidx->quasiIndexPerfectHash64(), transcripts, - fmCalc, clusterForest, fragLengthDist, observedBiasParams[i], - /** - * NOTE : test new el model in future - * observedEffectiveLengths[i], - **/ - memOptions, salmonOpts, coverageThresh, iomutex, initialRound, - burnedIn, writeToCache); - }; - threads.emplace_back(threadFun); - } else { // Dense Hash - if (salmonOpts.qmFileName != "" and i == 0) { - rapmap::utils::writeSAMHeader(*(sidx->quasiIndex64()), - salmonOpts.qmLog); - } - auto threadFun = [&, i]() -> void { - processReadsQuasi>>( - pairedParserPtr.get(), readExp, rl, structureVec[i], - numObservedFragments, numAssignedFragments, numValidHits, - upperBoundHits, sidx->quasiIndex64(), transcripts, fmCalc, - clusterForest, fragLengthDist, observedBiasParams[i], - /** - * NOTE : test new el model in future - * observedEffectiveLengths[i], - **/ - memOptions, salmonOpts, coverageThresh, iomutex, initialRound, - burnedIn, writeToCache); - }; - threads.emplace_back(threadFun); - } - } else { - if (perfectHashIndex) { // Perfect Hash - if (salmonOpts.qmFileName != "" and i == 0) { - rapmap::utils::writeSAMHeader(*(sidx->quasiIndexPerfectHash32()), - salmonOpts.qmLog); - } - auto threadFun = [&, i]() -> void { - processReadsQuasi>>( - pairedParserPtr.get(), readExp, rl, structureVec[i], - numObservedFragments, numAssignedFragments, numValidHits, - upperBoundHits, sidx->quasiIndexPerfectHash32(), transcripts, - fmCalc, clusterForest, fragLengthDist, observedBiasParams[i], - /** - * NOTE : test new el model in future - * observedEffectiveLengths[i], - **/ - memOptions, salmonOpts, coverageThresh, iomutex, initialRound, - burnedIn, writeToCache); - }; - threads.emplace_back(threadFun); - } else { // Dense Hash - if (salmonOpts.qmFileName != "" and i == 0) { - rapmap::utils::writeSAMHeader(*(sidx->quasiIndex32()), - salmonOpts.qmLog); - } - auto threadFun = [&, i]() -> void { - processReadsQuasi>>( - pairedParserPtr.get(), readExp, rl, structureVec[i], - numObservedFragments, numAssignedFragments, numValidHits, - upperBoundHits, sidx->quasiIndex32(), transcripts, fmCalc, - clusterForest, fragLengthDist, observedBiasParams[i], - /** - * NOTE : test new el model in future - * observedEffectiveLengths[i], - **/ - memOptions, salmonOpts, coverageThresh, iomutex, initialRound, - burnedIn, writeToCache); - }; - threads.emplace_back(threadFun); + switch (indexType) { + case SalmonIndexType::FMD: { + fmt::MemoryWriter infostr; + infostr << "This version of salmon does not support FMD indexing."; + throw std::invalid_argument(infostr.str()); + } break; + case SalmonIndexType::QUASI: { + // True if we have a 64-bit SA index, false otherwise + bool largeIndex = sidx->is64BitQuasi(); + bool perfectHashIndex = sidx->isPerfectHashQuasi(); + for (size_t i = 0; i < numThreads; ++i) { + // NOTE: we *must* capture i by value here, b/c it can (sometimes, does) + // change value before the lambda below is evaluated --- crazy! + if (largeIndex) { + if (perfectHashIndex) { // Perfect Hash + if (isPairedEnd) {processFunctor(i, pairedParserPtr, sidx->quasiIndexPerfectHash64());} + else if (isSingleEnd) {processFunctor(i, singleParserPtr, sidx->quasiIndexPerfectHash64()); } + } else { // Dense Hash + if (isPairedEnd) {processFunctor(i, pairedParserPtr, sidx->quasiIndex64());} + else if (isSingleEnd) {processFunctor(i, singleParserPtr, sidx->quasiIndex64());} + } + } else { + if (perfectHashIndex) { // Perfect Hash + if (isPairedEnd) { processFunctor(i, pairedParserPtr, sidx->quasiIndexPerfectHash32()); } + else if (isSingleEnd) { processFunctor(i, singleParserPtr, sidx->quasiIndexPerfectHash32()); } + } else { // Dense Hash + if (isPairedEnd) { processFunctor(i, pairedParserPtr, sidx->quasiIndex32()); } + else if (isSingleEnd) { processFunctor(i, singleParserPtr, sidx->quasiIndex32()); } + } + } // End spawn current thread - } // End spawn current thread - - } // End spawn all threads - } // End Quasi index + } // End spawn all threads + } // End Quasi index break; - } // end switch + } // end switch for (auto& t : threads) { t.join(); @@ -2176,261 +2158,7 @@ void processReadLibrary( posBiasesRC[i].finalize(); } } - - /** END GC-fragment bias **/ - } // ------ Single-end -------- - else if (rl.format().type == ReadType::SINGLE_END) { - - uint32_t numParsingThreads{1}; - // HACK! - if (rl.unmated().size() > 1 and numThreads > 8) { - numParsingThreads = 2; - } - singleParserPtr.reset(new single_parser(rl.unmated(), numThreads, - numParsingThreads, miniBatchSize)); - singleParserPtr->start(); - switch (indexType) { - case SalmonIndexType::FMD: { - for (size_t i = 0; i < numThreads; ++i) { - // NOTE: we *must* capture i by value here, b/c it can (sometimes, does) - // change value before the lambda below is evaluated --- crazy! - auto threadFun = [&, i]() -> void { - processReadsMEM( - singleParserPtr.get(), readExp, rl, structureVec[i], - numObservedFragments, numAssignedFragments, numValidHits, - upperBoundHits, sidx, transcripts, fmCalc, clusterForest, - fragLengthDist, observedBiasParams[i], - /** - * NOTE : test new el model in future - * observedEffectiveLengths[i], - **/ - memOptions, salmonOpts, coverageThresh, iomutex, initialRound, - burnedIn, writeToCache); - }; - threads.emplace_back(threadFun); - } - } break; - - case SalmonIndexType::QUASI: { - // True if we have a 64-bit SA index, false otherwise - bool largeIndex = sidx->is64BitQuasi(); - bool perfectHashIndex = sidx->isPerfectHashQuasi(); - for (size_t i = 0; i < numThreads; ++i) { - - // NOTE: we *must* capture i by value here, b/c it can (sometimes, does) - // change value before the lambda below is evaluated --- crazy! - if (largeIndex) { - if (perfectHashIndex) { // Perfect Hash - if (salmonOpts.qmFileName != "" and i == 0) { - rapmap::utils::writeSAMHeader(*(sidx->quasiIndexPerfectHash64()), - salmonOpts.qmLog); - } - auto threadFun = [&, i]() -> void { - processReadsQuasi>>( - singleParserPtr.get(), readExp, rl, structureVec[i], - numObservedFragments, numAssignedFragments, numValidHits, - upperBoundHits, sidx->quasiIndexPerfectHash64(), transcripts, - fmCalc, clusterForest, fragLengthDist, observedBiasParams[i], - /** - * NOTE : test new el model in future - * observedEffectiveLengths[i], - **/ - memOptions, salmonOpts, coverageThresh, iomutex, initialRound, - burnedIn, writeToCache); - }; - threads.emplace_back(threadFun); - } else { // Dense Hash - if (salmonOpts.qmFileName != "" and i == 0) { - rapmap::utils::writeSAMHeader(*(sidx->quasiIndex64()), - salmonOpts.qmLog); - } - - auto threadFun = [&, i]() -> void { - processReadsQuasi>>( - singleParserPtr.get(), readExp, rl, structureVec[i], - numObservedFragments, numAssignedFragments, numValidHits, - upperBoundHits, sidx->quasiIndex64(), transcripts, fmCalc, - clusterForest, fragLengthDist, observedBiasParams[i], - /** - * NOTE : test new el model in future - * observedEffectiveLengths[i], - **/ - memOptions, salmonOpts, coverageThresh, iomutex, initialRound, - burnedIn, writeToCache); - }; - threads.emplace_back(threadFun); - } - } else { - if (perfectHashIndex) { // Perfect Hash - if (salmonOpts.qmFileName != "" and i == 0) { - rapmap::utils::writeSAMHeader(*(sidx->quasiIndexPerfectHash32()), - salmonOpts.qmLog); - } - - auto threadFun = [&, i]() -> void { - processReadsQuasi>>( - singleParserPtr.get(), readExp, rl, structureVec[i], - numObservedFragments, numAssignedFragments, numValidHits, - upperBoundHits, sidx->quasiIndexPerfectHash32(), transcripts, - fmCalc, clusterForest, fragLengthDist, observedBiasParams[i], - /** - * NOTE : test new el model in future - * observedEffectiveLengths[i], - **/ - memOptions, salmonOpts, coverageThresh, iomutex, initialRound, - burnedIn, writeToCache); - }; - threads.emplace_back(threadFun); - } else { // Dense Hash - if (salmonOpts.qmFileName != "" and i == 0) { - rapmap::utils::writeSAMHeader(*(sidx->quasiIndex32()), - salmonOpts.qmLog); - } - - auto threadFun = [&, i]() -> void { - processReadsQuasi>>( - singleParserPtr.get(), readExp, rl, structureVec[i], - numObservedFragments, numAssignedFragments, numValidHits, - upperBoundHits, sidx->quasiIndex32(), transcripts, fmCalc, - clusterForest, fragLengthDist, observedBiasParams[i], - /** - * NOTE : test new el model in future - * observedEffectiveLengths[i], - **/ - memOptions, salmonOpts, coverageThresh, iomutex, initialRound, - burnedIn, writeToCache); - }; - threads.emplace_back(threadFun); - } - - } // End spawn current thread - - } // End spawn all threads - } // End Quasi index - break; - } - for (auto& t : threads) { - t.join(); - } - - // If we don't have a sufficient number of assigned fragments, then - // complain here! - if (numAssignedFragments < salmonOpts.minRequiredFrags) { - readExp.setNumObservedFragments(numObservedFragments); - readExp.numAssignedFragmentsAtomic().store(numAssignedFragments); - double mappingRate = numAssignedFragments.load() / - static_cast(numObservedFragments.load()); - readExp.setEffectiveMappingRate(mappingRate); - throw InsufficientAssignedFragments(numAssignedFragments.load(), - salmonOpts.minRequiredFrags); - } - - /** This model doesn't really make sense for SE data - EffectiveLengthStats eel(numTxp); - for (auto& els : observedEffectiveLengths) { - eel.merge(els); - } - auto& transcripts = readExp.transcripts(); - for (size_t tid = 0; tid < numTxp; ++tid) { - auto el = eel.getExpectedEffectiveLength(tid); - if (el >= 1.0) { - transcripts[tid].setCachedLogEffectiveLength(std::log(el)); } - } - **/ - - /** GC-fragment bias **/ - // Set the global distribution based on the sum of local - // distributions. - double gcFracFwd{0.0}; - double globalMass{salmon::math::LOG_0}; - double globalFwdMass{salmon::math::LOG_0}; - auto& globalGCMass = readExp.observedGC(); - for (auto& gcp : observedBiasParams) { - auto& gcm = gcp.observedGCMass; - globalGCMass.combineCounts(gcm); - - auto& fw = - readExp.readBiasModelObserved(salmon::utils::Direction::FORWARD); - auto& rc = readExp.readBiasModelObserved( - salmon::utils::Direction::REVERSE_COMPLEMENT); - - auto& fwloc = gcp.seqBiasModelFW; - auto& rcloc = gcp.seqBiasModelRC; - fw.combineCounts(fwloc); - rc.combineCounts(rcloc); - - /** - * positional biases - **/ - auto& posBiasesFW = readExp.posBias(salmon::utils::Direction::FORWARD); - auto& posBiasesRC = - readExp.posBias(salmon::utils::Direction::REVERSE_COMPLEMENT); - for (size_t i = 0; i < posBiasesFW.size(); ++i) { - posBiasesFW[i].combine(gcp.posBiasFW[i]); - posBiasesRC[i].combine(gcp.posBiasRC[i]); - } - - globalMass = salmon::math::logAdd(globalMass, gcp.massFwd); - globalMass = salmon::math::logAdd(globalMass, gcp.massRC); - globalFwdMass = salmon::math::logAdd(globalFwdMass, gcp.massFwd); - } - globalGCMass.normalize(); - - if (globalMass != salmon::math::LOG_0) { - if (globalFwdMass != salmon::math::LOG_0) { - gcFracFwd = std::exp(globalFwdMass - globalMass); - } - readExp.setGCFracForward(gcFracFwd); - } - - // finalize the positional biases - if (salmonOpts.posBiasCorrect) { - auto& posBiasesFW = readExp.posBias(salmon::utils::Direction::FORWARD); - auto& posBiasesRC = - readExp.posBias(salmon::utils::Direction::REVERSE_COMPLEMENT); - for (size_t i = 0; i < posBiasesFW.size(); ++i) { - posBiasesFW[i].finalize(); - posBiasesRC[i].finalize(); - } - } - /** END GC-fragment bias **/ - - /* OLD SINGLE END BIAS - // Set the global distribution based on the sum of local - // distributions. - for (auto& gcp : observedBiasParams) { - auto& fw = - readExp.readBiasModelObserved(salmon::utils::Direction::FORWARD); auto& rc = - readExp.readBiasModelObserved(salmon::utils::Direction::REVERSE_COMPLEMENT); - - auto& fwloc = gcp.seqBiasModelFW; - auto& rcloc = gcp.seqBiasModelRC; - fw.combineCounts(fwloc); - rc.combineCounts(rcloc); - - // positional biases - auto& posBiasesFW = readExp.posBias(salmon::utils::Direction::FORWARD); - auto& posBiasesRC = - readExp.posBias(salmon::utils::Direction::REVERSE_COMPLEMENT); - for (size_t i = 0; i < posBiasesFW.size(); ++i) { - posBiasesFW[i].combine(gcp.posBiasFW[i]); - posBiasesRC[i].combine(gcp.posBiasRC[i]); - } - } - // finalize the positional biases - if (salmonOpts.posBiasCorrect) { - auto& posBiasesFW = readExp.posBias(salmon::utils::Direction::FORWARD); - auto& posBiasesRC = - readExp.posBias(salmon::utils::Direction::REVERSE_COMPLEMENT); - for (size_t i = 0; i < posBiasesFW.size(); ++i) { - posBiasesFW[i].finalize(); - posBiasesRC[i].finalize(); - } - } - END OLD SINGLE-END BIAS */ - - } // ------ END Single-end -------- } /** @@ -2442,7 +2170,7 @@ void processReadLibrary( */ template void quantifyLibrary(ReadExperimentT& experiment, bool greedyChain, - mem_opt_t* memOptions, SalmonOpts& salmonOpts, + SalmonOpts& salmonOpts, double coverageThresh, uint32_t numQuantThreads) { bool burnedIn = (salmonOpts.numBurninFrags == 0); @@ -2530,7 +2258,7 @@ void quantifyLibrary(ReadExperimentT& experiment, bool greedyChain, processReadLibrary(experiment, rl, sidx, transcripts, clusterForest, numObservedFragments, totalAssignedFragments, upperBoundHits, initialRound, burnedIn, fmCalc, - fragLengthDist, memOptions, salmonOpts, + fragLengthDist, salmonOpts, coverageThresh, greedyChain, ioMutex, numQuantThreads, groupVec, writeToCache); @@ -2641,14 +2369,9 @@ void quantifyLibrary(ReadExperimentT& experiment, bool greedyChain, experiment.setNumObservedFragments(numObservedFragments - prevNumObservedFragments); experiment.setUpperBoundHits(upperBoundHits.load()); - if (salmonOpts.useQuasi or salmonOpts.allowOrphans) { - double mappingRate = totalAssignedFragments.load() / - static_cast(numObservedFragments.load()); - experiment.setEffectiveMappingRate(mappingRate); - } else { // otherwise, we're using FMD-based mapping and are not allowing - // orphans. - experiment.setEffectiveMappingRate(upperBoundMappingRate); - } + double mappingRate = totalAssignedFragments.load() / + static_cast(numObservedFragments.load()); + experiment.setEffectiveMappingRate(mappingRate); } jointLog->info("Mapping rate = {}\%\n", @@ -2666,8 +2389,6 @@ int salmonQuantify(int argc, char* argv[]) { int32_t numBiasSamples{0}; SalmonOpts sopt; - mem_opt_t* memOptions = mem_opt_init(); - memOptions->split_factor = 1.5; sopt.numThreads = std::thread::hardware_concurrency(); @@ -2677,16 +2398,15 @@ int salmonQuantify(int argc, char* argv[]) { auto basicOpt = pogen.getBasicOptions(sopt); auto mapSpecOpt = pogen.getMappingSpecificOptions(sopt); auto advancedOpt = pogen.getAdvancedOptions(numBiasSamples, sopt); - auto fmdOpt = pogen.getFMDOptions(memOptions, sopt); auto hiddenOpt = pogen.getHiddenOptions(sopt); auto testingOpt = pogen.getTestingOptions(sopt); auto deprecatedOpt = pogen.getDeprecatedOptions(sopt); po::options_description all("salmon quant options"); - all.add(inputOpt).add(basicOpt).add(mapSpecOpt).add(advancedOpt).add(fmdOpt).add(testingOpt).add(hiddenOpt).add(deprecatedOpt); + all.add(inputOpt).add(basicOpt).add(mapSpecOpt).add(advancedOpt)./*add(fmdOpt).*/add(testingOpt).add(hiddenOpt).add(deprecatedOpt); po::options_description visible("salmon quant options"); - visible.add(inputOpt).add(basicOpt).add(mapSpecOpt).add(advancedOpt).add(fmdOpt); + visible.add(inputOpt).add(basicOpt).add(mapSpecOpt).add(advancedOpt)/*.add(fmdOpt)*/; po::variables_map vm; try { @@ -2781,18 +2501,9 @@ transcript abundance from RNA-seq reads try { switch (indexType) { case SalmonIndexType::FMD: { - /** Currently no seq-specific bias correction with - * FMD index. - */ - if (sopt.biasCorrect or sopt.gcBiasCorrect) { - sopt.biasCorrect = false; - sopt.gcBiasCorrect = false; - jointLog->warn( - "Sequence-specific or fragment GC bias correction require " - "use of the quasi-index. Disabling all bias correction"); - } - quantifyLibrary(experiment, greedyChain, memOptions, - sopt, sopt.coverageThresh, sopt.numThreads); + fmt::MemoryWriter infostr; + infostr << "This version of salmon does not support FMD indexing."; + throw std::invalid_argument(infostr.str()); } break; case SalmonIndexType::QUASI: { // We can only do fragment GC bias correction, for the time being, with @@ -2811,7 +2522,7 @@ transcript abundance from RNA-seq reads sopt.allowOrphans = !sopt.discardOrphansQuasi; sopt.useQuasi = true; - quantifyLibrary(experiment, greedyChain, memOptions, + quantifyLibrary(experiment, greedyChain, sopt, sopt.coverageThresh, sopt.numThreads); } break; } @@ -2853,7 +2564,6 @@ transcript abundance from RNA-seq reads } jointLog->info("Finished optimizer"); - free(memOptions); size_t tnum{0}; jointLog->info("writing output \n"); diff --git a/src/bwt_gen.c b/src/bwt_gen.c deleted file mode 100644 index 76f28c991..000000000 --- a/src/bwt_gen.c +++ /dev/null @@ -1,1632 +0,0 @@ -/* - - BWTConstruct.c BWT-Index Construction - - This module constructs BWT and auxiliary data structures. - - Copyright (C) 2004, Wong Chi Kwong. - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -*/ - -#include -#include -#include -#include -#include -#include -#include "QSufSort.h" - -#ifdef USE_MALLOC_WRAPPERS -# include "malloc_wrap.h" -#endif - -typedef uint64_t bgint_t; -typedef int64_t sbgint_t; - -#define ALPHABET_SIZE 4 -#define BIT_PER_CHAR 2 -#define CHAR_PER_WORD 16 -#define CHAR_PER_BYTE 4 - -#define BITS_IN_WORD 32 -#define BITS_IN_BYTE 8 -#define BYTES_IN_WORD 4 - -#define ALL_ONE_MASK 0xFFFFFFFF -#define DNA_OCC_CNT_TABLE_SIZE_IN_WORD 65536 - -#define BITS_PER_OCC_VALUE 16 -#define OCC_VALUE_PER_WORD 2 -#define OCC_INTERVAL 256 -#define OCC_INTERVAL_MAJOR 65536 - -#define TRUE 1 -#define FALSE 0 - -#define BWTINC_INSERT_SORT_NUM_ITEM 7 - -#define MIN_AVAILABLE_WORD 0x10000 - -#define average(value1, value2) ( ((value1) & (value2)) + ((value1) ^ (value2)) / 2 ) -#define min(value1, value2) ( ((value1) < (value2)) ? (value1) : (value2) ) -#define max(value1, value2) ( ((value1) > (value2)) ? (value1) : (value2) ) -#define med3(a, b, c) ( ac ? b : a>c ? c : a)) -#define swap(a, b, t); t = a; a = b; b = t; -#define truncateLeft(value, offset) ( (value) << (offset) >> (offset) ) -#define truncateRight(value, offset) ( (value) >> (offset) << (offset) ) -#define DNA_OCC_SUM_EXCEPTION(sum) ((sum & 0xfefefeff) == 0) - -typedef struct BWT { - bgint_t textLength; // length of the text - bgint_t inverseSa0; // SA-1[0] - bgint_t *cumulativeFreq; // cumulative frequency - unsigned int *bwtCode; // BWT code - unsigned int *occValue; // Occurrence values stored explicitly - bgint_t *occValueMajor; // Occurrence values stored explicitly - unsigned int *decodeTable; // For decoding BWT by table lookup - bgint_t bwtSizeInWord; // Temporary variable to hold the memory allocated - bgint_t occSizeInWord; // Temporary variable to hold the memory allocated - bgint_t occMajorSizeInWord; // Temporary variable to hold the memory allocated -} BWT; - -typedef struct BWTInc { - BWT *bwt; - unsigned int numberOfIterationDone; - bgint_t *cumulativeCountInCurrentBuild; - bgint_t availableWord; - bgint_t buildSize; - bgint_t initialMaxBuildSize; - bgint_t incMaxBuildSize; - unsigned int firstCharInLastIteration; - unsigned int *workingMemory; - unsigned int *packedText; - unsigned char *textBuffer; - unsigned int *packedShift; -} BWTInc; - -static bgint_t TextLengthFromBytePacked(bgint_t bytePackedLength, unsigned int bitPerChar, - unsigned int lastByteLength) -{ - return (bytePackedLength - 1) * (BITS_IN_BYTE / bitPerChar) + lastByteLength; -} - -static void initializeVAL(unsigned int *startAddr, const bgint_t length, const unsigned int initValue) -{ - bgint_t i; - for (i=0; i>= 2; - } - } - -} -// for BWTIncCreate() -static bgint_t BWTOccValueMajorSizeInWord(const bgint_t numChar) -{ - bgint_t numOfOccValue; - unsigned numOfOccIntervalPerMajor; - numOfOccValue = (numChar + OCC_INTERVAL - 1) / OCC_INTERVAL + 1; // Value at both end for bi-directional encoding - numOfOccIntervalPerMajor = OCC_INTERVAL_MAJOR / OCC_INTERVAL; - return (numOfOccValue + numOfOccIntervalPerMajor - 1) / numOfOccIntervalPerMajor * ALPHABET_SIZE; -} -// for BWTIncCreate() -static bgint_t BWTOccValueMinorSizeInWord(const bgint_t numChar) -{ - bgint_t numOfOccValue; - numOfOccValue = (numChar + OCC_INTERVAL - 1) / OCC_INTERVAL + 1; // Value at both end for bi-directional encoding - return (numOfOccValue + OCC_VALUE_PER_WORD - 1) / OCC_VALUE_PER_WORD * ALPHABET_SIZE; -} -// for BWTIncCreate() -static bgint_t BWTResidentSizeInWord(const bgint_t numChar) { - - bgint_t numCharRoundUpToOccInterval; - - // The $ in BWT at the position of inverseSa0 is not encoded - numCharRoundUpToOccInterval = (numChar + OCC_INTERVAL - 1) / OCC_INTERVAL * OCC_INTERVAL; - - return (numCharRoundUpToOccInterval + CHAR_PER_WORD - 1) / CHAR_PER_WORD; - -} - -static void BWTIncSetBuildSizeAndTextAddr(BWTInc *bwtInc) -{ - bgint_t maxBuildSize; - - if (bwtInc->bwt->textLength == 0) { - // initial build - // Minus 2 because n+1 entries of seq and rank needed for n char - maxBuildSize = (bwtInc->availableWord - (2 + OCC_INTERVAL / CHAR_PER_WORD) * (sizeof(bgint_t) / 4)) - / (2 * CHAR_PER_WORD + 1) * CHAR_PER_WORD / (sizeof(bgint_t) / 4); - if (bwtInc->initialMaxBuildSize > 0) { - bwtInc->buildSize = min(bwtInc->initialMaxBuildSize, maxBuildSize); - } else { - bwtInc->buildSize = maxBuildSize; - } - } else { - // Minus 3 because n+1 entries of sorted rank, seq and rank needed for n char - // Minus numberOfIterationDone because bwt slightly shift to left in each iteration - maxBuildSize = (bwtInc->availableWord - bwtInc->bwt->bwtSizeInWord - bwtInc->bwt->occSizeInWord - - (3 + bwtInc->numberOfIterationDone * OCC_INTERVAL / BIT_PER_CHAR) * (sizeof(bgint_t) / 4)) - / 3 / (sizeof(bgint_t) / 4); - if (maxBuildSize < CHAR_PER_WORD) { - fprintf(stderr, "BWTIncSetBuildSizeAndTextAddr(): Not enough space allocated to continue construction!\n"); - exit(1); - } - if (bwtInc->incMaxBuildSize > 0) { - bwtInc->buildSize = min(bwtInc->incMaxBuildSize, maxBuildSize); - } else { - bwtInc->buildSize = maxBuildSize; - } - if (bwtInc->buildSize < CHAR_PER_WORD) - bwtInc->buildSize = CHAR_PER_WORD; - } - - if (bwtInc->buildSize < CHAR_PER_WORD) { - fprintf(stderr, "BWTIncSetBuildSizeAndTextAddr(): Not enough space allocated to continue construction!\n"); - exit(1); - } - - bwtInc->buildSize = bwtInc->buildSize / CHAR_PER_WORD * CHAR_PER_WORD; - - bwtInc->packedText = bwtInc->workingMemory + 2 * (bwtInc->buildSize + 1) * (sizeof(bgint_t) / 4); - bwtInc->textBuffer = (unsigned char*)(bwtInc->workingMemory + (bwtInc->buildSize + 1) * (sizeof(bgint_t) / 4)); -} - -// for ceilLog2() -unsigned int leadingZero(const unsigned int input) -{ - unsigned int l; - const static unsigned int leadingZero8bit[256] = {8,7,6,6,5,5,5,5,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; - - if (input & 0xFFFF0000) { - if (input & 0xFF000000) { - l = leadingZero8bit[input >> 24]; - } else { - l = 8 + leadingZero8bit[input >> 16]; - } - } else { - if (input & 0x0000FF00) { - l = 16 + leadingZero8bit[input >> 8]; - } else { - l = 24 + leadingZero8bit[input]; - } - } - return l; - -} -// for BitPerBytePackedChar() -static unsigned int ceilLog2(const unsigned int input) -{ - if (input <= 1) return 0; - return BITS_IN_WORD - leadingZero(input - 1); - -} -// for ConvertBytePackedToWordPacked() -static unsigned int BitPerBytePackedChar(const unsigned int alphabetSize) -{ - unsigned int bitPerChar; - bitPerChar = ceilLog2(alphabetSize); - // Return the largest number of bit that does not affect packing efficiency - if (BITS_IN_BYTE / (BITS_IN_BYTE / bitPerChar) > bitPerChar) - bitPerChar = BITS_IN_BYTE / (BITS_IN_BYTE / bitPerChar); - return bitPerChar; -} -// for ConvertBytePackedToWordPacked() -static unsigned int BitPerWordPackedChar(const unsigned int alphabetSize) -{ - return ceilLog2(alphabetSize); -} - -static void ConvertBytePackedToWordPacked(const unsigned char *input, unsigned int *output, const unsigned int alphabetSize, - const bgint_t textLength) -{ - bgint_t i; - unsigned int j, k, c; - unsigned int bitPerBytePackedChar; - unsigned int bitPerWordPackedChar; - unsigned int charPerWord; - unsigned int charPerByte; - unsigned int bytePerIteration; - bgint_t byteProcessed = 0; - bgint_t wordProcessed = 0; - unsigned int mask, shift; - - unsigned int buffer[BITS_IN_WORD]; - - bitPerBytePackedChar = BitPerBytePackedChar(alphabetSize); - bitPerWordPackedChar = BitPerWordPackedChar(alphabetSize); - charPerByte = BITS_IN_BYTE / bitPerBytePackedChar; - charPerWord = BITS_IN_WORD / bitPerWordPackedChar; - - bytePerIteration = charPerWord / charPerByte; - mask = truncateRight(ALL_ONE_MASK, BITS_IN_WORD - bitPerWordPackedChar); - shift = BITS_IN_WORD - BITS_IN_BYTE + bitPerBytePackedChar - bitPerWordPackedChar; - - while ((wordProcessed + 1) * charPerWord < textLength) { - - k = 0; - for (i=0; i> bitPerWordPackedChar * i; - } - output[wordProcessed] = c; - wordProcessed++; - - } - - k = 0; - for (i=0; i < (textLength - wordProcessed * charPerWord - 1) / charPerByte + 1; i++) { - c = (unsigned int)input[byteProcessed] << shift; - for (j=0; j> bitPerWordPackedChar * i; - } - output[wordProcessed] = c; -} - -BWT *BWTCreate(const bgint_t textLength, unsigned int *decodeTable) -{ - BWT *bwt; - - bwt = (BWT*)calloc(1, sizeof(BWT)); - - bwt->textLength = 0; - - bwt->cumulativeFreq = (bgint_t*)calloc((ALPHABET_SIZE + 1), sizeof(bgint_t)); - initializeVAL_bg(bwt->cumulativeFreq, ALPHABET_SIZE + 1, 0); - - bwt->bwtSizeInWord = 0; - - // Generate decode tables - if (decodeTable == NULL) { - bwt->decodeTable = (unsigned*)calloc(DNA_OCC_CNT_TABLE_SIZE_IN_WORD, sizeof(unsigned int)); - GenerateDNAOccCountTable(bwt->decodeTable); - } else { - bwt->decodeTable = decodeTable; - } - - bwt->occMajorSizeInWord = BWTOccValueMajorSizeInWord(textLength); - bwt->occValueMajor = (bgint_t*)calloc(bwt->occMajorSizeInWord, sizeof(bgint_t)); - - bwt->occSizeInWord = 0; - bwt->occValue = NULL; - - return bwt; -} - -BWTInc *BWTIncCreate(const bgint_t textLength, unsigned int initialMaxBuildSize, unsigned int incMaxBuildSize) -{ - BWTInc *bwtInc; - unsigned int i, n_iter; - - if (textLength < incMaxBuildSize) incMaxBuildSize = textLength; - if (textLength < initialMaxBuildSize) initialMaxBuildSize = textLength; - - bwtInc = (BWTInc*)calloc(1, sizeof(BWTInc)); - bwtInc->numberOfIterationDone = 0; - bwtInc->bwt = BWTCreate(textLength, NULL); - bwtInc->initialMaxBuildSize = initialMaxBuildSize; - bwtInc->incMaxBuildSize = incMaxBuildSize; - bwtInc->cumulativeCountInCurrentBuild = (bgint_t*)calloc((ALPHABET_SIZE + 1), sizeof(bgint_t)); - initializeVAL_bg(bwtInc->cumulativeCountInCurrentBuild, ALPHABET_SIZE + 1, 0); - - // Build frequently accessed data - bwtInc->packedShift = (unsigned*)calloc(CHAR_PER_WORD, sizeof(unsigned int)); - for (i=0; ipackedShift[i] = BITS_IN_WORD - (i+1) * BIT_PER_CHAR; - - n_iter = (textLength - initialMaxBuildSize) / incMaxBuildSize + 1; - bwtInc->availableWord = BWTResidentSizeInWord(textLength) + BWTOccValueMinorSizeInWord(textLength) // minimal memory requirement - + OCC_INTERVAL / BIT_PER_CHAR * n_iter * 2 * (sizeof(bgint_t) / 4) // buffer at the end of occ array - + incMaxBuildSize/5 * 3 * (sizeof(bgint_t) / 4); // space for the 3 temporary arrays in each iteration - if (bwtInc->availableWord < MIN_AVAILABLE_WORD) bwtInc->availableWord = MIN_AVAILABLE_WORD; // lh3: otherwise segfaul when availableWord is too small - fprintf(stderr, "[%s] textLength=%ld, availableWord=%ld\n", __func__, (long)textLength, (long)bwtInc->availableWord); - bwtInc->workingMemory = (unsigned*)calloc(bwtInc->availableWord, BYTES_IN_WORD); - - return bwtInc; -} -// for BWTIncConstruct() -static void BWTIncPutPackedTextToRank(const unsigned int *packedText, bgint_t* __restrict rank, - bgint_t* __restrict cumulativeCount, const bgint_t numChar) -{ - bgint_t i; - unsigned int j; - unsigned int c, t; - unsigned int packedMask; - bgint_t rankIndex; - bgint_t lastWord; - unsigned int numCharInLastWord; - - lastWord = (numChar - 1) / CHAR_PER_WORD; - numCharInLastWord = numChar - lastWord * CHAR_PER_WORD; - - packedMask = ALL_ONE_MASK >> (BITS_IN_WORD - BIT_PER_CHAR); - rankIndex = numChar - 1; - - t = packedText[lastWord] >> (BITS_IN_WORD - numCharInLastWord * BIT_PER_CHAR); - for (i=0; i>= BIT_PER_CHAR; - } - - for (i=lastWord; i--;) { // loop from lastWord - 1 to 0 - t = packedText[i]; - for (j=0; j>= BIT_PER_CHAR; - } - } - - // Convert occurrence to cumulativeCount - cumulativeCount[2] += cumulativeCount[1]; - cumulativeCount[3] += cumulativeCount[2]; - cumulativeCount[4] += cumulativeCount[3]; -} - - -static void ForwardDNAAllOccCountNoLimit(const unsigned int* dna, const bgint_t index, - bgint_t* __restrict occCount, const unsigned int* dnaDecodeTable) -{ - static const unsigned int truncateRightMask[16] = { 0x00000000, 0xC0000000, 0xF0000000, 0xFC000000, - 0xFF000000, 0xFFC00000, 0xFFF00000, 0xFFFC0000, - 0xFFFF0000, 0xFFFFC000, 0xFFFFF000, 0xFFFFFC00, - 0xFFFFFF00, 0xFFFFFFC0, 0xFFFFFFF0, 0xFFFFFFFC }; - - bgint_t iteration, i; - unsigned int wordToCount, charToCount; - unsigned int j, c, sum; - - occCount[0] = 0; - occCount[1] = 0; - occCount[2] = 0; - occCount[3] = 0; - - iteration = index / 256; - wordToCount = (index - iteration * 256) / 16; - charToCount = index - iteration * 256 - wordToCount * 16; - - for (i=0; i> 16]; - sum += dnaDecodeTable[*dna & 0x0000FFFF]; - dna++; - } - if (!DNA_OCC_SUM_EXCEPTION(sum)) { - occCount[0] += sum & 0x000000FF; sum >>= 8; - occCount[1] += sum & 0x000000FF; sum >>= 8; - occCount[2] += sum & 0x000000FF; sum >>= 8; - occCount[3] += sum; - } else { - // only some or all of the 3 bits are on - // in reality, only one of the four cases are possible - if (sum == 0x00000100) { - occCount[0] += 256; - } else if (sum == 0x00010000) { - occCount[1] += 256; - } else if (sum == 0x01000000) { - occCount[2] += 256; - } else if (sum == 0x00000000) { - occCount[3] += 256; - } else { - fprintf(stderr, "ForwardDNAAllOccCountNoLimit(): DNA occ sum exception!\n"); - exit(1); - } - } - - } - - sum = 0; - for (j=0; j> 16]; - sum += dnaDecodeTable[*dna & 0x0000FFFF]; - dna++; - } - - if (charToCount > 0) { - c = *dna & truncateRightMask[charToCount]; // increase count of 'a' by 16 - c; - sum += dnaDecodeTable[c >> 16]; - sum += dnaDecodeTable[c & 0xFFFF]; - sum += charToCount - 16; // decrease count of 'a' by 16 - positionToProcess - } - - occCount[0] += sum & 0x000000FF; sum >>= 8; - occCount[1] += sum & 0x000000FF; sum >>= 8; - occCount[2] += sum & 0x000000FF; sum >>= 8; - occCount[3] += sum; -} - -static void BWTIncBuildPackedBwt(const bgint_t *relativeRank, unsigned int* __restrict bwt, const bgint_t numChar, - const bgint_t *cumulativeCount, const unsigned int *packedShift) { - - bgint_t i, r; - unsigned int c; - bgint_t previousRank, currentRank; - bgint_t wordIndex, charIndex; - bgint_t inverseSa0; - - inverseSa0 = previousRank = relativeRank[0]; - - for (i=1; i<=numChar; i++) { - currentRank = relativeRank[i]; - // previousRank > cumulativeCount[c] because $ is one of the char - c = (previousRank > cumulativeCount[1]) + (previousRank > cumulativeCount[2]) - + (previousRank > cumulativeCount[3]); - // set bwt for currentRank - if (c > 0) { - // c <> 'a' - r = currentRank; - if (r > inverseSa0) { - // - 1 because $ at inverseSa0 is not encoded - r--; - } - wordIndex = r / CHAR_PER_WORD; - charIndex = r - wordIndex * CHAR_PER_WORD; - bwt[wordIndex] |= c << packedShift[charIndex]; - } - previousRank = currentRank; - } -} - -static inline bgint_t BWTOccValueExplicit(const BWT *bwt, const bgint_t occIndexExplicit, - const unsigned int character) -{ - bgint_t occIndexMajor; - - occIndexMajor = occIndexExplicit * OCC_INTERVAL / OCC_INTERVAL_MAJOR; - - if (occIndexExplicit % OCC_VALUE_PER_WORD == 0) { - return bwt->occValueMajor[occIndexMajor * ALPHABET_SIZE + character] + - (bwt->occValue[occIndexExplicit / OCC_VALUE_PER_WORD * ALPHABET_SIZE + character] >> 16); - - } else { - return bwt->occValueMajor[occIndexMajor * ALPHABET_SIZE + character] + - (bwt->occValue[occIndexExplicit / OCC_VALUE_PER_WORD * ALPHABET_SIZE + character] & 0x0000FFFF); - } -} - - -static unsigned int ForwardDNAOccCount(const unsigned int* dna, const unsigned int index, const unsigned int character, - const unsigned int* dnaDecodeTable) -{ - static const unsigned int truncateRightMask[16] = { 0x00000000, 0xC0000000, 0xF0000000, 0xFC000000, - 0xFF000000, 0xFFC00000, 0xFFF00000, 0xFFFC0000, - 0xFFFF0000, 0xFFFFC000, 0xFFFFF000, 0xFFFFFC00, - 0xFFFFFF00, 0xFFFFFFC0, 0xFFFFFFF0, 0xFFFFFFFC }; - - unsigned int wordToCount, charToCount; - unsigned int i, c; - unsigned int sum = 0; - - wordToCount = index / 16; - charToCount = index - wordToCount * 16; - - for (i=0; i> 16]; - sum += dnaDecodeTable[dna[i] & 0x0000FFFF]; - } - - if (charToCount > 0) { - c = dna[i] & truncateRightMask[charToCount]; // increase count of 'a' by 16 - c; - sum += dnaDecodeTable[c >> 16]; - sum += dnaDecodeTable[c & 0xFFFF]; - sum += charToCount - 16; // decrease count of 'a' by 16 - positionToProcess - } - - return (sum >> (character * 8)) & 0x000000FF; - -} - -static unsigned int BackwardDNAOccCount(const unsigned int* dna, const unsigned int index, const unsigned int character, - const unsigned int* dnaDecodeTable) -{ - static const unsigned int truncateLeftMask[16] = { 0x00000000, 0x00000003, 0x0000000F, 0x0000003F, - 0x000000FF, 0x000003FF, 0x00000FFF, 0x00003FFF, - 0x0000FFFF, 0x0003FFFF, 0x000FFFFF, 0x003FFFFF, - 0x00FFFFFF, 0x03FFFFFF, 0x0FFFFFFF, 0x3FFFFFFF }; - - unsigned int wordToCount, charToCount; - unsigned int i, c; - unsigned int sum = 0; - - wordToCount = index / 16; - charToCount = index - wordToCount * 16; - - dna -= wordToCount + 1; - - if (charToCount > 0) { - c = *dna & truncateLeftMask[charToCount]; // increase count of 'a' by 16 - c; - sum += dnaDecodeTable[c >> 16]; - sum += dnaDecodeTable[c & 0xFFFF]; - sum += charToCount - 16; // decrease count of 'a' by 16 - positionToProcess - } - - for (i=0; i> 16]; - sum += dnaDecodeTable[*dna & 0x0000FFFF]; - } - - return (sum >> (character * 8)) & 0x000000FF; - -} - -bgint_t BWTOccValue(const BWT *bwt, bgint_t index, const unsigned int character) -{ - bgint_t occValue; - bgint_t occExplicitIndex, occIndex; - - // $ is supposed to be positioned at inverseSa0 but it is not encoded - // therefore index is subtracted by 1 for adjustment - if (index > bwt->inverseSa0) - index--; - - occExplicitIndex = (index + OCC_INTERVAL / 2 - 1) / OCC_INTERVAL; // Bidirectional encoding - occIndex = occExplicitIndex * OCC_INTERVAL; - occValue = BWTOccValueExplicit(bwt, occExplicitIndex, character); - - if (occIndex == index) - return occValue; - - if (occIndex < index) { - return occValue + ForwardDNAOccCount(bwt->bwtCode + occIndex / CHAR_PER_WORD, index - occIndex, character, bwt->decodeTable); - } else { - return occValue - BackwardDNAOccCount(bwt->bwtCode + occIndex / CHAR_PER_WORD, occIndex - index, character, bwt->decodeTable); - } -} - -static bgint_t BWTIncGetAbsoluteRank(BWT *bwt, bgint_t* __restrict absoluteRank, bgint_t* __restrict seq, - const unsigned int *packedText, const bgint_t numChar, - const bgint_t* cumulativeCount, const unsigned int firstCharInLastIteration) -{ - bgint_t saIndex; - bgint_t lastWord; - unsigned int packedMask; - bgint_t i; - unsigned int c, t, j; - bgint_t rankIndex; - unsigned int shift; - bgint_t seqIndexFromStart[ALPHABET_SIZE]; - bgint_t seqIndexFromEnd[ALPHABET_SIZE]; - - for (i=0; i> shift; - saIndex = bwt->inverseSa0; - rankIndex = numChar - 1; - - lastWord = numChar / CHAR_PER_WORD; - for (i=lastWord; i--;) { // loop from lastWord - 1 to 0 - t = packedText[i]; - for (j=0; jcumulativeFreq[c] + BWTOccValue(bwt, saIndex, c) + 1; - // A counting sort using the first character of suffix is done here - // If rank > inverseSa0 -> fill seq from end, otherwise fill seq from start -> to leave the right entry for inverseSa0 - if (saIndex > bwt->inverseSa0) { - seq[seqIndexFromEnd[c]] = rankIndex; - absoluteRank[seqIndexFromEnd[c]] = saIndex; - seqIndexFromEnd[c]--; - } else { - seq[seqIndexFromStart[c]] = rankIndex; - absoluteRank[seqIndexFromStart[c]] = saIndex; - seqIndexFromStart[c]++; - } - rankIndex--; - t >>= BIT_PER_CHAR; - } - } - - absoluteRank[seqIndexFromStart[firstCharInLastIteration]] = bwt->inverseSa0; // representing the substring of all preceding characters - seq[seqIndexFromStart[firstCharInLastIteration]] = numChar; - - return seqIndexFromStart[firstCharInLastIteration]; -} - -static void BWTIncSortKey(bgint_t* __restrict key, bgint_t* __restrict seq, const bgint_t numItem) -{ - #define EQUAL_KEY_THRESHOLD 4 // Partition for equal key if data array size / the number of data with equal value with pivot < EQUAL_KEY_THRESHOLD - - int64_t lowIndex, highIndex, midIndex; - int64_t lowPartitionIndex, highPartitionIndex; - int64_t lowStack[32], highStack[32]; - int stackDepth; - int64_t i, j; - bgint_t tempSeq, tempKey; - int64_t numberOfEqualKey; - - if (numItem < 2) return; - - stackDepth = 0; - - lowIndex = 0; - highIndex = numItem - 1; - - for (;;) { - - for (;;) { - - // Sort small array of data - if (highIndex - lowIndex < BWTINC_INSERT_SORT_NUM_ITEM) { // Insertion sort on smallest arrays - for (i=lowIndex+1; i<=highIndex; i++) { - tempSeq = seq[i]; - tempKey = key[i]; - for (j = i; j > lowIndex && key[j-1] > tempKey; j--) { - seq[j] = seq[j-1]; - key[j] = key[j-1]; - } - if (j != i) { - seq[j] = tempSeq; - key[j] = tempKey; - } - } - break; - } - - // Choose pivot as median of the lowest, middle, and highest data; sort the three data - - midIndex = average(lowIndex, highIndex); - if (key[lowIndex] > key[midIndex]) { - tempSeq = seq[lowIndex]; - tempKey = key[lowIndex]; - seq[lowIndex] = seq[midIndex]; - key[lowIndex] = key[midIndex]; - seq[midIndex] = tempSeq; - key[midIndex] = tempKey; - } - if (key[lowIndex] > key[highIndex]) { - tempSeq = seq[lowIndex]; - tempKey = key[lowIndex]; - seq[lowIndex] = seq[highIndex]; - key[lowIndex] = key[highIndex]; - seq[highIndex] = tempSeq; - key[highIndex] = tempKey; - } - if (key[midIndex] > key[highIndex]) { - tempSeq = seq[midIndex]; - tempKey = key[midIndex]; - seq[midIndex] = seq[highIndex]; - key[midIndex] = key[highIndex]; - seq[highIndex] = tempSeq; - key[highIndex] = tempKey; - } - - // Partition data - - numberOfEqualKey = 0; - - lowPartitionIndex = lowIndex + 1; - highPartitionIndex = highIndex - 1; - - for (;;) { - while (lowPartitionIndex <= highPartitionIndex && key[lowPartitionIndex] <= key[midIndex]) { - numberOfEqualKey += (key[lowPartitionIndex] == key[midIndex]); - lowPartitionIndex++; - } - while (lowPartitionIndex < highPartitionIndex) { - if (key[midIndex] >= key[highPartitionIndex]) { - numberOfEqualKey += (key[midIndex] == key[highPartitionIndex]); - break; - } - highPartitionIndex--; - } - if (lowPartitionIndex >= highPartitionIndex) { - break; - } - tempSeq = seq[lowPartitionIndex]; - tempKey = key[lowPartitionIndex]; - seq[lowPartitionIndex] = seq[highPartitionIndex]; - key[lowPartitionIndex] = key[highPartitionIndex]; - seq[highPartitionIndex] = tempSeq; - key[highPartitionIndex] = tempKey; - if (highPartitionIndex == midIndex) { - // partition key has been moved - midIndex = lowPartitionIndex; - } - lowPartitionIndex++; - highPartitionIndex--; - } - - // Adjust the partition index - highPartitionIndex = lowPartitionIndex; - lowPartitionIndex--; - - // move the partition key to end of low partition - tempSeq = seq[midIndex]; - tempKey = key[midIndex]; - seq[midIndex] = seq[lowPartitionIndex]; - key[midIndex] = key[lowPartitionIndex]; - seq[lowPartitionIndex] = tempSeq; - key[lowPartitionIndex] = tempKey; - - if (highIndex - lowIndex + BWTINC_INSERT_SORT_NUM_ITEM <= EQUAL_KEY_THRESHOLD * numberOfEqualKey) { - - // Many keys = partition key; separate the equal key data from the lower partition - - midIndex = lowIndex; - - for (;;) { - while (midIndex < lowPartitionIndex && key[midIndex] < key[lowPartitionIndex]) { - midIndex++; - } - while (midIndex < lowPartitionIndex && key[lowPartitionIndex] == key[lowPartitionIndex - 1]) { - lowPartitionIndex--; - } - if (midIndex >= lowPartitionIndex) { - break; - } - tempSeq = seq[midIndex]; - tempKey = key[midIndex]; - seq[midIndex] = seq[lowPartitionIndex - 1]; - key[midIndex] = key[lowPartitionIndex - 1]; - seq[lowPartitionIndex - 1] = tempSeq; - key[lowPartitionIndex - 1] = tempKey; - midIndex++; - lowPartitionIndex--; - } - - } - - if (lowPartitionIndex - lowIndex > highIndex - highPartitionIndex) { - // put the larger partition to stack - lowStack[stackDepth] = lowIndex; - highStack[stackDepth] = lowPartitionIndex - 1; - stackDepth++; - // sort the smaller partition first - lowIndex = highPartitionIndex; - } else { - // put the larger partition to stack - lowStack[stackDepth] = highPartitionIndex; - highStack[stackDepth] = highIndex; - stackDepth++; - // sort the smaller partition first - if (lowPartitionIndex > lowIndex) { - highIndex = lowPartitionIndex - 1; - } else { - // all keys in the partition equals to the partition key - break; - } - } - continue; - } - - // Pop a range from stack - if (stackDepth > 0) { - stackDepth--; - lowIndex = lowStack[stackDepth]; - highIndex = highStack[stackDepth]; - continue; - } else return; - } -} - - -static void BWTIncBuildRelativeRank(bgint_t* __restrict sortedRank, bgint_t* __restrict seq, - bgint_t* __restrict relativeRank, const bgint_t numItem, - bgint_t oldInverseSa0, const bgint_t *cumulativeCount) -{ - bgint_t i, c; - bgint_t s, r; - bgint_t lastRank, lastIndex; - bgint_t oldInverseSa0RelativeRank = 0; - bgint_t freq; - - lastIndex = numItem; - lastRank = sortedRank[numItem]; - if (lastRank > oldInverseSa0) { - sortedRank[numItem]--; // to prepare for merging; $ is not encoded in bwt - } - s = seq[numItem]; - relativeRank[s] = numItem; - if (lastRank == oldInverseSa0) { - oldInverseSa0RelativeRank = numItem; - oldInverseSa0++; // so that this segment of code is not run again - lastRank++; // so that oldInverseSa0 become a sorted group with 1 item - } - - c = ALPHABET_SIZE - 1; - freq = cumulativeCount[c]; - - for (i=numItem; i--;) { // from numItem - 1 to 0 - r = sortedRank[i]; - if (r > oldInverseSa0) - sortedRank[i]--; // to prepare for merging; $ is not encoded in bwt - s = seq[i]; - if (i < freq) { - if (lastIndex >= freq) - lastRank++; // to trigger the group across alphabet boundary to be split - c--; - freq = cumulativeCount[c]; - } - if (r == lastRank) { - relativeRank[s] = lastIndex; - } else { - if (i == lastIndex - 1) { - if (lastIndex < numItem && (sbgint_t)seq[lastIndex + 1] < 0) { - seq[lastIndex] = seq[lastIndex + 1] - 1; - } else { - seq[lastIndex] = (bgint_t)-1; - } - } - lastIndex = i; - lastRank = r; - relativeRank[s] = i; - if (r == oldInverseSa0) { - oldInverseSa0RelativeRank = i; - oldInverseSa0++; // so that this segment of code is not run again - lastRank++; // so that oldInverseSa0 become a sorted group with 1 item - } - } - } - -} - -static void BWTIncBuildBwt(unsigned int* insertBwt, const bgint_t *relativeRank, const bgint_t numChar, - const bgint_t *cumulativeCount) -{ - unsigned int c; - bgint_t i; - bgint_t previousRank, currentRank; - - previousRank = relativeRank[0]; - - for (i=1; i<=numChar; i++) { - currentRank = relativeRank[i]; - c = (previousRank >= cumulativeCount[1]) + (previousRank >= cumulativeCount[2]) - + (previousRank >= cumulativeCount[3]); - insertBwt[currentRank] = c; - previousRank = currentRank; - } -} - -static void BWTIncMergeBwt(const bgint_t *sortedRank, const unsigned int* oldBwt, const unsigned int *insertBwt, - unsigned int* __restrict mergedBwt, const bgint_t numOldBwt, const bgint_t numInsertBwt) -{ - unsigned int bitsInWordMinusBitPerChar; - bgint_t leftShift, rightShift; - bgint_t o; - bgint_t oIndex, iIndex, mIndex; - bgint_t mWord, mChar, oWord, oChar; - bgint_t numInsert; - - bitsInWordMinusBitPerChar = BITS_IN_WORD - BIT_PER_CHAR; - - oIndex = 0; - iIndex = 0; - mIndex = 0; - - mWord = 0; - mChar = 0; - - mergedBwt[0] = 0; // this can be cleared as merged Bwt slightly shift to the left in each iteration - - while (oIndex < numOldBwt) { - - // copy from insertBwt - while (iIndex <= numInsertBwt && sortedRank[iIndex] <= oIndex) { - if (sortedRank[iIndex] != 0) { // special value to indicate that this is for new inverseSa0 - mergedBwt[mWord] |= insertBwt[iIndex] << (BITS_IN_WORD - (mChar + 1) * BIT_PER_CHAR); - mIndex++; - mChar++; - if (mChar == CHAR_PER_WORD) { - mChar = 0; - mWord++; - mergedBwt[mWord] = 0; // no need to worry about crossing mergedBwt boundary - } - } - iIndex++; - } - - // Copy from oldBwt to mergedBwt - if (iIndex <= numInsertBwt) { - o = sortedRank[iIndex]; - } else { - o = numOldBwt; - } - numInsert = o - oIndex; - - oWord = oIndex / CHAR_PER_WORD; - oChar = oIndex - oWord * CHAR_PER_WORD; - if (oChar > mChar) { - leftShift = (oChar - mChar) * BIT_PER_CHAR; - rightShift = (CHAR_PER_WORD + mChar - oChar) * BIT_PER_CHAR; - mergedBwt[mWord] = mergedBwt[mWord] - | (oldBwt[oWord] << (oChar * BIT_PER_CHAR) >> (mChar * BIT_PER_CHAR)) - | (oldBwt[oWord+1] >> rightShift); - oIndex += min(numInsert, CHAR_PER_WORD - mChar); - while (o > oIndex) { - oWord++; - mWord++; - mergedBwt[mWord] = (oldBwt[oWord] << leftShift) | (oldBwt[oWord+1] >> rightShift); - oIndex += CHAR_PER_WORD; - } - } else if (oChar < mChar) { - rightShift = (mChar - oChar) * BIT_PER_CHAR; - leftShift = (CHAR_PER_WORD + oChar - mChar) * BIT_PER_CHAR; - mergedBwt[mWord] = mergedBwt[mWord] - | (oldBwt[oWord] << (oChar * BIT_PER_CHAR) >> (mChar * BIT_PER_CHAR)); - oIndex += min(numInsert, CHAR_PER_WORD - mChar); - while (o > oIndex) { - oWord++; - mWord++; - mergedBwt[mWord] = (oldBwt[oWord-1] << leftShift) | (oldBwt[oWord] >> rightShift); - oIndex += CHAR_PER_WORD; - } - } else { // oChar == mChar - mergedBwt[mWord] = mergedBwt[mWord] | truncateLeft(oldBwt[oWord], mChar * BIT_PER_CHAR); - oIndex += min(numInsert, CHAR_PER_WORD - mChar); - while (o > oIndex) { - oWord++; - mWord++; - mergedBwt[mWord] = oldBwt[oWord]; - oIndex += CHAR_PER_WORD; - } - } - oIndex = o; - mIndex += numInsert; - - // Clear the trailing garbage in mergedBwt - mWord = mIndex / CHAR_PER_WORD; - mChar = mIndex - mWord * CHAR_PER_WORD; - if (mChar == 0) { - mergedBwt[mWord] = 0; - } else { - mergedBwt[mWord] = truncateRight(mergedBwt[mWord], (BITS_IN_WORD - mChar * BIT_PER_CHAR)); - } - - } - - // copy from insertBwt - while (iIndex <= numInsertBwt) { - if (sortedRank[iIndex] != 0) { - mergedBwt[mWord] |= insertBwt[iIndex] << (BITS_IN_WORD - (mChar + 1) * BIT_PER_CHAR); - mIndex++; - mChar++; - if (mChar == CHAR_PER_WORD) { - mChar = 0; - mWord++; - mergedBwt[mWord] = 0; // no need to worry about crossing mergedBwt boundary - } - } - iIndex++; - } -} - -void BWTClearTrailingBwtCode(BWT *bwt) -{ - bgint_t bwtResidentSizeInWord; - bgint_t wordIndex, offset; - bgint_t i; - - bwtResidentSizeInWord = BWTResidentSizeInWord(bwt->textLength); - - wordIndex = bwt->textLength / CHAR_PER_WORD; - offset = (bwt->textLength - wordIndex * CHAR_PER_WORD) * BIT_PER_CHAR; - if (offset > 0) { - bwt->bwtCode[wordIndex] = truncateRight(bwt->bwtCode[wordIndex], BITS_IN_WORD - offset); - } else { - if (wordIndex < bwtResidentSizeInWord) { - bwt->bwtCode[wordIndex] = 0; - } - } - - for (i=wordIndex+1; ibwtCode[i] = 0; - } -} - - -void BWTGenerateOccValueFromBwt(const unsigned int* bwt, unsigned int* __restrict occValue, - bgint_t* __restrict occValueMajor, - const bgint_t textLength, const unsigned int* decodeTable) -{ - bgint_t numberOfOccValueMajor, numberOfOccValue; - unsigned int wordBetweenOccValue; - bgint_t numberOfOccIntervalPerMajor; - unsigned int c; - bgint_t i, j; - bgint_t occMajorIndex; - bgint_t occIndex, bwtIndex; - bgint_t sum; // perhaps unsigned is big enough - bgint_t tempOccValue0[ALPHABET_SIZE], tempOccValue1[ALPHABET_SIZE]; - - wordBetweenOccValue = OCC_INTERVAL / CHAR_PER_WORD; - - // Calculate occValue - numberOfOccValue = (textLength + OCC_INTERVAL - 1) / OCC_INTERVAL + 1; // Value at both end for bi-directional encoding - numberOfOccIntervalPerMajor = OCC_INTERVAL_MAJOR / OCC_INTERVAL; - numberOfOccValueMajor = (numberOfOccValue + numberOfOccIntervalPerMajor - 1) / numberOfOccIntervalPerMajor; - - tempOccValue0[0] = 0; - tempOccValue0[1] = 0; - tempOccValue0[2] = 0; - tempOccValue0[3] = 0; - occValueMajor[0] = 0; - occValueMajor[1] = 0; - occValueMajor[2] = 0; - occValueMajor[3] = 0; - - occIndex = 0; - bwtIndex = 0; - for (occMajorIndex=1; occMajorIndex> 16]; - sum += decodeTable[c & 0x0000FFFF]; - bwtIndex++; - } - if (!DNA_OCC_SUM_EXCEPTION(sum)) { - tempOccValue1[0] += (sum & 0x000000FF); sum >>= 8; - tempOccValue1[1] += (sum & 0x000000FF); sum >>= 8; - tempOccValue1[2] += (sum & 0x000000FF); sum >>= 8; - tempOccValue1[3] += sum; - } else { - if (sum == 0x00000100) { - tempOccValue1[0] += 256; - } else if (sum == 0x00010000) { - tempOccValue1[1] += 256; - } else if (sum == 0x01000000) { - tempOccValue1[2] += 256; - } else { - tempOccValue1[3] += 256; - } - } - occValue[occIndex * 4 + 0] = (tempOccValue0[0] << 16) | tempOccValue1[0]; - occValue[occIndex * 4 + 1] = (tempOccValue0[1] << 16) | tempOccValue1[1]; - occValue[occIndex * 4 + 2] = (tempOccValue0[2] << 16) | tempOccValue1[2]; - occValue[occIndex * 4 + 3] = (tempOccValue0[3] << 16) | tempOccValue1[3]; - tempOccValue0[0] = tempOccValue1[0]; - tempOccValue0[1] = tempOccValue1[1]; - tempOccValue0[2] = tempOccValue1[2]; - tempOccValue0[3] = tempOccValue1[3]; - sum = 0; - - occIndex++; - - for (j=0; j> 16]; - sum += decodeTable[c & 0x0000FFFF]; - bwtIndex++; - } - if (!DNA_OCC_SUM_EXCEPTION(sum)) { - tempOccValue0[0] += (sum & 0x000000FF); sum >>= 8; - tempOccValue0[1] += (sum & 0x000000FF); sum >>= 8; - tempOccValue0[2] += (sum & 0x000000FF); sum >>= 8; - tempOccValue0[3] += sum; - } else { - if (sum == 0x00000100) { - tempOccValue0[0] += 256; - } else if (sum == 0x00010000) { - tempOccValue0[1] += 256; - } else if (sum == 0x01000000) { - tempOccValue0[2] += 256; - } else { - tempOccValue0[3] += 256; - } - } - } - - occValueMajor[occMajorIndex * 4 + 0] = occValueMajor[(occMajorIndex - 1) * 4 + 0] + tempOccValue0[0]; - occValueMajor[occMajorIndex * 4 + 1] = occValueMajor[(occMajorIndex - 1) * 4 + 1] + tempOccValue0[1]; - occValueMajor[occMajorIndex * 4 + 2] = occValueMajor[(occMajorIndex - 1) * 4 + 2] + tempOccValue0[2]; - occValueMajor[occMajorIndex * 4 + 3] = occValueMajor[(occMajorIndex - 1) * 4 + 3] + tempOccValue0[3]; - tempOccValue0[0] = 0; - tempOccValue0[1] = 0; - tempOccValue0[2] = 0; - tempOccValue0[3] = 0; - - } - - while (occIndex < (numberOfOccValue-1)/2) { - sum = 0; - tempOccValue1[0] = tempOccValue0[0]; - tempOccValue1[1] = tempOccValue0[1]; - tempOccValue1[2] = tempOccValue0[2]; - tempOccValue1[3] = tempOccValue0[3]; - for (j=0; j> 16]; - sum += decodeTable[c & 0x0000FFFF]; - bwtIndex++; - } - if (!DNA_OCC_SUM_EXCEPTION(sum)) { - tempOccValue1[0] += (sum & 0x000000FF); sum >>= 8; - tempOccValue1[1] += (sum & 0x000000FF); sum >>= 8; - tempOccValue1[2] += (sum & 0x000000FF); sum >>= 8; - tempOccValue1[3] += sum; - } else { - if (sum == 0x00000100) { - tempOccValue1[0] += 256; - } else if (sum == 0x00010000) { - tempOccValue1[1] += 256; - } else if (sum == 0x01000000) { - tempOccValue1[2] += 256; - } else { - tempOccValue1[3] += 256; - } - } - occValue[occIndex * 4 + 0] = (tempOccValue0[0] << 16) | tempOccValue1[0]; - occValue[occIndex * 4 + 1] = (tempOccValue0[1] << 16) | tempOccValue1[1]; - occValue[occIndex * 4 + 2] = (tempOccValue0[2] << 16) | tempOccValue1[2]; - occValue[occIndex * 4 + 3] = (tempOccValue0[3] << 16) | tempOccValue1[3]; - tempOccValue0[0] = tempOccValue1[0]; - tempOccValue0[1] = tempOccValue1[1]; - tempOccValue0[2] = tempOccValue1[2]; - tempOccValue0[3] = tempOccValue1[3]; - sum = 0; - occIndex++; - - for (j=0; j> 16]; - sum += decodeTable[c & 0x0000FFFF]; - bwtIndex++; - } - if (!DNA_OCC_SUM_EXCEPTION(sum)) { - tempOccValue0[0] += (sum & 0x000000FF); sum >>= 8; - tempOccValue0[1] += (sum & 0x000000FF); sum >>= 8; - tempOccValue0[2] += (sum & 0x000000FF); sum >>= 8; - tempOccValue0[3] += sum; - } else { - if (sum == 0x00000100) { - tempOccValue0[0] += 256; - } else if (sum == 0x00010000) { - tempOccValue0[1] += 256; - } else if (sum == 0x01000000) { - tempOccValue0[2] += 256; - } else { - tempOccValue0[3] += 256; - } - } - } - - sum = 0; - tempOccValue1[0] = tempOccValue0[0]; - tempOccValue1[1] = tempOccValue0[1]; - tempOccValue1[2] = tempOccValue0[2]; - tempOccValue1[3] = tempOccValue0[3]; - - if (occIndex * 2 < numberOfOccValue - 1) { - for (j=0; j> 16]; - sum += decodeTable[c & 0x0000FFFF]; - bwtIndex++; - } - if (!DNA_OCC_SUM_EXCEPTION(sum)) { - tempOccValue1[0] += (sum & 0x000000FF); sum >>= 8; - tempOccValue1[1] += (sum & 0x000000FF); sum >>= 8; - tempOccValue1[2] += (sum & 0x000000FF); sum >>= 8; - tempOccValue1[3] += sum; - } else { - if (sum == 0x00000100) { - tempOccValue1[0] += 256; - } else if (sum == 0x00010000) { - tempOccValue1[1] += 256; - } else if (sum == 0x01000000) { - tempOccValue1[2] += 256; - } else { - tempOccValue1[3] += 256; - } - } - } - - occValue[occIndex * 4 + 0] = (tempOccValue0[0] << 16) | tempOccValue1[0]; - occValue[occIndex * 4 + 1] = (tempOccValue0[1] << 16) | tempOccValue1[1]; - occValue[occIndex * 4 + 2] = (tempOccValue0[2] << 16) | tempOccValue1[2]; - occValue[occIndex * 4 + 3] = (tempOccValue0[3] << 16) | tempOccValue1[3]; - -} - -static void BWTIncConstruct(BWTInc *bwtInc, const bgint_t numChar) -{ - unsigned int i; - bgint_t mergedBwtSizeInWord, mergedOccSizeInWord; - unsigned int firstCharInThisIteration; - - bgint_t *relativeRank, *seq, *sortedRank; - unsigned int *insertBwt, *mergedBwt; - bgint_t newInverseSa0RelativeRank, oldInverseSa0RelativeRank, newInverseSa0; - - mergedBwtSizeInWord = BWTResidentSizeInWord(bwtInc->bwt->textLength + numChar); - mergedOccSizeInWord = BWTOccValueMinorSizeInWord(bwtInc->bwt->textLength + numChar); - - initializeVAL_bg(bwtInc->cumulativeCountInCurrentBuild, ALPHABET_SIZE + 1, 0); - - if (bwtInc->bwt->textLength == 0) { // Initial build - - // Set address - seq = (bgint_t*)bwtInc->workingMemory; - relativeRank = seq + bwtInc->buildSize + 1; - // mergedBwt and packedTex may share memory - mergedBwt = insertBwt = bwtInc->workingMemory + bwtInc->availableWord - mergedBwtSizeInWord; // build in place - - assert((void*)(relativeRank + bwtInc->buildSize + 1) <= (void*)bwtInc->packedText); - assert((void*)(relativeRank + bwtInc->buildSize + 1) <= (void*)mergedBwt); - - // ->packedText is not used any more and may be overwritten by mergedBwt - BWTIncPutPackedTextToRank(bwtInc->packedText, relativeRank, bwtInc->cumulativeCountInCurrentBuild, numChar); - - firstCharInThisIteration = relativeRank[0]; - relativeRank[numChar] = 0; - - // Sort suffix - QSufSortSuffixSort((qsint_t*)relativeRank, (qsint_t*)seq, (qsint_t)numChar, (qsint_t)ALPHABET_SIZE - 1, 0, FALSE); - newInverseSa0 = relativeRank[0]; - - // Clear BWT area - initializeVAL(insertBwt, mergedBwtSizeInWord, 0); - - // Build BWT - BWTIncBuildPackedBwt(relativeRank, insertBwt, numChar, bwtInc->cumulativeCountInCurrentBuild, bwtInc->packedShift); - - // so that the cumulativeCount is not deducted - bwtInc->firstCharInLastIteration = ALPHABET_SIZE; - - } else { // Incremental build - // Set address - sortedRank = (bgint_t*)bwtInc->workingMemory; - seq = sortedRank + bwtInc->buildSize + 1; - insertBwt = (unsigned*)seq; // insertBwt and seq share memory - // relativeRank and ->packedText may share memory - relativeRank = seq + bwtInc->buildSize + 1; - - assert((void*)relativeRank <= (void*)bwtInc->packedText); - - // Store the first character of this iteration - firstCharInThisIteration = bwtInc->packedText[0] >> (BITS_IN_WORD - BIT_PER_CHAR); - - // Count occurrence of input text - ForwardDNAAllOccCountNoLimit(bwtInc->packedText, numChar, bwtInc->cumulativeCountInCurrentBuild + 1, bwtInc->bwt->decodeTable); - // Add the first character of the previous iteration to represent the inverseSa0 of the previous iteration - bwtInc->cumulativeCountInCurrentBuild[bwtInc->firstCharInLastIteration + 1]++; - bwtInc->cumulativeCountInCurrentBuild[2] += bwtInc->cumulativeCountInCurrentBuild[1]; - bwtInc->cumulativeCountInCurrentBuild[3] += bwtInc->cumulativeCountInCurrentBuild[2]; - bwtInc->cumulativeCountInCurrentBuild[4] += bwtInc->cumulativeCountInCurrentBuild[3]; - - // Get rank of new suffix among processed suffix - // The seq array is built into ALPHABET_SIZE + 2 groups; ALPHABET_SIZE groups + 1 group divided into 2 by inverseSa0 + inverseSa0 as 1 group - // ->packedText is not used any more and will be overwritten by relativeRank - oldInverseSa0RelativeRank = BWTIncGetAbsoluteRank(bwtInc->bwt, sortedRank, seq, bwtInc->packedText, - numChar, bwtInc->cumulativeCountInCurrentBuild, bwtInc->firstCharInLastIteration); - - // Sort rank by ALPHABET_SIZE + 2 groups (or ALPHABET_SIZE + 1 groups when inverseSa0 sit on the border of a group) - for (i=0; icumulativeCountInCurrentBuild[i] > oldInverseSa0RelativeRank || - bwtInc->cumulativeCountInCurrentBuild[i+1] <= oldInverseSa0RelativeRank) { - BWTIncSortKey(sortedRank + bwtInc->cumulativeCountInCurrentBuild[i], seq + bwtInc->cumulativeCountInCurrentBuild[i], bwtInc->cumulativeCountInCurrentBuild[i+1] - bwtInc->cumulativeCountInCurrentBuild[i]); - } else { - if (bwtInc->cumulativeCountInCurrentBuild[i] < oldInverseSa0RelativeRank) { - BWTIncSortKey(sortedRank + bwtInc->cumulativeCountInCurrentBuild[i], seq + bwtInc->cumulativeCountInCurrentBuild[i], oldInverseSa0RelativeRank - bwtInc->cumulativeCountInCurrentBuild[i]); - } - if (bwtInc->cumulativeCountInCurrentBuild[i+1] > oldInverseSa0RelativeRank + 1) { - BWTIncSortKey(sortedRank + oldInverseSa0RelativeRank + 1, seq + oldInverseSa0RelativeRank + 1, bwtInc->cumulativeCountInCurrentBuild[i+1] - oldInverseSa0RelativeRank - 1); - } - } - } - - // build relative rank; sortedRank is updated for merging to cater for the fact that $ is not encoded in bwt - // the cumulative freq information is used to make sure that inverseSa0 and suffix beginning with different characters are kept in different unsorted groups) - BWTIncBuildRelativeRank(sortedRank, seq, relativeRank, numChar, bwtInc->bwt->inverseSa0, bwtInc->cumulativeCountInCurrentBuild); - assert(relativeRank[numChar] == oldInverseSa0RelativeRank); - - // Sort suffix - QSufSortSuffixSort((qsint_t*)relativeRank, (qsint_t*)seq, (qsint_t)numChar, (qsint_t)numChar, 1, TRUE); - - newInverseSa0RelativeRank = relativeRank[0]; - newInverseSa0 = sortedRank[newInverseSa0RelativeRank] + newInverseSa0RelativeRank; - - sortedRank[newInverseSa0RelativeRank] = 0; // a special value so that this is skipped in the merged bwt - - // Build BWT; seq is overwritten by insertBwt - BWTIncBuildBwt(insertBwt, relativeRank, numChar, bwtInc->cumulativeCountInCurrentBuild); - - // Merge BWT; relativeRank may be overwritten by mergedBwt - mergedBwt = bwtInc->workingMemory + bwtInc->availableWord - mergedBwtSizeInWord - - bwtInc->numberOfIterationDone * OCC_INTERVAL / BIT_PER_CHAR * (sizeof(bgint_t) / 4); // minus numberOfIteration * occInterval to create a buffer for merging - assert(mergedBwt >= insertBwt + numChar); - BWTIncMergeBwt(sortedRank, bwtInc->bwt->bwtCode, insertBwt, mergedBwt, bwtInc->bwt->textLength, numChar); - } - - // Build auxiliary structure and update info and pointers in BWT - bwtInc->bwt->textLength += numChar; - bwtInc->bwt->bwtCode = mergedBwt; - bwtInc->bwt->bwtSizeInWord = mergedBwtSizeInWord; - bwtInc->bwt->occSizeInWord = mergedOccSizeInWord; - assert(mergedBwt >= bwtInc->workingMemory + mergedOccSizeInWord); - - bwtInc->bwt->occValue = mergedBwt - mergedOccSizeInWord; - - BWTClearTrailingBwtCode(bwtInc->bwt); - BWTGenerateOccValueFromBwt(bwtInc->bwt->bwtCode, bwtInc->bwt->occValue, bwtInc->bwt->occValueMajor, - bwtInc->bwt->textLength, bwtInc->bwt->decodeTable); - - bwtInc->bwt->inverseSa0 = newInverseSa0; - - bwtInc->bwt->cumulativeFreq[1] += bwtInc->cumulativeCountInCurrentBuild[1] - (bwtInc->firstCharInLastIteration <= 0); - bwtInc->bwt->cumulativeFreq[2] += bwtInc->cumulativeCountInCurrentBuild[2] - (bwtInc->firstCharInLastIteration <= 1); - bwtInc->bwt->cumulativeFreq[3] += bwtInc->cumulativeCountInCurrentBuild[3] - (bwtInc->firstCharInLastIteration <= 2); - bwtInc->bwt->cumulativeFreq[4] += bwtInc->cumulativeCountInCurrentBuild[4] - (bwtInc->firstCharInLastIteration <= 3); - - bwtInc->firstCharInLastIteration = firstCharInThisIteration; - - // Set build size and text address for the next build - BWTIncSetBuildSizeAndTextAddr(bwtInc); - bwtInc->numberOfIterationDone++; - -} - -BWTInc *BWTIncConstructFromPacked(const char *inputFileName, bgint_t initialMaxBuildSize, bgint_t incMaxBuildSize) -{ - - FILE *packedFile; - bgint_t packedFileLen; - bgint_t totalTextLength; - bgint_t textToLoad, textSizeInByte; - bgint_t processedTextLength; - unsigned char lastByteLength; - - BWTInc *bwtInc; - - packedFile = (FILE*)fopen(inputFileName, "rb"); - - if (packedFile == NULL) { - fprintf(stderr, "BWTIncConstructFromPacked() : Cannot open %s : %s\n", - inputFileName, strerror(errno)); - exit(1); - } - - if (fseek(packedFile, -1, SEEK_END) != 0) { - fprintf(stderr, "BWTIncConstructFromPacked() : Can't seek on %s : %s\n", - inputFileName, strerror(errno)); - exit(1); - } - packedFileLen = ftell(packedFile); - if (packedFileLen == -1) { - fprintf(stderr, "BWTIncConstructFromPacked() : Can't ftell on %s : %s\n", - inputFileName, strerror(errno)); - exit(1); - } - if (fread(&lastByteLength, sizeof(unsigned char), 1, packedFile) != 1) { - fprintf(stderr, - "BWTIncConstructFromPacked() : Can't read from %s : %s\n", - inputFileName, - ferror(packedFile)? strerror(errno) : "Unexpected end of file"); - exit(1); - } - totalTextLength = TextLengthFromBytePacked(packedFileLen, BIT_PER_CHAR, lastByteLength); - - bwtInc = BWTIncCreate(totalTextLength, initialMaxBuildSize, incMaxBuildSize); - - BWTIncSetBuildSizeAndTextAddr(bwtInc); - - if (bwtInc->buildSize > totalTextLength) { - textToLoad = totalTextLength; - } else { - textToLoad = totalTextLength - ((totalTextLength - bwtInc->buildSize + CHAR_PER_WORD - 1) / CHAR_PER_WORD * CHAR_PER_WORD); - } - textSizeInByte = textToLoad / CHAR_PER_BYTE; // excluded the odd byte - - if (fseek(packedFile, -((long)textSizeInByte + 2), SEEK_CUR) != 0) { - fprintf(stderr, "BWTIncConstructFromPacked() : Can't seek on %s : %s\n", - inputFileName, strerror(errno)); - exit(1); - } - if (fread(bwtInc->textBuffer, sizeof(unsigned char), textSizeInByte + 1, packedFile) != textSizeInByte + 1) { - fprintf(stderr, - "BWTIncConstructFromPacked() : Can't read from %s : %s\n", - inputFileName, - ferror(packedFile)? strerror(errno) : "Unexpected end of file"); - exit(1); - } - if (fseek(packedFile, -((long)textSizeInByte + 1), SEEK_CUR) != 0) { - fprintf(stderr, "BWTIncConstructFromPacked() : Can't seek on %s : %s\n", - inputFileName, strerror(errno)); - exit(1); - } - - ConvertBytePackedToWordPacked(bwtInc->textBuffer, bwtInc->packedText, ALPHABET_SIZE, textToLoad); - BWTIncConstruct(bwtInc, textToLoad); - - processedTextLength = textToLoad; - - while (processedTextLength < totalTextLength) { - textToLoad = bwtInc->buildSize / CHAR_PER_WORD * CHAR_PER_WORD; - if (textToLoad > totalTextLength - processedTextLength) { - textToLoad = totalTextLength - processedTextLength; - } - textSizeInByte = textToLoad / CHAR_PER_BYTE; - if (fseek(packedFile, -((long)textSizeInByte), SEEK_CUR) != 0) { - fprintf(stderr, "BWTIncConstructFromPacked() : Can't seek on %s : %s\n", - inputFileName, strerror(errno)); - exit(1); - } - if (fread(bwtInc->textBuffer, sizeof(unsigned char), textSizeInByte, packedFile) != textSizeInByte) { - fprintf(stderr, - "BWTIncConstructFromPacked() : Can't read from %s : %s\n", - inputFileName, - ferror(packedFile)? strerror(errno) : "Unexpected end of file"); - exit(1); - } - if (fseek(packedFile, -((long)textSizeInByte), SEEK_CUR) != 0) { - fprintf(stderr, "BWTIncConstructFromPacked() : Can't seek on %s : %s\n", - inputFileName, strerror(errno)); - exit(1); - } - ConvertBytePackedToWordPacked(bwtInc->textBuffer, bwtInc->packedText, ALPHABET_SIZE, textToLoad); - BWTIncConstruct(bwtInc, textToLoad); - processedTextLength += textToLoad; - if (bwtInc->numberOfIterationDone % 10 == 0) { - fprintf(stderr, "[BWTIncConstructFromPacked] %lu iterations done. %lu characters processed.\n", - (long)bwtInc->numberOfIterationDone, (long)processedTextLength); - } - } - return bwtInc; -} - -void BWTFree(BWT *bwt) -{ - if (bwt == 0) return; - free(bwt->cumulativeFreq); - free(bwt->bwtCode); - free(bwt->occValue); - free(bwt->occValueMajor); - free(bwt->decodeTable); - free(bwt); -} - -void BWTIncFree(BWTInc *bwtInc) -{ - if (bwtInc == 0) return; - free(bwtInc->bwt); - free(bwtInc->workingMemory); - free(bwtInc); -} - -static bgint_t BWTFileSizeInWord(const bgint_t numChar) -{ - // The $ in BWT at the position of inverseSa0 is not encoded - return (numChar + CHAR_PER_WORD - 1) / CHAR_PER_WORD; -} - -void BWTSaveBwtCodeAndOcc(const BWT *bwt, const char *bwtFileName, const char *occValueFileName) -{ - FILE *bwtFile; -/* FILE *occValueFile; */ - bgint_t bwtLength; - - bwtFile = (FILE*)fopen(bwtFileName, "wb"); - if (bwtFile == NULL) { - fprintf(stderr, - "BWTSaveBwtCodeAndOcc(): Cannot open %s for writing: %s\n", - bwtFileName, strerror(errno)); - exit(1); - } - - bwtLength = BWTFileSizeInWord(bwt->textLength); - - if (fwrite(&bwt->inverseSa0, sizeof(bgint_t), 1, bwtFile) != 1 - || fwrite(bwt->cumulativeFreq + 1, - sizeof(bgint_t), ALPHABET_SIZE, bwtFile) != ALPHABET_SIZE - || fwrite(bwt->bwtCode, - sizeof(unsigned int), bwtLength, bwtFile) != bwtLength) { - fprintf(stderr, "BWTSaveBwtCodeAndOcc(): Error writing to %s : %s\n", - bwtFileName, strerror(errno)); - exit(1); - } - if (fclose(bwtFile) != 0) { - fprintf(stderr, "BWTSaveBwtCodeAndOcc(): Error on closing %s : %s\n", - bwtFileName, strerror(errno)); - exit(1); - } -} - -void bwt_bwtgen2(const char *fn_pac, const char *fn_bwt, int block_size) -{ - BWTInc *bwtInc; - bwtInc = BWTIncConstructFromPacked(fn_pac, block_size, block_size); - printf("[bwt_gen] Finished constructing BWT in %u iterations.\n", bwtInc->numberOfIterationDone); - BWTSaveBwtCodeAndOcc(bwtInc->bwt, fn_bwt, 0); - BWTIncFree(bwtInc); -} - -void bwt_bwtgen(const char *fn_pac, const char *fn_bwt) -{ - bwt_bwtgen2(fn_pac, fn_bwt, 10000000); -} - -int bwt_bwtgen_main(int argc, char *argv[]) -{ - if (argc < 3) { - fprintf(stderr, "Usage: bwtgen \n"); - return 1; - } - bwt_bwtgen(argv[1], argv[2]); - return 0; -} - -#ifdef MAIN_BWT_GEN - -int main(int argc, char *argv[]) -{ - return bwt_bwtgen_main(argc, argv); -} - -#endif diff --git a/src/bwtindex.c b/src/bwtindex.c deleted file mode 100644 index 3a9630abc..000000000 --- a/src/bwtindex.c +++ /dev/null @@ -1,295 +0,0 @@ -/* The MIT License - - Copyright (c) 2008 Genome Research Ltd (GRL). - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -*/ - -/* Contact: Heng Li */ - -#include -#include -#include -#include -#include -#include -#include "bntseq.h" -#include "bwt.h" -#include "utils.h" - -#ifdef _DIVBWT -#include "divsufsort.h" -#endif - -#ifdef USE_MALLOC_WRAPPERS -# include "malloc_wrap.h" -#endif - - -int is_bwt(ubyte_t *T, int n); - -int64_t bwa_seq_len(const char *fn_pac) -{ - FILE *fp; - int64_t pac_len; - ubyte_t c; - fp = xopen(fn_pac, "rb"); - err_fseek(fp, -1, SEEK_END); - pac_len = err_ftell(fp); - err_fread_noeof(&c, 1, 1, fp); - err_fclose(fp); - return (pac_len - 1) * 4 + (int)c; -} - -bwt_t *bwt_pac2bwt(const char *fn_pac, int use_is) -{ - bwt_t *bwt; - ubyte_t *buf, *buf2; - int i, pac_size; - FILE *fp; - - // initialization - bwt = (bwt_t*)calloc(1, sizeof(bwt_t)); - bwt->seq_len = bwa_seq_len(fn_pac); - bwt->bwt_size = (bwt->seq_len + 15) >> 4; - fp = xopen(fn_pac, "rb"); - - // prepare sequence - pac_size = (bwt->seq_len>>2) + ((bwt->seq_len&3) == 0? 0 : 1); - buf2 = (ubyte_t*)calloc(pac_size, 1); - err_fread_noeof(buf2, 1, pac_size, fp); - err_fclose(fp); - memset(bwt->L2, 0, 5 * 4); - buf = (ubyte_t*)calloc(bwt->seq_len + 1, 1); - for (i = 0; i < bwt->seq_len; ++i) { - buf[i] = buf2[i>>2] >> ((3 - (i&3)) << 1) & 3; - ++bwt->L2[1+buf[i]]; - } - for (i = 2; i <= 4; ++i) bwt->L2[i] += bwt->L2[i-1]; - free(buf2); - - // Burrows-Wheeler Transform - if (use_is) { - bwt->primary = is_bwt(buf, bwt->seq_len); - } else { -#ifdef _DIVBWT - bwt->primary = divbwt(buf, buf, 0, bwt->seq_len); -#else - err_fatal_simple("libdivsufsort is not compiled in."); -#endif - } - bwt->bwt = (u_int32_t*)calloc(bwt->bwt_size, 4); - for (i = 0; i < bwt->seq_len; ++i) - bwt->bwt[i>>4] |= buf[i] << ((15 - (i&15)) << 1); - free(buf); - return bwt; -} - -int bwa_pac2bwt(int argc, char *argv[]) // the "pac2bwt" command; IMPORTANT: bwt generated at this step CANNOT be used with BWA. bwtupdate is required! -{ - bwt_t *bwt; - int c, use_is = 1; - while ((c = getopt(argc, argv, "d")) >= 0) { - switch (c) { - case 'd': use_is = 0; break; - default: return 1; - } - } - if (optind + 2 > argc) { - fprintf(stderr, "Usage: bwa pac2bwt [-d] \n"); - return 1; - } - bwt = bwt_pac2bwt(argv[optind], use_is); - bwt_dump_bwt(argv[optind+1], bwt); - bwt_destroy(bwt); - return 0; -} - -#define bwt_B00(b, k) ((b)->bwt[(k)>>4]>>((~(k)&0xf)<<1)&3) - -void bwt_bwtupdate_core(bwt_t *bwt) -{ - bwtint_t i, k, c[4], n_occ; - uint32_t *buf; - - n_occ = (bwt->seq_len + OCC_INTERVAL - 1) / OCC_INTERVAL + 1; - bwt->bwt_size += n_occ * sizeof(bwtint_t); // the new size - buf = (uint32_t*)calloc(bwt->bwt_size, 4); // will be the new bwt - c[0] = c[1] = c[2] = c[3] = 0; - for (i = k = 0; i < bwt->seq_len; ++i) { - if (i % OCC_INTERVAL == 0) { - memcpy(buf + k, c, sizeof(bwtint_t) * 4); - k += sizeof(bwtint_t); // in fact: sizeof(bwtint_t)=4*(sizeof(bwtint_t)/4) - } - if (i % 16 == 0) buf[k++] = bwt->bwt[i/16]; // 16 == sizeof(uint32_t)/2 - ++c[bwt_B00(bwt, i)]; - } - // the last element - memcpy(buf + k, c, sizeof(bwtint_t) * 4); - xassert(k + sizeof(bwtint_t) == bwt->bwt_size, "inconsistent bwt_size"); - // update bwt - free(bwt->bwt); bwt->bwt = buf; -} - -int bwa_bwtupdate(int argc, char *argv[]) // the "bwtupdate" command -{ - bwt_t *bwt; - if (argc < 2) { - fprintf(stderr, "Usage: bwa bwtupdate \n"); - return 1; - } - bwt = bwt_restore_bwt(argv[1]); - bwt_bwtupdate_core(bwt); - bwt_dump_bwt(argv[1], bwt); - bwt_destroy(bwt); - return 0; -} - -int bwa_bwt2sa(int argc, char *argv[]) // the "bwt2sa" command -{ - bwt_t *bwt; - int c, sa_intv = 32; - while ((c = getopt(argc, argv, "i:")) >= 0) { - switch (c) { - case 'i': sa_intv = atoi(optarg); break; - default: return 1; - } - } - if (optind + 2 > argc) { - fprintf(stderr, "Usage: bwa bwt2sa [-i %d] \n", sa_intv); - return 1; - } - bwt = bwt_restore_bwt(argv[optind]); - bwt_cal_sa(bwt, sa_intv); - bwt_dump_sa(argv[optind+1], bwt); - bwt_destroy(bwt); - return 0; -} - -int bwa_index(int argc, char *argv[]) // the "index" command -{ - extern void bwa_pac_rev_core(const char *fn, const char *fn_rev); - - char *prefix = 0, *str, *str2, *str3; - int c, algo_type = 0, is_64 = 0, block_size = 10000000; - int sa_sample_interval = 32; - clock_t t; - int64_t l_pac; - - while ((c = getopt(argc, argv, "6a:p:b:s:")) >= 0) { - switch (c) { - case 'a': // if -a is not set, algo_type will be determined later - if (strcmp(optarg, "div") == 0) algo_type = 1; - else if (strcmp(optarg, "bwtsw") == 0) algo_type = 2; - else if (strcmp(optarg, "is") == 0) algo_type = 3; - else err_fatal(__func__, "unknown algorithm: '%s'.", optarg); - break; - case 'p': prefix = strdup(optarg); break; - case '6': is_64 = 1; break; - case 's': sa_sample_interval = atoi(optarg); break; - case 'b': - block_size = strtol(optarg, &str, 10); - if (*str == 'G' || *str == 'g') block_size *= 1024 * 1024 * 1024; - else if (*str == 'M' || *str == 'm') block_size *= 1024 * 1024; - else if (*str == 'K' || *str == 'k') block_size *= 1024; - break; - default: return 1; - } - } - - if (optind + 1 > argc) { - fprintf(stderr, "\n"); - fprintf(stderr, "Usage: bwa index [options] \n\n"); - fprintf(stderr, "Options: -a STR BWT construction algorithm: bwtsw or is [auto]\n"); - fprintf(stderr, " -p STR prefix of the index [same as fasta name]\n"); - fprintf(stderr, " -b INT block size for the bwtsw algorithm (effective with -a bwtsw) [%d]\n", block_size); - fprintf(stderr, " -6 index files named as .64.* instead of .* \n"); - fprintf(stderr, "\n"); - fprintf(stderr, "Warning: `-a bwtsw' does not work for short genomes, while `-a is' and\n"); - fprintf(stderr, " `-a div' do not work not for long genomes.\n\n"); - return 1; - } - if (prefix == 0) { - prefix = malloc(strlen(argv[optind]) + 4); - strcpy(prefix, argv[optind]); - if (is_64) strcat(prefix, ".64"); - } - str = (char*)calloc(strlen(prefix) + 10, 1); - str2 = (char*)calloc(strlen(prefix) + 10, 1); - str3 = (char*)calloc(strlen(prefix) + 10, 1); - - { // nucleotide indexing - gzFile fp = xzopen(argv[optind], "r"); - t = clock(); - fprintf(stderr, "[bwa_index] Pack FASTA... "); - l_pac = bns_fasta2bntseq(fp, prefix, 0); - fprintf(stderr, "%.2f sec\n", (float)(clock() - t) / CLOCKS_PER_SEC); - err_gzclose(fp); - } - if (algo_type == 0) algo_type = l_pac > 50000000? 2 : 3; // set the algorithm for generating BWT - { - strcpy(str, prefix); strcat(str, ".pac"); - strcpy(str2, prefix); strcat(str2, ".bwt"); - t = clock(); - fprintf(stderr, "[bwa_index] Construct BWT for the packed sequence...\n"); - if (algo_type == 2) bwt_bwtgen2(str, str2, block_size); - else if (algo_type == 1 || algo_type == 3) { - bwt_t *bwt; - bwt = bwt_pac2bwt(str, algo_type == 3); - bwt_dump_bwt(str2, bwt); - bwt_destroy(bwt); - } - fprintf(stderr, "[bwa_index] %.2f seconds elapse.\n", (float)(clock() - t) / CLOCKS_PER_SEC); - } - { - bwt_t *bwt; - strcpy(str, prefix); strcat(str, ".bwt"); - t = clock(); - fprintf(stderr, "[bwa_index] Update BWT... "); - bwt = bwt_restore_bwt(str); - bwt_bwtupdate_core(bwt); - bwt_dump_bwt(str, bwt); - bwt_destroy(bwt); - fprintf(stderr, "%.2f sec\n", (float)(clock() - t) / CLOCKS_PER_SEC); - } - { - gzFile fp = xzopen(argv[optind], "r"); - t = clock(); - fprintf(stderr, "[bwa_index] Pack forward-only FASTA... "); - l_pac = bns_fasta2bntseq(fp, prefix, 1); - fprintf(stderr, "%.2f sec\n", (float)(clock() - t) / CLOCKS_PER_SEC); - err_gzclose(fp); - } - { - bwt_t *bwt; - strcpy(str, prefix); strcat(str, ".bwt"); - strcpy(str3, prefix); strcat(str3, ".sa"); - t = clock(); - fprintf(stderr, "[bwa_index] Construct SA from BWT and Occ... "); - bwt = bwt_restore_bwt(str); - bwt_cal_sa(bwt, sa_sample_interval); - bwt_dump_sa(str3, bwt); - bwt_destroy(bwt); - fprintf(stderr, "%.2f sec\n", (float)(clock() - t) / CLOCKS_PER_SEC); - } - free(str3); free(str2); free(str); free(prefix); - return 0; -} diff --git a/src/is.c b/src/is.c deleted file mode 100644 index 46f177245..000000000 --- a/src/is.c +++ /dev/null @@ -1,223 +0,0 @@ -/* - * sais.c for sais-lite - * Copyright (c) 2008 Yuta Mori All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -#include - -#ifdef USE_MALLOC_WRAPPERS -# include "malloc_wrap.h" -#endif - -typedef unsigned char ubyte_t; -#define chr(i) (cs == sizeof(int) ? ((const int *)T)[i]:((const unsigned char *)T)[i]) - -/* find the start or end of each bucket */ -static void getCounts(const unsigned char *T, int *C, int n, int k, int cs) -{ - int i; - for (i = 0; i < k; ++i) C[i] = 0; - for (i = 0; i < n; ++i) ++C[chr(i)]; -} -static void getBuckets(const int *C, int *B, int k, int end) -{ - int i, sum = 0; - if (end) { - for (i = 0; i < k; ++i) { - sum += C[i]; - B[i] = sum; - } - } else { - for (i = 0; i < k; ++i) { - sum += C[i]; - B[i] = sum - C[i]; - } - } -} - -/* compute SA */ -static void induceSA(const unsigned char *T, int *SA, int *C, int *B, int n, int k, int cs) -{ - int *b, i, j; - int c0, c1; - /* compute SAl */ - if (C == B) getCounts(T, C, n, k, cs); - getBuckets(C, B, k, 0); /* find starts of buckets */ - j = n - 1; - b = SA + B[c1 = chr(j)]; - *b++ = ((0 < j) && (chr(j - 1) < c1)) ? ~j : j; - for (i = 0; i < n; ++i) { - j = SA[i], SA[i] = ~j; - if (0 < j) { - --j; - if ((c0 = chr(j)) != c1) { - B[c1] = b - SA; - b = SA + B[c1 = c0]; - } - *b++ = ((0 < j) && (chr(j - 1) < c1)) ? ~j : j; - } - } - /* compute SAs */ - if (C == B) getCounts(T, C, n, k, cs); - getBuckets(C, B, k, 1); /* find ends of buckets */ - for (i = n - 1, b = SA + B[c1 = 0]; 0 <= i; --i) { - if (0 < (j = SA[i])) { - --j; - if ((c0 = chr(j)) != c1) { - B[c1] = b - SA; - b = SA + B[c1 = c0]; - } - *--b = ((j == 0) || (chr(j - 1) > c1)) ? ~j : j; - } else SA[i] = ~j; - } -} - -/* - * find the suffix array SA of T[0..n-1] in {0..k-1}^n use a working - * space (excluding T and SA) of at most 2n+O(1) for a constant alphabet - */ -static int sais_main(const unsigned char *T, int *SA, int fs, int n, int k, int cs) -{ - int *C, *B, *RA; - int i, j, c, m, p, q, plen, qlen, name; - int c0, c1; - int diff; - - /* stage 1: reduce the problem by at least 1/2 sort all the - * S-substrings */ - if (k <= fs) { - C = SA + n; - B = (k <= (fs - k)) ? C + k : C; - } else if ((C = B = (int *) malloc(k * sizeof(int))) == NULL) return -2; - getCounts(T, C, n, k, cs); - getBuckets(C, B, k, 1); /* find ends of buckets */ - for (i = 0; i < n; ++i) SA[i] = 0; - for (i = n - 2, c = 0, c1 = chr(n - 1); 0 <= i; --i, c1 = c0) { - if ((c0 = chr(i)) < (c1 + c)) c = 1; - else if (c != 0) SA[--B[c1]] = i + 1, c = 0; - } - induceSA(T, SA, C, B, n, k, cs); - if (fs < k) free(C); - /* compact all the sorted substrings into the first m items of SA - * 2*m must be not larger than n (proveable) */ - for (i = 0, m = 0; i < n; ++i) { - p = SA[i]; - if ((0 < p) && (chr(p - 1) > (c0 = chr(p)))) { - for (j = p + 1; (j < n) && (c0 == (c1 = chr(j))); ++j); - if ((j < n) && (c0 < c1)) SA[m++] = p; - } - } - for (i = m; i < n; ++i) SA[i] = 0; /* init the name array buffer */ - /* store the length of all substrings */ - for (i = n - 2, j = n, c = 0, c1 = chr(n - 1); 0 <= i; --i, c1 = c0) { - if ((c0 = chr(i)) < (c1 + c)) c = 1; - else if (c != 0) { - SA[m + ((i + 1) >> 1)] = j - i - 1; - j = i + 1; - c = 0; - } - } - /* find the lexicographic names of all substrings */ - for (i = 0, name = 0, q = n, qlen = 0; i < m; ++i) { - p = SA[i], plen = SA[m + (p >> 1)], diff = 1; - if (plen == qlen) { - for (j = 0; (j < plen) && (chr(p + j) == chr(q + j)); j++); - if (j == plen) diff = 0; - } - if (diff != 0) ++name, q = p, qlen = plen; - SA[m + (p >> 1)] = name; - } - - /* stage 2: solve the reduced problem recurse if names are not yet - * unique */ - if (name < m) { - RA = SA + n + fs - m; - for (i = n - 1, j = m - 1; m <= i; --i) { - if (SA[i] != 0) RA[j--] = SA[i] - 1; - } - if (sais_main((unsigned char *) RA, SA, fs + n - m * 2, m, name, sizeof(int)) != 0) return -2; - for (i = n - 2, j = m - 1, c = 0, c1 = chr(n - 1); 0 <= i; --i, c1 = c0) { - if ((c0 = chr(i)) < (c1 + c)) c = 1; - else if (c != 0) RA[j--] = i + 1, c = 0; /* get p1 */ - } - for (i = 0; i < m; ++i) SA[i] = RA[SA[i]]; /* get index */ - } - /* stage 3: induce the result for the original problem */ - if (k <= fs) { - C = SA + n; - B = (k <= (fs - k)) ? C + k : C; - } else if ((C = B = (int *) malloc(k * sizeof(int))) == NULL) return -2; - /* put all left-most S characters into their buckets */ - getCounts(T, C, n, k, cs); - getBuckets(C, B, k, 1); /* find ends of buckets */ - for (i = m; i < n; ++i) SA[i] = 0; /* init SA[m..n-1] */ - for (i = m - 1; 0 <= i; --i) { - j = SA[i], SA[i] = 0; - SA[--B[chr(j)]] = j; - } - induceSA(T, SA, C, B, n, k, cs); - if (fs < k) free(C); - return 0; -} - -/** - * Constructs the suffix array of a given string. - * @param T[0..n-1] The input string. - * @param SA[0..n] The output array of suffixes. - * @param n The length of the given string. - * @return 0 if no error occurred - */ -int is_sa(const ubyte_t *T, int *SA, int n) -{ - if ((T == NULL) || (SA == NULL) || (n < 0)) return -1; - SA[0] = n; - if (n <= 1) { - if (n == 1) SA[1] = 0; - return 0; - } - return sais_main(T, SA+1, 0, n, 256, 1); -} - -/** - * Constructs the burrows-wheeler transformed string of a given string. - * @param T[0..n-1] The input string. - * @param n The length of the given string. - * @return The primary index if no error occurred, -1 or -2 otherwise. - */ -int is_bwt(ubyte_t *T, int n) -{ - int *SA, i, primary = 0; - SA = (int*)calloc(n+1, sizeof(int)); - - if (is_sa(T, SA, n)) return -1; - - for (i = 0; i <= n; ++i) { - if (SA[i] == 0) primary = i; - else SA[i] = T[SA[i] - 1]; - } - for (i = 0; i < primary; ++i) T[i] = SA[i]; - for (; i < n; ++i) T[i] = SA[i + 1]; - free(SA); - return primary; -} From 31dbcff0b4b4c966a70018a0e959bf9e167d4331 Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 11:50:13 -0400 Subject: [PATCH 05/37] [SKIP CI] formatting --- src/SalmonQuantify.cpp | 269 +++++++++++++++++++++-------------------- 1 file changed, 136 insertions(+), 133 deletions(-) diff --git a/src/SalmonQuantify.cpp b/src/SalmonQuantify.cpp index fca236c61..feac995f5 100644 --- a/src/SalmonQuantify.cpp +++ b/src/SalmonQuantify.cpp @@ -1793,7 +1793,11 @@ void processReadsQuasi( /// DONE QUASI - +/** + * This functor makes it easy to invoke the appropriate template function + * for processing the reads, generalizing over the library type and read type + * (e.g. single vs. paired end). + **/ class ProcessFunctor { private: ReadExperimentT& readExp_; @@ -1857,21 +1861,20 @@ class ProcessFunctor { template void operator()(size_t i, ParserT& parserPtr, IndexT* index) { - if (salmonOpts_.qmFileName != "" and i == 0) { - rapmap::utils::writeSAMHeader(*index, - salmonOpts_.qmLog); - } - auto threadFun = [&, i]() -> void { - processReadsQuasi( - parserPtr.get(), readExp_, rl_, structureVec_[i], - numObservedFragments_, numAssignedFragments_, validHits_, - upperBoundHits_, index, transcripts_, - fmCalc_, clusterForest_, fragLengthDist_, observedBiasParams_[i], - salmonOpts_, coverageThresh_, iomutex_, initialRound_, - burnedIn_, writeToCache_); - }; - threads_.emplace_back(threadFun); - } + if (salmonOpts_.qmFileName != "" and i == 0) { + rapmap::utils::writeSAMHeader(*index, salmonOpts_.qmLog); + } + auto threadFun = [&, i]() -> void { + processReadsQuasi( + parserPtr.get(), readExp_, rl_, structureVec_[i], + numObservedFragments_, numAssignedFragments_, validHits_, + upperBoundHits_, index, transcripts_, + fmCalc_, clusterForest_, fragLengthDist_, observedBiasParams_[i], + salmonOpts_, coverageThresh_, iomutex_, initialRound_, + burnedIn_, writeToCache_); + }; + threads_.emplace_back(threadFun); + } }; @@ -1997,8 +2000,9 @@ void processReadLibrary( burnedIn, writeToCache, threads); // If the read library is paired-end // ------ Paired-end -------- - bool isPairedEnd = rl.format().type == ReadType::PAIRED_END; - bool isSingleEnd = rl.format().type == ReadType::SINGLE_END; + bool isPairedEnd = rl.format().type == ReadType::PAIRED_END; + bool isSingleEnd = rl.format().type == ReadType::SINGLE_END; + if (isPairedEnd) { if (rl.mates1().size() != rl.mates2().size()) { @@ -2029,136 +2033,135 @@ void processReadLibrary( } switch (indexType) { - case SalmonIndexType::FMD: { - fmt::MemoryWriter infostr; - infostr << "This version of salmon does not support FMD indexing."; - throw std::invalid_argument(infostr.str()); - } break; - case SalmonIndexType::QUASI: { - // True if we have a 64-bit SA index, false otherwise - bool largeIndex = sidx->is64BitQuasi(); - bool perfectHashIndex = sidx->isPerfectHashQuasi(); - for (size_t i = 0; i < numThreads; ++i) { - // NOTE: we *must* capture i by value here, b/c it can (sometimes, does) - // change value before the lambda below is evaluated --- crazy! - if (largeIndex) { - if (perfectHashIndex) { // Perfect Hash - if (isPairedEnd) {processFunctor(i, pairedParserPtr, sidx->quasiIndexPerfectHash64());} - else if (isSingleEnd) {processFunctor(i, singleParserPtr, sidx->quasiIndexPerfectHash64()); + case SalmonIndexType::FMD: { + fmt::MemoryWriter infostr; + infostr << "This version of salmon does not support FMD indexing."; + throw std::invalid_argument(infostr.str()); + } break; + case SalmonIndexType::QUASI: { + // True if we have a 64-bit SA index, false otherwise + bool largeIndex = sidx->is64BitQuasi(); + bool perfectHashIndex = sidx->isPerfectHashQuasi(); + for (size_t i = 0; i < numThreads; ++i) { + // NOTE: we *must* capture i by value here, b/c it can (sometimes, does) + // change value before the lambda below is evaluated --- crazy! + if (largeIndex) { + if (perfectHashIndex) { // Perfect Hash + if (isPairedEnd) {processFunctor(i, pairedParserPtr, sidx->quasiIndexPerfectHash64());} + else if (isSingleEnd) {processFunctor(i, singleParserPtr, sidx->quasiIndexPerfectHash64());} + } else { // Dense Hash + if (isPairedEnd) {processFunctor(i, pairedParserPtr, sidx->quasiIndex64());} + else if (isSingleEnd) {processFunctor(i, singleParserPtr, sidx->quasiIndex64());} } - } else { // Dense Hash - if (isPairedEnd) {processFunctor(i, pairedParserPtr, sidx->quasiIndex64());} - else if (isSingleEnd) {processFunctor(i, singleParserPtr, sidx->quasiIndex64());} - } - } else { - if (perfectHashIndex) { // Perfect Hash - if (isPairedEnd) { processFunctor(i, pairedParserPtr, sidx->quasiIndexPerfectHash32()); } - else if (isSingleEnd) { processFunctor(i, singleParserPtr, sidx->quasiIndexPerfectHash32()); } - } else { // Dense Hash - if (isPairedEnd) { processFunctor(i, pairedParserPtr, sidx->quasiIndex32()); } - else if (isSingleEnd) { processFunctor(i, singleParserPtr, sidx->quasiIndex32()); } - } - } // End spawn current thread + } else { + if (perfectHashIndex) { // Perfect Hash + if (isPairedEnd) { processFunctor(i, pairedParserPtr, sidx->quasiIndexPerfectHash32()); } + else if (isSingleEnd) { processFunctor(i, singleParserPtr, sidx->quasiIndexPerfectHash32()); } + } else { // Dense Hash + if (isPairedEnd) { processFunctor(i, pairedParserPtr, sidx->quasiIndex32()); } + else if (isSingleEnd) { processFunctor(i, singleParserPtr, sidx->quasiIndex32()); } + } + } // End spawn current thread - } // End spawn all threads - } // End Quasi index + } // End spawn all threads + } // End Quasi index break; } // end switch - for (auto& t : threads) { - t.join(); - } + for (auto& t : threads) { + t.join(); + } - // If we don't have a sufficient number of assigned fragments, then - // complain here! - if (numAssignedFragments < salmonOpts.minRequiredFrags) { - readExp.setNumObservedFragments(numObservedFragments); - readExp.numAssignedFragmentsAtomic().store(numAssignedFragments); - double mappingRate = numAssignedFragments.load() / - static_cast(numObservedFragments.load()); - readExp.setEffectiveMappingRate(mappingRate); - throw InsufficientAssignedFragments(numAssignedFragments.load(), - salmonOpts.minRequiredFrags); - } + // If we don't have a sufficient number of assigned fragments, then + // complain here! + if (numAssignedFragments < salmonOpts.minRequiredFrags) { + readExp.setNumObservedFragments(numObservedFragments); + readExp.numAssignedFragmentsAtomic().store(numAssignedFragments); + double mappingRate = numAssignedFragments.load() / + static_cast(numObservedFragments.load()); + readExp.setEffectiveMappingRate(mappingRate); + throw InsufficientAssignedFragments(numAssignedFragments.load(), + salmonOpts.minRequiredFrags); + } - /** - * NOTE : test new el model in future - EffectiveLengthStats eel(numTxp); - for (auto& els : observedEffectiveLengths) { - eel.merge(els); - } - auto& transcripts = readExp.transcripts(); - for (size_t tid = 0; tid < numTxp; ++tid) { - auto el = eel.getExpectedEffectiveLength(tid); - auto countObs = eel.getObservedCount(tid); - if (countObs > salmonOpts.eelCountCutoff and el >= 1.0) { - transcripts[tid].setCachedLogEffectiveLength(std::log(el)); - } + /** + * NOTE : test new el model in future + EffectiveLengthStats eel(numTxp); + for (auto& els : observedEffectiveLengths) { + eel.merge(els); + } + auto& transcripts = readExp.transcripts(); + for (size_t tid = 0; tid < numTxp; ++tid) { + auto el = eel.getExpectedEffectiveLength(tid); + auto countObs = eel.getObservedCount(tid); + if (countObs > salmonOpts.eelCountCutoff and el >= 1.0) { + transcripts[tid].setCachedLogEffectiveLength(std::log(el)); } - **/ - - /** GC-fragment bias **/ - // Set the global distribution based on the sum of local - // distributions. - double gcFracFwd{0.0}; - double globalMass{salmon::math::LOG_0}; - double globalFwdMass{salmon::math::LOG_0}; - auto& globalGCMass = readExp.observedGC(); - for (auto& gcp : observedBiasParams) { - auto& gcm = gcp.observedGCMass; - globalGCMass.combineCounts(gcm); - - auto& fw = - readExp.readBiasModelObserved(salmon::utils::Direction::FORWARD); - auto& rc = readExp.readBiasModelObserved( - salmon::utils::Direction::REVERSE_COMPLEMENT); - - auto& fwloc = gcp.seqBiasModelFW; - auto& rcloc = gcp.seqBiasModelRC; - fw.combineCounts(fwloc); - rc.combineCounts(rcloc); + } + **/ - /** - * positional biases - **/ - auto& posBiasesFW = readExp.posBias(salmon::utils::Direction::FORWARD); - auto& posBiasesRC = - readExp.posBias(salmon::utils::Direction::REVERSE_COMPLEMENT); - for (size_t i = 0; i < posBiasesFW.size(); ++i) { - posBiasesFW[i].combine(gcp.posBiasFW[i]); - posBiasesRC[i].combine(gcp.posBiasRC[i]); - } - /* - for (size_t i = 0; i < fwloc.counts.size(); ++i) { - fw.counts[i] += fwloc.counts[i]; - rc.counts[i] += rcloc.counts[i]; - } - */ + /** GC-fragment bias **/ + // Set the global distribution based on the sum of local + // distributions. + double gcFracFwd{0.0}; + double globalMass{salmon::math::LOG_0}; + double globalFwdMass{salmon::math::LOG_0}; + auto& globalGCMass = readExp.observedGC(); + for (auto& gcp : observedBiasParams) { + auto& gcm = gcp.observedGCMass; + globalGCMass.combineCounts(gcm); + + auto& fw = + readExp.readBiasModelObserved(salmon::utils::Direction::FORWARD); + auto& rc = readExp.readBiasModelObserved( + salmon::utils::Direction::REVERSE_COMPLEMENT); + + auto& fwloc = gcp.seqBiasModelFW; + auto& rcloc = gcp.seqBiasModelRC; + fw.combineCounts(fwloc); + rc.combineCounts(rcloc); - globalMass = salmon::math::logAdd(globalMass, gcp.massFwd); - globalMass = salmon::math::logAdd(globalMass, gcp.massRC); - globalFwdMass = salmon::math::logAdd(globalFwdMass, gcp.massFwd); + /** + * positional biases + **/ + auto& posBiasesFW = readExp.posBias(salmon::utils::Direction::FORWARD); + auto& posBiasesRC = + readExp.posBias(salmon::utils::Direction::REVERSE_COMPLEMENT); + for (size_t i = 0; i < posBiasesFW.size(); ++i) { + posBiasesFW[i].combine(gcp.posBiasFW[i]); + posBiasesRC[i].combine(gcp.posBiasRC[i]); } - globalGCMass.normalize(); + /* + for (size_t i = 0; i < fwloc.counts.size(); ++i) { + fw.counts[i] += fwloc.counts[i]; + rc.counts[i] += rcloc.counts[i]; + } + */ - if (globalMass != salmon::math::LOG_0) { - if (globalFwdMass != salmon::math::LOG_0) { - gcFracFwd = std::exp(globalFwdMass - globalMass); - } - readExp.setGCFracForward(gcFracFwd); + globalMass = salmon::math::logAdd(globalMass, gcp.massFwd); + globalMass = salmon::math::logAdd(globalMass, gcp.massRC); + globalFwdMass = salmon::math::logAdd(globalFwdMass, gcp.massFwd); + } + globalGCMass.normalize(); + + if (globalMass != salmon::math::LOG_0) { + if (globalFwdMass != salmon::math::LOG_0) { + gcFracFwd = std::exp(globalFwdMass - globalMass); } + readExp.setGCFracForward(gcFracFwd); + } - // finalize the positional biases - if (salmonOpts.posBiasCorrect) { - auto& posBiasesFW = readExp.posBias(salmon::utils::Direction::FORWARD); - auto& posBiasesRC = - readExp.posBias(salmon::utils::Direction::REVERSE_COMPLEMENT); - for (size_t i = 0; i < posBiasesFW.size(); ++i) { - posBiasesFW[i].finalize(); - posBiasesRC[i].finalize(); - } + // finalize the positional biases + if (salmonOpts.posBiasCorrect) { + auto& posBiasesFW = readExp.posBias(salmon::utils::Direction::FORWARD); + auto& posBiasesRC = + readExp.posBias(salmon::utils::Direction::REVERSE_COMPLEMENT); + for (size_t i = 0; i < posBiasesFW.size(); ++i) { + posBiasesFW[i].finalize(); + posBiasesRC[i].finalize(); } - /** END GC-fragment bias **/ + } + /** END GC-fragment bias **/ } /** From 63d70efd1927535a8f2044f36938af5259327a48 Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 12:06:35 -0400 Subject: [PATCH 06/37] make tbb install directory if it doesn't exist --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 435f908ee..77bfeae38 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -510,7 +510,7 @@ ExternalProject_Add(libtbb PATCH_COMMAND "${TBB_PATCH_STEP}" CONFIGURE_COMMAND "" BUILD_COMMAND make ${QUIET_MAKE} CXXFLAGS=${TBB_CXXFLAGS} lambdas=1 compiler=${TBB_COMPILER} cfg=release tbb_build_prefix=LIBS - INSTALL_COMMAND sh -c "cp ${TBB_SOURCE_DIR}/build/LIBS_release/*.${SHARED_LIB_EXTENSION}* ${TBB_INSTALL_DIR}/lib && cp -r ${TBB_SOURCE_DIR}/include/* ${TBB_INSTALL_DIR}/include" + INSTALL_COMMAND sh -c "mkdir -p ${TBB_INSTALL_DIR}/include && mkdir -p ${TBB_INSTALL_DIR}/lib && cp ${TBB_SOURCE_DIR}/build/LIBS_release/*.${SHARED_LIB_EXTENSION}* ${TBB_INSTALL_DIR}/lib && cp -r ${TBB_SOURCE_DIR}/include/* ${TBB_INSTALL_DIR}/include" BUILD_IN_SOURCE 1 ) From d11cad1daebae13572a3405d1c25b733fa079bcf Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 14:12:55 -0400 Subject: [PATCH 07/37] Update .travis.yml try using boost package in Travis --- .travis.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 63873e7cb..9d1a438da 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,8 +7,11 @@ matrix: compiler : gcc-7 addons: apt: - sources: ['ubuntu-toolchain-r-test'] - packages: ['g++-7', 'gcc-7', 'cmake', 'cmake-data', 'zlib1g-dev', 'libbz2-dev'] + update: true + sources: + - sourceline: 'ppa:mhier/libboost-latest' + - ubuntu-toolchain-r-test + packages: ['g++-7', 'gcc-7', 'cmake', 'cmake-data', 'zlib1g-dev', 'libbz2-dev', 'boost1.67'] install: - export CXX="g++-7" @@ -23,7 +26,7 @@ install: script: - mkdir build - cd build - - cmake -DFETCH_BOOST=TRUE -DNO_RTM=TRUE .. + - cmake -DNO_RTM=TRUE .. - travis_wait 45 make - travis_wait make install - travis_wait make test VERBOSE=1 From 1f8b6bafd8b8c54e22421cedb22495ab29fa3320 Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 14:17:59 -0400 Subject: [PATCH 08/37] Update .travis.yml whitespace .... --- .travis.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9d1a438da..c9a08fa54 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,11 +7,11 @@ matrix: compiler : gcc-7 addons: apt: - update: true - sources: - - sourceline: 'ppa:mhier/libboost-latest' - - ubuntu-toolchain-r-test - packages: ['g++-7', 'gcc-7', 'cmake', 'cmake-data', 'zlib1g-dev', 'libbz2-dev', 'boost1.67'] + update: true + sources: + - sourceline: 'ppa:mhier/libboost-latest' + - ubuntu-toolchain-r-test + packages: ['g++-7', 'gcc-7', 'cmake', 'cmake-data', 'zlib1g-dev', 'libbz2-dev', 'boost1.67'] install: - export CXX="g++-7" From d70156656ba99b61f2d7061271dc933eaa061112 Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 14:24:43 -0400 Subject: [PATCH 09/37] Update .travis.yml cmake boost version dependencies are bad :( --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c9a08fa54..f4538f683 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,7 +26,7 @@ install: script: - mkdir build - cd build - - cmake -DNO_RTM=TRUE .. + - cmake -BOOST_INCLUDEDIR=/usr/include -DBOOST_LIBRARYDIR=/usr/lib -DNO_RTM=TRUE .. - travis_wait 45 make - travis_wait make install - travis_wait make test VERBOSE=1 From 5bce6327426d17a82ab4c53458d16f68e1cbd459 Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 14:28:45 -0400 Subject: [PATCH 10/37] Update .travis.yml forgot the 'D' --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index f4538f683..b5c01f35f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,7 +26,7 @@ install: script: - mkdir build - cd build - - cmake -BOOST_INCLUDEDIR=/usr/include -DBOOST_LIBRARYDIR=/usr/lib -DNO_RTM=TRUE .. + - cmake -DBOOST_INCLUDEDIR=/usr/include -DBOOST_LIBRARYDIR=/usr/lib -DNO_RTM=TRUE .. - travis_wait 45 make - travis_wait make install - travis_wait make test VERBOSE=1 From 6807580db00ba7b7ec786a506d1191cd12b77b84 Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 14:44:52 -0400 Subject: [PATCH 11/37] Update .travis.yml try for newer cmake --- .travis.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b5c01f35f..45d70c06f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,7 +11,7 @@ matrix: sources: - sourceline: 'ppa:mhier/libboost-latest' - ubuntu-toolchain-r-test - packages: ['g++-7', 'gcc-7', 'cmake', 'cmake-data', 'zlib1g-dev', 'libbz2-dev', 'boost1.67'] + packages: ['g++-7', 'gcc-7', 'zlib1g-dev', 'libbz2-dev', 'boost1.67'] install: - export CXX="g++-7" @@ -22,6 +22,12 @@ install: - export PATH=$PWD/latest-gcc-symlinks:$PATH - export AR=gcc-ar-7 - export RANLIB=gcc-ranlib-7 + - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps" + - mkdir ${DEPS_DIR} && cd ${DEPS_DIR} + - travis_retry wget --no-check-certificate https://cmake.org/files/v3.12/cmake-3.12.0-Linux-x86_64.tar.gz + - tar -xzvf cmake-3.12.0-Linux-x86_64.tar.gz > /dev/null + - mv cmake-3.12.0-Linux-x86_64 cmake-install + - PATH=${DEPS_DIR}/cmake-install:${DEPS_DIR}/cmake-install/bin:$PATH script: - mkdir build From 15fc62a40cdda4b186213c3f057dac84e777a8df Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 14:50:25 -0400 Subject: [PATCH 12/37] Update .travis.yml move back to build dir. --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 45d70c06f..f32e5337c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,7 +28,8 @@ install: - tar -xzvf cmake-3.12.0-Linux-x86_64.tar.gz > /dev/null - mv cmake-3.12.0-Linux-x86_64 cmake-install - PATH=${DEPS_DIR}/cmake-install:${DEPS_DIR}/cmake-install/bin:$PATH - + - cd ${TRAVIS_BUILD_DIR} + script: - mkdir build - cd build From 11158c79334c17062688f6776cc3b59832c37aad Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 14:54:15 -0400 Subject: [PATCH 13/37] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index f32e5337c..ef624ac33 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,7 +33,7 @@ install: script: - mkdir build - cd build - - cmake -DBOOST_INCLUDEDIR=/usr/include -DBOOST_LIBRARYDIR=/usr/lib -DNO_RTM=TRUE .. + - cmake -DNO_RTM=TRUE .. - travis_wait 45 make - travis_wait make install - travis_wait make test VERBOSE=1 From bb9dc063288b384c1ec6dbf776ed2a69aa146f06 Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 14:58:57 -0400 Subject: [PATCH 14/37] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ef624ac33..c40e63e20 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,7 +33,7 @@ install: script: - mkdir build - cd build - - cmake -DNO_RTM=TRUE .. + - cmake -DFETCH_BOOST=TRUE -DNO_RTM=TRUE .. - travis_wait 45 make - travis_wait make install - travis_wait make test VERBOSE=1 From 5ae5fe586493a8b5f3f5ca10138429941d316668 Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 15:07:53 -0400 Subject: [PATCH 15/37] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c40e63e20..b8fb331d3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,7 +11,7 @@ matrix: sources: - sourceline: 'ppa:mhier/libboost-latest' - ubuntu-toolchain-r-test - packages: ['g++-7', 'gcc-7', 'zlib1g-dev', 'libbz2-dev', 'boost1.67'] + packages: ['g++-7', 'gcc-7', 'zlib1g-dev', 'libbz2-dev'] install: - export CXX="g++-7" From 83c0c2dd657c716ed72af98df46a5803dbe2cd04 Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 15:29:28 -0400 Subject: [PATCH 16/37] Update CMakeLists.txt --- CMakeLists.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 77bfeae38..9cc2765bb 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -380,6 +380,12 @@ elseif(FETCH_BOOST) INSTALL_COMMAND "" ) + ExternalProject_Add_Step(libboost makedir + COMMAND mkdir -p /build + COMMENT "Make build directory" + DEPENDEES download + DEPENDERS configure) + ## # After we've installed boost, ## @@ -403,7 +409,7 @@ if (BOOST_WILL_RECONFIGURE) set(Boost_FOUND TRUE) endif() - +message("BOOST ROOT = ${BOOST_ROOT}") message("BOOST INCLUDE DIR = ${Boost_INCLUDE_DIR}") message("BOOST INCLUDE DIRS = ${Boost_INCLUDE_DIRS}") message("BOOST LIB DIR = ${Boost_LIBRARY_DIRS}") From 67f54369b2aae01a6b168ac286d62386e46370ba Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 15:41:36 -0400 Subject: [PATCH 17/37] Update CMakeLists.txt --- CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9cc2765bb..8219f078f 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -527,6 +527,9 @@ ExternalProject_Add_Step(libtbb reconfigure ) set (FETCHED_TBB TRUE) +if (${FETCHED_BOOST}) + add_dependencies(libtbb libboost) +endif() endif() ## From 555c6626269e36278b019f569dc7a56adece43c7 Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 16:09:08 -0400 Subject: [PATCH 18/37] Update .travis.yml dump more info on failure --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b8fb331d3..5f0ce4679 100644 --- a/.travis.yml +++ b/.travis.yml @@ -43,7 +43,7 @@ after_success: - ./scripts/push-binary.sh after_failure: - - cat $TRAVIS_BUILD_DIR/build/Testing/Temporary/LastTest.log + - cat $TRAVIS_BUILD_DIR/build/Testing/Temporary/* #whitelist #sudo: required From 8c87dce4d879a585559ef562f84e3b27e82218cf Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 16:42:52 -0400 Subject: [PATCH 19/37] Update .travis.yml --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 5f0ce4679..9a5cfcccd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -36,6 +36,7 @@ script: - cmake -DFETCH_BOOST=TRUE -DNO_RTM=TRUE .. - travis_wait 45 make - travis_wait make install + - LD_LIBRARY_PATH=${TRAVIS_BUILD_DIR}/lib:$LD_LIBRARY_PATH - travis_wait make test VERBOSE=1 after_success: @@ -43,6 +44,8 @@ after_success: - ./scripts/push-binary.sh after_failure: + - echo "Failure" + - ls -laR $TRAVIS_BUILD_DIR/build/Testing/ - cat $TRAVIS_BUILD_DIR/build/Testing/Temporary/* #whitelist From 61b67cf9a4bd50a1657f1f37a2e87477efeaab90 Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 17:14:31 -0400 Subject: [PATCH 20/37] Update .travis.yml --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 9a5cfcccd..66671caa9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,6 +37,7 @@ script: - travis_wait 45 make - travis_wait make install - LD_LIBRARY_PATH=${TRAVIS_BUILD_DIR}/lib:$LD_LIBRARY_PATH + - ./src/salmon -h - travis_wait make test VERBOSE=1 after_success: From 53b63bf051422718ae88a113debd0ed6c2a64d7e Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 17:41:14 -0400 Subject: [PATCH 21/37] Update TestSalmonFMD.cmake dohh --- cmake/TestSalmonFMD.cmake | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cmake/TestSalmonFMD.cmake b/cmake/TestSalmonFMD.cmake index ff40e4ab9..e764d0957 100644 --- a/cmake/TestSalmonFMD.cmake +++ b/cmake/TestSalmonFMD.cmake @@ -7,6 +7,15 @@ if (TAR_RESULT) message(FATAL_ERROR "Error untarring sample_data.tgz") endif() +execute_process(COMMAND tar xzvf sample_data.tgz + WORKING_DIRECTORY ${TOPLEVEL_DIR} + RESULT_VARIABLE TAR_RESULT + ) + +if (TAR_RESULT) + message(FATAL_ERROR "Error untarring sample_data.tgz") +endif() + set(SALMON_FMD_INDEX_CMD ${CMAKE_BINARY_DIR}/salmon index -t transcripts.fasta -i sample_salmon_fmd_index --type fmd) execute_process(COMMAND ${SALMON_FMD_INDEX_CMD} WORKING_DIRECTORY ${TOPLEVEL_DIR}/sample_data From 1a2b4ecf36df183c735cb932a1ef6845aed2f895 Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 18:13:23 -0400 Subject: [PATCH 22/37] [CI SKIP] --- cmake/TestSalmonFMD.cmake | 9 --------- 1 file changed, 9 deletions(-) diff --git a/cmake/TestSalmonFMD.cmake b/cmake/TestSalmonFMD.cmake index e764d0957..ff40e4ab9 100644 --- a/cmake/TestSalmonFMD.cmake +++ b/cmake/TestSalmonFMD.cmake @@ -7,15 +7,6 @@ if (TAR_RESULT) message(FATAL_ERROR "Error untarring sample_data.tgz") endif() -execute_process(COMMAND tar xzvf sample_data.tgz - WORKING_DIRECTORY ${TOPLEVEL_DIR} - RESULT_VARIABLE TAR_RESULT - ) - -if (TAR_RESULT) - message(FATAL_ERROR "Error untarring sample_data.tgz") -endif() - set(SALMON_FMD_INDEX_CMD ${CMAKE_BINARY_DIR}/salmon index -t transcripts.fasta -i sample_salmon_fmd_index --type fmd) execute_process(COMMAND ${SALMON_FMD_INDEX_CMD} WORKING_DIRECTORY ${TOPLEVEL_DIR}/sample_data From 53372e41f77fe11b17d2a51e18fbca778b863b8b Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 18:13:45 -0400 Subject: [PATCH 23/37] very dohh --- cmake/TestSalmonQuasi.cmake | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cmake/TestSalmonQuasi.cmake b/cmake/TestSalmonQuasi.cmake index 4b2f9d0ba..39befcd91 100644 --- a/cmake/TestSalmonQuasi.cmake +++ b/cmake/TestSalmonQuasi.cmake @@ -1,3 +1,12 @@ +execute_process(COMMAND tar xzvf sample_data.tgz + WORKING_DIRECTORY ${TOPLEVEL_DIR} + RESULT_VARIABLE TAR_RESULT + ) + +if (TAR_RESULT) + message(FATAL_ERROR "Error untarring sample_data.tgz") +endif() + set(SALMON_QUASI_INDEX_CMD ${CMAKE_BINARY_DIR}/salmon index -t transcripts.fasta -i sample_salmon_quasi_index --type quasi) execute_process(COMMAND ${SALMON_QUASI_INDEX_CMD} WORKING_DIRECTORY ${TOPLEVEL_DIR}/sample_data From ca22cec7f9f5e99bc4c3bf1fb2cc4102d034b11b Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Mon, 23 Jul 2018 22:01:36 -0400 Subject: [PATCH 24/37] [CI SKIP] update queue --- include/concurrentqueue.h | 7188 +++++++++++++++++-------------------- src/SalmonQuantify.cpp | 28 +- 2 files changed, 3369 insertions(+), 3847 deletions(-) diff --git a/include/concurrentqueue.h b/include/concurrentqueue.h index 64888ec63..aa046e52d 100644 --- a/include/concurrentqueue.h +++ b/include/concurrentqueue.h @@ -1,5 +1,5 @@ -// Provides a C++11 implementation of a multi-producer, multi-consumer lock-free -// queue. An overview, including benchmark results, is provided here: +// Provides a C++11 implementation of a multi-producer, multi-consumer lock-free queue. +// An overview, including benchmark results, is provided here: // http://moodycamel.com/blog/2014/a-fast-general-purpose-lock-free-queue-for-c++ // The full design is also described in excruciating detail at: // http://moodycamel.com/blog/2014/detailed-design-of-a-lock-free-queue @@ -8,33 +8,32 @@ // Copyright (c) 2013-2016, Cameron Desrochers. // All rights reserved. // -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: // -// - Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// - Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. +// - Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// - Redistributions in binary form must reproduce the above copyright notice, this list of +// conditions and the following disclaimer in the documentation and/or other materials +// provided with the distribution. // -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +// OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +// TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + #pragma once #if defined(__GNUC__) // Disable -Wconversion warnings (spuriously triggered when Traits::size_t and -// Traits::index_t are set to < 32 bits, causing integer promotion, causing -// warnings upon assigning any computed values) +// Traits::index_t are set to < 32 bits, causing integer promotion, causing warnings +// upon assigning any computed values) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" @@ -50,111 +49,91 @@ #ifdef MCDBGQ_USE_RELACY #include "relacy/relacy_std.hpp" #include "relacy_shims.h" -// We only use malloc/free anyway, and the delete macro messes up `= delete` -// method declarations. We'll override the default trait malloc ourselves -// without a macro. +// We only use malloc/free anyway, and the delete macro messes up `= delete` method declarations. +// We'll override the default trait malloc ourselves without a macro. #undef new #undef delete #undef malloc #undef free #else -#include // Requires C++11. Sorry VS2010. +#include // Requires C++11. Sorry VS2010. #include #endif -#include -#include -#include // for CHAR_BIT -#include // for max_align_t +#include // for max_align_t #include #include -#include -#include // partly for __WINPTHREADS_VERSION if on MinGW-w64 w/ POSIX threading #include +#include #include - -// Platform-specific definitions of a numeric thread ID type and an invalid -// value -namespace moodycamel { -namespace details { -template struct thread_id_converter { - typedef thread_id_t thread_id_numeric_size_t; - typedef thread_id_t thread_id_hash_t; - static thread_id_hash_t prehash(thread_id_t const& x) { return x; } -}; -} // namespace details -} // namespace moodycamel +#include +#include // for CHAR_BIT +#include +#include // partly for __WINPTHREADS_VERSION if on MinGW-w64 w/ POSIX threading + +// Platform-specific definitions of a numeric thread ID type and an invalid value +namespace moodycamel { namespace details { + template struct thread_id_converter { + typedef thread_id_t thread_id_numeric_size_t; + typedef thread_id_t thread_id_hash_t; + static thread_id_hash_t prehash(thread_id_t const& x) { return x; } + }; +} } #if defined(MCDBGQ_USE_RELACY) -namespace moodycamel { -namespace details { -typedef std::uint32_t thread_id_t; -static const thread_id_t invalid_thread_id = 0xFFFFFFFFU; -static const thread_id_t invalid_thread_id2 = 0xFFFFFFFEU; -static inline thread_id_t thread_id() { return rl::thread_index(); } -} // namespace details -} // namespace moodycamel +namespace moodycamel { namespace details { + typedef std::uint32_t thread_id_t; + static const thread_id_t invalid_thread_id = 0xFFFFFFFFU; + static const thread_id_t invalid_thread_id2 = 0xFFFFFFFEU; + static inline thread_id_t thread_id() { return rl::thread_index(); } +} } #elif defined(_WIN32) || defined(__WINDOWS__) || defined(__WIN32__) -// No sense pulling in windows.h in a header, we'll manually declare the -// function we use and rely on backwards-compatibility for this not to break -extern "C" __declspec(dllimport) unsigned long __stdcall GetCurrentThreadId( - void); -namespace moodycamel { -namespace details { -static_assert(sizeof(unsigned long) == sizeof(std::uint32_t), - "Expected size of unsigned long to be 32 bits on Windows"); -typedef std::uint32_t thread_id_t; -static const thread_id_t invalid_thread_id = - 0; // See http://blogs.msdn.com/b/oldnewthing/archive/2004/02/23/78395.aspx -static const thread_id_t invalid_thread_id2 = - 0xFFFFFFFFU; // Not technically guaranteed to be invalid, but is never used - // in practice. Note that all Win32 thread IDs are presently - // multiples of 4. -static inline thread_id_t thread_id() { - return static_cast(::GetCurrentThreadId()); -} -} // namespace details -} // namespace moodycamel -#elif defined(__arm__) || defined(_M_ARM) || defined(__aarch64__) || \ - (defined(__APPLE__) && TARGET_OS_IPHONE) -namespace moodycamel { -namespace details { -static_assert(sizeof(std::thread::id) == 4 || sizeof(std::thread::id) == 8, - "std::thread::id is expected to be either 4 or 8 bytes"); - -typedef std::thread::id thread_id_t; -static const thread_id_t invalid_thread_id; // Default ctor creates invalid ID - -// Note we don't define a invalid_thread_id2 since std::thread::id doesn't have -// one; it's only used if MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED is defined -// anyway, which it won't be. -static inline thread_id_t thread_id() { return std::this_thread::get_id(); } - -template struct thread_id_size {}; -template <> struct thread_id_size<4> { typedef std::uint32_t numeric_t; }; -template <> struct thread_id_size<8> { typedef std::uint64_t numeric_t; }; - -template <> struct thread_id_converter { - typedef thread_id_size::numeric_t - thread_id_numeric_size_t; +// No sense pulling in windows.h in a header, we'll manually declare the function +// we use and rely on backwards-compatibility for this not to break +extern "C" __declspec(dllimport) unsigned long __stdcall GetCurrentThreadId(void); +namespace moodycamel { namespace details { + static_assert(sizeof(unsigned long) == sizeof(std::uint32_t), "Expected size of unsigned long to be 32 bits on Windows"); + typedef std::uint32_t thread_id_t; + static const thread_id_t invalid_thread_id = 0; // See http://blogs.msdn.com/b/oldnewthing/archive/2004/02/23/78395.aspx + static const thread_id_t invalid_thread_id2 = 0xFFFFFFFFU; // Not technically guaranteed to be invalid, but is never used in practice. Note that all Win32 thread IDs are presently multiples of 4. + static inline thread_id_t thread_id() { return static_cast(::GetCurrentThreadId()); } +} } +#elif defined(__arm__) || defined(_M_ARM) || defined(__aarch64__) || (defined(__APPLE__) && TARGET_OS_IPHONE) +namespace moodycamel { namespace details { + static_assert(sizeof(std::thread::id) == 4 || sizeof(std::thread::id) == 8, "std::thread::id is expected to be either 4 or 8 bytes"); + + typedef std::thread::id thread_id_t; + static const thread_id_t invalid_thread_id; // Default ctor creates invalid ID + + // Note we don't define a invalid_thread_id2 since std::thread::id doesn't have one; it's + // only used if MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED is defined anyway, which it won't + // be. + static inline thread_id_t thread_id() { return std::this_thread::get_id(); } + + template struct thread_id_size { }; + template<> struct thread_id_size<4> { typedef std::uint32_t numeric_t; }; + template<> struct thread_id_size<8> { typedef std::uint64_t numeric_t; }; + + template<> struct thread_id_converter { + typedef thread_id_size::numeric_t thread_id_numeric_size_t; #ifndef __APPLE__ - typedef std::size_t thread_id_hash_t; + typedef std::size_t thread_id_hash_t; #else - typedef thread_id_numeric_size_t thread_id_hash_t; + typedef thread_id_numeric_size_t thread_id_hash_t; #endif - static thread_id_hash_t prehash(thread_id_t const& x) { + static thread_id_hash_t prehash(thread_id_t const& x) + { #ifndef __APPLE__ - return std::hash()(x); + return std::hash()(x); #else - return *reinterpret_cast(&x); + return *reinterpret_cast(&x); #endif - } -}; -} // namespace details -} // namespace moodycamel + } + }; +} } #else // Use a nice trick from this answer: http://stackoverflow.com/a/8438730/21475 -// In order to get a numeric thread ID in a platform-independent way, we use a -// thread-local static variable's address as a thread identifier :-) +// In order to get a numeric thread ID in a platform-independent way, we use a thread-local +// static variable's address as a thread identifier :-) #if defined(__GNUC__) || defined(__INTEL_COMPILER) #define MOODYCAMEL_THREADLOCAL __thread #elif defined(_MSC_VER) @@ -163,34 +142,25 @@ template <> struct thread_id_converter { // Assume C++11 compliant compiler #define MOODYCAMEL_THREADLOCAL thread_local #endif -namespace moodycamel { -namespace details { -typedef std::uintptr_t thread_id_t; -static const thread_id_t invalid_thread_id = 0; // Address can't be nullptr -static const thread_id_t invalid_thread_id2 = - 1; // Member accesses off a null pointer are also generally invalid. Plus - // it's not aligned. -static inline thread_id_t thread_id() { - static MOODYCAMEL_THREADLOCAL int x; - return reinterpret_cast(&x); -} -} // namespace details -} // namespace moodycamel +namespace moodycamel { namespace details { + typedef std::uintptr_t thread_id_t; + static const thread_id_t invalid_thread_id = 0; // Address can't be nullptr + static const thread_id_t invalid_thread_id2 = 1; // Member accesses off a null pointer are also generally invalid. Plus it's not aligned. + static inline thread_id_t thread_id() { static MOODYCAMEL_THREADLOCAL int x; return reinterpret_cast(&x); } +} } #endif // Exceptions #ifndef MOODYCAMEL_EXCEPTIONS_ENABLED -#if (defined(_MSC_VER) && defined(_CPPUNWIND)) || \ - (defined(__GNUC__) && defined(__EXCEPTIONS)) || \ - (!defined(_MSC_VER) && !defined(__GNUC__)) +#if (defined(_MSC_VER) && defined(_CPPUNWIND)) || (defined(__GNUC__) && defined(__EXCEPTIONS)) || (!defined(_MSC_VER) && !defined(__GNUC__)) #define MOODYCAMEL_EXCEPTIONS_ENABLED #endif #endif #ifdef MOODYCAMEL_EXCEPTIONS_ENABLED #define MOODYCAMEL_TRY try -#define MOODYCAMEL_CATCH(...) catch (__VA_ARGS__) +#define MOODYCAMEL_CATCH(...) catch(__VA_ARGS__) #define MOODYCAMEL_RETHROW throw -#define MOODYCAMEL_THROW(expr) throw(expr) +#define MOODYCAMEL_THROW(expr) throw (expr) #else #define MOODYCAMEL_TRY if (true) #define MOODYCAMEL_CATCH(...) else if (false) @@ -204,40 +174,15 @@ static inline thread_id_t thread_id() { #define MOODYCAMEL_NOEXCEPT_CTOR(type, valueType, expr) true #define MOODYCAMEL_NOEXCEPT_ASSIGN(type, valueType, expr) true #elif defined(_MSC_VER) && defined(_NOEXCEPT) && _MSC_VER < 1800 -// VS2012's std::is_nothrow_[move_]constructible is broken and returns true when -// it shouldn't :-( We have to assume *all* non-trivial constructors may throw -// on VS2012! +// VS2012's std::is_nothrow_[move_]constructible is broken and returns true when it shouldn't :-( +// We have to assume *all* non-trivial constructors may throw on VS2012! #define MOODYCAMEL_NOEXCEPT _NOEXCEPT -#define MOODYCAMEL_NOEXCEPT_CTOR(type, valueType, expr) \ - (std::is_rvalue_reference::value && \ - std::is_move_constructible::value \ - ? std::is_trivially_move_constructible::value \ - : std::is_trivially_copy_constructible::value) -#define MOODYCAMEL_NOEXCEPT_ASSIGN(type, valueType, expr) \ - ((std::is_rvalue_reference::value && \ - std::is_move_assignable::value \ - ? std::is_trivially_move_assignable::value || \ - std::is_nothrow_move_assignable::value \ - : std::is_trivially_copy_assignable::value || \ - std::is_nothrow_copy_assignable::value) && \ - MOODYCAMEL_NOEXCEPT_CTOR(type, valueType, expr)) +#define MOODYCAMEL_NOEXCEPT_CTOR(type, valueType, expr) (std::is_rvalue_reference::value && std::is_move_constructible::value ? std::is_trivially_move_constructible::value : std::is_trivially_copy_constructible::value) +#define MOODYCAMEL_NOEXCEPT_ASSIGN(type, valueType, expr) ((std::is_rvalue_reference::value && std::is_move_assignable::value ? std::is_trivially_move_assignable::value || std::is_nothrow_move_assignable::value : std::is_trivially_copy_assignable::value || std::is_nothrow_copy_assignable::value) && MOODYCAMEL_NOEXCEPT_CTOR(type, valueType, expr)) #elif defined(_MSC_VER) && defined(_NOEXCEPT) && _MSC_VER < 1900 #define MOODYCAMEL_NOEXCEPT _NOEXCEPT -#define MOODYCAMEL_NOEXCEPT_CTOR(type, valueType, expr) \ - (std::is_rvalue_reference::value && \ - std::is_move_constructible::value \ - ? std::is_trivially_move_constructible::value || \ - std::is_nothrow_move_constructible::value \ - : std::is_trivially_copy_constructible::value || \ - std::is_nothrow_copy_constructible::value) -#define MOODYCAMEL_NOEXCEPT_ASSIGN(type, valueType, expr) \ - ((std::is_rvalue_reference::value && \ - std::is_move_assignable::value \ - ? std::is_trivially_move_assignable::value || \ - std::is_nothrow_move_assignable::value \ - : std::is_trivially_copy_assignable::value || \ - std::is_nothrow_copy_assignable::value) && \ - MOODYCAMEL_NOEXCEPT_CTOR(type, valueType, expr)) +#define MOODYCAMEL_NOEXCEPT_CTOR(type, valueType, expr) (std::is_rvalue_reference::value && std::is_move_constructible::value ? std::is_trivially_move_constructible::value || std::is_nothrow_move_constructible::value : std::is_trivially_copy_constructible::value || std::is_nothrow_copy_constructible::value) +#define MOODYCAMEL_NOEXCEPT_ASSIGN(type, valueType, expr) ((std::is_rvalue_reference::value && std::is_move_assignable::value ? std::is_trivially_move_assignable::value || std::is_nothrow_move_assignable::value : std::is_trivially_copy_assignable::value || std::is_nothrow_copy_assignable::value) && MOODYCAMEL_NOEXCEPT_CTOR(type, valueType, expr)) #else #define MOODYCAMEL_NOEXCEPT noexcept #define MOODYCAMEL_NOEXCEPT_CTOR(type, valueType, expr) noexcept(expr) @@ -249,29 +194,18 @@ static inline thread_id_t thread_id() { #ifdef MCDBGQ_USE_RELACY #define MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED #else -// VS2013 doesn't support `thread_local`, and MinGW-w64 w/ POSIX threading has a -// crippling bug: http://sourceforge.net/p/mingw-w64/bugs/445 g++ <=4.7 doesn't -// support thread_local either. Finally, iOS/ARM doesn't have support for it -// either, and g++/ARM allows it to compile but it's unconfirmed to actually -// work -#if (!defined(_MSC_VER) || _MSC_VER >= 1900) && \ - (!defined(__MINGW32__) && !defined(__MINGW64__) || \ - !defined(__WINPTHREADS_VERSION)) && \ - (!defined(__GNUC__) || __GNUC__ > 4 || \ - (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) && \ - (!defined(__APPLE__) || !TARGET_OS_IPHONE) && !defined(__arm__) && \ - !defined(_M_ARM) && !defined(__aarch64__) -// Assume `thread_local` is fully supported in all other C++11 -// compilers/platforms -//#define MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED // always disabled for now -//since several users report having problems with it on +// VS2013 doesn't support `thread_local`, and MinGW-w64 w/ POSIX threading has a crippling bug: http://sourceforge.net/p/mingw-w64/bugs/445 +// g++ <=4.7 doesn't support thread_local either. +// Finally, iOS/ARM doesn't have support for it either, and g++/ARM allows it to compile but it's unconfirmed to actually work +#if (!defined(_MSC_VER) || _MSC_VER >= 1900) && (!defined(__MINGW32__) && !defined(__MINGW64__) || !defined(__WINPTHREADS_VERSION)) && (!defined(__GNUC__) || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) && (!defined(__APPLE__) || !TARGET_OS_IPHONE) && !defined(__arm__) && !defined(_M_ARM) && !defined(__aarch64__) +// Assume `thread_local` is fully supported in all other C++11 compilers/platforms +//#define MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED // always disabled for now since several users report having problems with it on #endif #endif #endif -// VS2012 doesn't support deleted functions. -// In this case, we declare the function normally but don't define it. A link -// error will be generated if the function is called. +// VS2012 doesn't support deleted functions. +// In this case, we declare the function normally but don't define it. A link error will be generated if the function is called. #ifndef MOODYCAMEL_DELETE_FUNCTION #if defined(_MSC_VER) && _MSC_VER < 1800 #define MOODYCAMEL_DELETE_FUNCTION @@ -281,17 +215,15 @@ static inline thread_id_t thread_id() { #endif // Compiler-specific likely/unlikely hints -namespace moodycamel { -namespace details { +namespace moodycamel { namespace details { #if defined(__GNUC__) -inline bool likely(bool x) { return __builtin_expect((x), true); } -inline bool unlikely(bool x) { return __builtin_expect((x), false); } + static inline bool (likely)(bool x) { return __builtin_expect((x), true); } + static inline bool (unlikely)(bool x) { return __builtin_expect((x), false); } #else -inline bool likely(bool x) { return x; } -inline bool unlikely(bool x) { return x; } + static inline bool (likely)(bool x) { return x; } + static inline bool (unlikely)(bool x) { return x; } #endif -} -} // namespace moodycamel +} } #ifdef MOODYCAMEL_QUEUE_INTERNAL_DEBUG #include "internal/concurrentqueue_internal_debug.h" @@ -299,33 +231,28 @@ inline bool unlikely(bool x) { return x; } namespace moodycamel { namespace details { -template struct const_numeric_max { - static_assert(std::is_integral::value, - "const_numeric_max can only be used with integers"); - static const T value = - std::numeric_limits::is_signed - ? (static_cast(1) << (sizeof(T) * CHAR_BIT - 1)) - - static_cast(1) - : static_cast(-1); -}; - -#if defined(__GNUC__) && !defined(__clang__) -typedef ::max_align_t - std_max_align_t; // GCC forgot to add it to std:: for a while + template + struct const_numeric_max { + static_assert(std::is_integral::value, "const_numeric_max can only be used with integers"); + static const T value = std::numeric_limits::is_signed + ? (static_cast(1) << (sizeof(T) * CHAR_BIT - 1)) - static_cast(1) + : static_cast(-1); + }; + +#if defined(__GLIBCXX__) + typedef ::max_align_t std_max_align_t; // libstdc++ forgot to add it to std:: for a while #else -typedef std::max_align_t std_max_align_t; // Others (e.g. MSVC) insist it can - // *only* be accessed via std:: + typedef std::max_align_t std_max_align_t; // Others (e.g. MSVC) insist it can *only* be accessed via std:: #endif -// Some platforms have incorrectly set max_align_t to a type with <8 bytes -// alignment even while supporting 8-byte aligned scalar values (*cough* 32-bit -// iOS). Work around this with our own union. See issue #64. -typedef union { - std_max_align_t x; - long long y; - void* z; -} max_align_t; -} // namespace details + // Some platforms have incorrectly set max_align_t to a type with <8 bytes alignment even while supporting + // 8-byte aligned scalar values (*cough* 32-bit iOS). Work around this with our own union. See issue #64. + typedef union { + std_max_align_t x; + long long y; + void* z; + } max_align_t; +} // Default traits for the ConcurrentQueue. To change some of the // traits without re-implementing all of them, inherit from this @@ -333,89 +260,86 @@ typedef union { // since the traits are used as a template type parameter, the // shadowed declarations will be used where defined, and the defaults // otherwise. -struct ConcurrentQueueDefaultTraits { - // General-purpose size type. std::size_t is strongly recommended. - typedef std::size_t size_t; - - // The type used for the enqueue and dequeue indices. Must be at least as - // large as size_t. Should be significantly larger than the number of elements - // you expect to hold at once, especially if you have a high turnover rate; - // for example, on 32-bit x86, if you expect to have over a hundred million - // elements or pump several million elements through your queue in a very - // short space of time, using a 32-bit type *may* trigger a race condition. - // A 64-bit int type is recommended in that case, and in practice will - // prevent a race condition no matter the usage of the queue. Note that - // whether the queue is lock-free with a 64-int type depends on the whether - // std::atomic is lock-free, which is platform-specific. - typedef std::size_t index_t; - - // Internally, all elements are enqueued and dequeued from multi-element - // blocks; this is the smallest controllable unit. If you expect few elements - // but many producers, a smaller block size should be favoured. For few - // producers and/or many elements, a larger block size is preferred. A sane - // default is provided. Must be a power of 2. - static const size_t BLOCK_SIZE = 32; - - // For explicit producers (i.e. when using a producer token), the block is - // checked for being empty by iterating through a list of flags, one per - // element. For large block sizes, this is too inefficient, and switching to - // an atomic counter-based approach is faster. The switch is made for block - // sizes strictly larger than this threshold. - static const size_t EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD = 32; - - // How many full blocks can be expected for a single explicit producer? This - // should reflect that number's maximum for optimal performance. Must be a - // power of 2. - static const size_t EXPLICIT_INITIAL_INDEX_SIZE = 32; - - // How many full blocks can be expected for a single implicit producer? This - // should reflect that number's maximum for optimal performance. Must be a - // power of 2. - static const size_t IMPLICIT_INITIAL_INDEX_SIZE = 32; - - // The initial size of the hash table mapping thread IDs to implicit - // producers. Note that the hash is resized every time it becomes half full. - // Must be a power of two, and either 0 or at least 1. If 0, implicit - // production (using the enqueue methods without an explicit producer token) - // is disabled. - static const size_t INITIAL_IMPLICIT_PRODUCER_HASH_SIZE = 32; - - // Controls the number of items that an explicit consumer (i.e. one with a - // token) must consume before it causes all consumers to rotate and move on to - // the next internal queue. - static const std::uint32_t EXPLICIT_CONSUMER_CONSUMPTION_QUOTA_BEFORE_ROTATE = - 256; - - // The maximum number of elements (inclusive) that can be enqueued to a - // sub-queue. Enqueue operations that would cause this limit to be surpassed - // will fail. Note that this limit is enforced at the block level (for - // performance reasons), i.e. it's rounded up to the nearest block size. - static const size_t MAX_SUBQUEUE_SIZE = - details::const_numeric_max::value; - +struct ConcurrentQueueDefaultTraits +{ + // General-purpose size type. std::size_t is strongly recommended. + typedef std::size_t size_t; + + // The type used for the enqueue and dequeue indices. Must be at least as + // large as size_t. Should be significantly larger than the number of elements + // you expect to hold at once, especially if you have a high turnover rate; + // for example, on 32-bit x86, if you expect to have over a hundred million + // elements or pump several million elements through your queue in a very + // short space of time, using a 32-bit type *may* trigger a race condition. + // A 64-bit int type is recommended in that case, and in practice will + // prevent a race condition no matter the usage of the queue. Note that + // whether the queue is lock-free with a 64-int type depends on the whether + // std::atomic is lock-free, which is platform-specific. + typedef std::size_t index_t; + + // Internally, all elements are enqueued and dequeued from multi-element + // blocks; this is the smallest controllable unit. If you expect few elements + // but many producers, a smaller block size should be favoured. For few producers + // and/or many elements, a larger block size is preferred. A sane default + // is provided. Must be a power of 2. + static const size_t BLOCK_SIZE = 32; + + // For explicit producers (i.e. when using a producer token), the block is + // checked for being empty by iterating through a list of flags, one per element. + // For large block sizes, this is too inefficient, and switching to an atomic + // counter-based approach is faster. The switch is made for block sizes strictly + // larger than this threshold. + static const size_t EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD = 32; + + // How many full blocks can be expected for a single explicit producer? This should + // reflect that number's maximum for optimal performance. Must be a power of 2. + static const size_t EXPLICIT_INITIAL_INDEX_SIZE = 32; + + // How many full blocks can be expected for a single implicit producer? This should + // reflect that number's maximum for optimal performance. Must be a power of 2. + static const size_t IMPLICIT_INITIAL_INDEX_SIZE = 32; + + // The initial size of the hash table mapping thread IDs to implicit producers. + // Note that the hash is resized every time it becomes half full. + // Must be a power of two, and either 0 or at least 1. If 0, implicit production + // (using the enqueue methods without an explicit producer token) is disabled. + static const size_t INITIAL_IMPLICIT_PRODUCER_HASH_SIZE = 32; + + // Controls the number of items that an explicit consumer (i.e. one with a token) + // must consume before it causes all consumers to rotate and move on to the next + // internal queue. + static const std::uint32_t EXPLICIT_CONSUMER_CONSUMPTION_QUOTA_BEFORE_ROTATE = 256; + + // The maximum number of elements (inclusive) that can be enqueued to a sub-queue. + // Enqueue operations that would cause this limit to be surpassed will fail. Note + // that this limit is enforced at the block level (for performance reasons), i.e. + // it's rounded up to the nearest block size. + static const size_t MAX_SUBQUEUE_SIZE = details::const_numeric_max::value; + + #ifndef MCDBGQ_USE_RELACY -// Memory allocation can be customized if needed. -// malloc should return nullptr on failure, and handle alignment like -// std::malloc. + // Memory allocation can be customized if needed. + // malloc should return nullptr on failure, and handle alignment like std::malloc. #if defined(malloc) || defined(free) - // Gah, this is 2015, stop defining macros that break standard code already! - // Work around malloc/free being special macros: - static inline void* WORKAROUND_malloc(size_t size) { return malloc(size); } - static inline void WORKAROUND_free(void* ptr) { return free(ptr); } - static inline void*(malloc)(size_t size) { return WORKAROUND_malloc(size); } - static inline void(free)(void* ptr) { return WORKAROUND_free(ptr); } + // Gah, this is 2015, stop defining macros that break standard code already! + // Work around malloc/free being special macros: + static inline void* WORKAROUND_malloc(size_t size) { return malloc(size); } + static inline void WORKAROUND_free(void* ptr) { return free(ptr); } + static inline void* (malloc)(size_t size) { return WORKAROUND_malloc(size); } + static inline void (free)(void* ptr) { return WORKAROUND_free(ptr); } #else - static inline void* malloc(size_t size) { return std::malloc(size); } - static inline void free(void* ptr) { return std::free(ptr); } + static inline void* malloc(size_t size) { return std::malloc(size); } + static inline void free(void* ptr) { return std::free(ptr); } #endif #else - // Debug versions when running under the Relacy race detector (ignore - // these in user code) - static inline void* malloc(size_t size) { return rl::rl_malloc(size, $); } - static inline void free(void* ptr) { return rl::rl_free(ptr, $); } + // Debug versions when running under the Relacy race detector (ignore + // these in user code) + static inline void* malloc(size_t size) { return rl::rl_malloc(size, $); } + static inline void free(void* ptr) { return rl::rl_free(ptr, $); } #endif }; + // When producing or consuming many elements, the most efficient way is to: // 1) Use one of the bulk-operation methods of the queue with a token // 2) Failing that, use the bulk-operation methods without a token @@ -426,3685 +350,3285 @@ struct ConcurrentQueueDefaultTraits { struct ProducerToken; struct ConsumerToken; -template class ConcurrentQueue; -template class BlockingConcurrentQueue; +template class ConcurrentQueue; +template class BlockingConcurrentQueue; class ConcurrentQueueTests; -namespace details { -struct ConcurrentQueueProducerTypelessBase { - ConcurrentQueueProducerTypelessBase* next; - std::atomic inactive; - ProducerToken* token; - - ConcurrentQueueProducerTypelessBase() - : next(nullptr), inactive(false), token(nullptr) {} -}; - -template struct _hash_32_or_64 { - static inline std::uint32_t hash(std::uint32_t h) { - // MurmurHash3 finalizer -- see - // https://code.google.com/p/smhasher/source/browse/trunk/MurmurHash3.cpp - // Since the thread ID is already unique, all we really want to do is - // propagate that uniqueness evenly across all the bits, so that we can use - // a subset of the bits while reducing collisions significantly - h ^= h >> 16; - h *= 0x85ebca6b; - h ^= h >> 13; - h *= 0xc2b2ae35; - return h ^ (h >> 16); - } -}; -template <> struct _hash_32_or_64<1> { - static inline std::uint64_t hash(std::uint64_t h) { - h ^= h >> 33; - h *= 0xff51afd7ed558ccd; - h ^= h >> 33; - h *= 0xc4ceb9fe1a85ec53; - return h ^ (h >> 33); - } -}; -template -struct hash_32_or_64 : public _hash_32_or_64<(size > 4)> {}; - -static inline size_t hash_thread_id(thread_id_t id) { - static_assert( - sizeof(thread_id_t) <= 8, - "Expected a platform where thread IDs are at most 64-bit values"); - return static_cast( - hash_32_or_64::thread_id_hash_t)>:: - hash(thread_id_converter::prehash(id))); -} -template static inline bool circular_less_than(T a, T b) { +namespace details +{ + struct ConcurrentQueueProducerTypelessBase + { + ConcurrentQueueProducerTypelessBase* next; + std::atomic inactive; + ProducerToken* token; + + ConcurrentQueueProducerTypelessBase() + : next(nullptr), inactive(false), token(nullptr) + { + } + }; + + template struct _hash_32_or_64 { + static inline std::uint32_t hash(std::uint32_t h) + { + // MurmurHash3 finalizer -- see https://code.google.com/p/smhasher/source/browse/trunk/MurmurHash3.cpp + // Since the thread ID is already unique, all we really want to do is propagate that + // uniqueness evenly across all the bits, so that we can use a subset of the bits while + // reducing collisions significantly + h ^= h >> 16; + h *= 0x85ebca6b; + h ^= h >> 13; + h *= 0xc2b2ae35; + return h ^ (h >> 16); + } + }; + template<> struct _hash_32_or_64<1> { + static inline std::uint64_t hash(std::uint64_t h) + { + h ^= h >> 33; + h *= 0xff51afd7ed558ccd; + h ^= h >> 33; + h *= 0xc4ceb9fe1a85ec53; + return h ^ (h >> 33); + } + }; + template struct hash_32_or_64 : public _hash_32_or_64<(size > 4)> { }; + + static inline size_t hash_thread_id(thread_id_t id) + { + static_assert(sizeof(thread_id_t) <= 8, "Expected a platform where thread IDs are at most 64-bit values"); + return static_cast(hash_32_or_64::thread_id_hash_t)>::hash( + thread_id_converter::prehash(id))); + } + + template + static inline bool circular_less_than(T a, T b) + { #ifdef _MSC_VER #pragma warning(push) -#pragma warning(disable : 4554) +#pragma warning(disable: 4554) #endif - static_assert(std::is_integral::value && - !std::numeric_limits::is_signed, - "circular_less_than is intended to be used only with unsigned " - "integer types"); - return static_cast(a - b) > - static_cast(static_cast(1) - << static_cast(sizeof(T) * CHAR_BIT - 1)); + static_assert(std::is_integral::value && !std::numeric_limits::is_signed, "circular_less_than is intended to be used only with unsigned integer types"); + return static_cast(a - b) > static_cast(static_cast(1) << static_cast(sizeof(T) * CHAR_BIT - 1)); #ifdef _MSC_VER #pragma warning(pop) #endif -} - -template static inline char* align_for(char* ptr) { - const std::size_t alignment = std::alignment_of::value; - return ptr + - (alignment - (reinterpret_cast(ptr) % alignment)) % - alignment; -} - -template static inline T ceil_to_pow_2(T x) { - static_assert( - std::is_integral::value && !std::numeric_limits::is_signed, - "ceil_to_pow_2 is intended to be used only with unsigned integer types"); - - // Adapted from - // http://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2 - --x; - x |= x >> 1; - x |= x >> 2; - x |= x >> 4; - for (std::size_t i = 1; i < sizeof(T); i <<= 1) { - x |= x >> (i << 3); - } - ++x; - return x; -} - -template -static inline void swap_relaxed(std::atomic& left, std::atomic& right) { - T temp = std::move(left.load(std::memory_order_relaxed)); - left.store(std::move(right.load(std::memory_order_relaxed)), - std::memory_order_relaxed); - right.store(std::move(temp), std::memory_order_relaxed); -} - -template static inline T const& nomove(T const& x) { return x; } - -template struct nomove_if { - template static inline T const& eval(T const& x) { return x; } -}; - -template <> struct nomove_if { - template - static inline auto eval(U&& x) -> decltype(std::forward(x)) { - return std::forward(x); - } -}; - -template -static inline auto deref_noexcept(It& it) MOODYCAMEL_NOEXCEPT -> decltype(*it) { - return *it; -} - -#if defined(__clang__) || !defined(__GNUC__) || __GNUC__ > 4 || \ - (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) -template -struct is_trivially_destructible : std::is_trivially_destructible {}; + } + + template + static inline char* align_for(char* ptr) + { + const std::size_t alignment = std::alignment_of::value; + return ptr + (alignment - (reinterpret_cast(ptr) % alignment)) % alignment; + } + + template + static inline T ceil_to_pow_2(T x) + { + static_assert(std::is_integral::value && !std::numeric_limits::is_signed, "ceil_to_pow_2 is intended to be used only with unsigned integer types"); + + // Adapted from http://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2 + --x; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + for (std::size_t i = 1; i < sizeof(T); i <<= 1) { + x |= x >> (i << 3); + } + ++x; + return x; + } + + template + static inline void swap_relaxed(std::atomic& left, std::atomic& right) + { + T temp = std::move(left.load(std::memory_order_relaxed)); + left.store(std::move(right.load(std::memory_order_relaxed)), std::memory_order_relaxed); + right.store(std::move(temp), std::memory_order_relaxed); + } + + template + static inline T const& nomove(T const& x) + { + return x; + } + + template + struct nomove_if + { + template + static inline T const& eval(T const& x) + { + return x; + } + }; + + template<> + struct nomove_if + { + template + static inline auto eval(U&& x) + -> decltype(std::forward(x)) + { + return std::forward(x); + } + }; + + template + static inline auto deref_noexcept(It& it) MOODYCAMEL_NOEXCEPT -> decltype(*it) + { + return *it; + } + +#if defined(__clang__) || !defined(__GNUC__) || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) + template struct is_trivially_destructible : std::is_trivially_destructible { }; #else -template -struct is_trivially_destructible : std::has_trivial_destructor {}; + template struct is_trivially_destructible : std::has_trivial_destructor { }; #endif - + #ifdef MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED #ifdef MCDBGQ_USE_RELACY -typedef RelacyThreadExitListener ThreadExitListener; -typedef RelacyThreadExitNotifier ThreadExitNotifier; + typedef RelacyThreadExitListener ThreadExitListener; + typedef RelacyThreadExitNotifier ThreadExitNotifier; #else -struct ThreadExitListener { - typedef void (*callback_t)(void*); - callback_t callback; - void* userData; - - ThreadExitListener* next; // reserved for use by the ThreadExitNotifier -}; - -class ThreadExitNotifier { -public: - static void subscribe(ThreadExitListener* listener) { - auto& tlsInst = instance(); - listener->next = tlsInst.tail; - tlsInst.tail = listener; - } - - static void unsubscribe(ThreadExitListener* listener) { - auto& tlsInst = instance(); - ThreadExitListener** prev = &tlsInst.tail; - for (auto ptr = tlsInst.tail; ptr != nullptr; ptr = ptr->next) { - if (ptr == listener) { - *prev = ptr->next; - break; - } - prev = &ptr->next; - } - } - -private: - ThreadExitNotifier() : tail(nullptr) {} - ThreadExitNotifier(ThreadExitNotifier const&) MOODYCAMEL_DELETE_FUNCTION; - ThreadExitNotifier& - operator=(ThreadExitNotifier const&) MOODYCAMEL_DELETE_FUNCTION; - - ~ThreadExitNotifier() { - // This thread is about to exit, let everyone know! - assert(this == &instance() && - "If this assert fails, you likely have a buggy compiler! Change the " - "preprocessor conditions such that " - "MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED is no longer defined."); - for (auto ptr = tail; ptr != nullptr; ptr = ptr->next) { - ptr->callback(ptr->userData); - } - } - - // Thread-local - static inline ThreadExitNotifier& instance() { - static thread_local ThreadExitNotifier notifier; - return notifier; - } - -private: - ThreadExitListener* tail; -}; -#endif -#endif - -template struct static_is_lock_free_num { - enum { value = 0 }; -}; -template <> struct static_is_lock_free_num { - enum { value = ATOMIC_CHAR_LOCK_FREE }; -}; -template <> struct static_is_lock_free_num { - enum { value = ATOMIC_SHORT_LOCK_FREE }; -}; -template <> struct static_is_lock_free_num { - enum { value = ATOMIC_INT_LOCK_FREE }; -}; -template <> struct static_is_lock_free_num { - enum { value = ATOMIC_LONG_LOCK_FREE }; -}; -template <> struct static_is_lock_free_num { - enum { value = ATOMIC_LLONG_LOCK_FREE }; -}; -template -struct static_is_lock_free - : static_is_lock_free_num::type> {}; -template <> struct static_is_lock_free { - enum { value = ATOMIC_BOOL_LOCK_FREE }; -}; -template struct static_is_lock_free { - enum { value = ATOMIC_POINTER_LOCK_FREE }; -}; -} // namespace details - -struct ProducerToken { - template - explicit ProducerToken(ConcurrentQueue& queue); - - template - explicit ProducerToken(BlockingConcurrentQueue& queue); - - ProducerToken(ProducerToken&& other) MOODYCAMEL_NOEXCEPT - : producer(other.producer) { - other.producer = nullptr; - if (producer != nullptr) { - producer->token = this; - } - } - - inline ProducerToken& operator=(ProducerToken&& other) MOODYCAMEL_NOEXCEPT { - swap(other); - return *this; - } - - void swap(ProducerToken& other) MOODYCAMEL_NOEXCEPT { - std::swap(producer, other.producer); - if (producer != nullptr) { - producer->token = this; - } - if (other.producer != nullptr) { - other.producer->token = &other; - } - } - - // A token is always valid unless: - // 1) Memory allocation failed during construction - // 2) It was moved via the move constructor - // (Note: assignment does a swap, leaving both potentially valid) - // 3) The associated queue was destroyed - // Note that if valid() returns true, that only indicates - // that the token is valid for use with a specific queue, - // but not which one; that's up to the user to track. - inline bool valid() const { return producer != nullptr; } - - ~ProducerToken() { - if (producer != nullptr) { - producer->token = nullptr; - producer->inactive.store(true, std::memory_order_release); - } - } + struct ThreadExitListener + { + typedef void (*callback_t)(void*); + callback_t callback; + void* userData; + + ThreadExitListener* next; // reserved for use by the ThreadExitNotifier + }; + + + class ThreadExitNotifier + { + public: + static void subscribe(ThreadExitListener* listener) + { + auto& tlsInst = instance(); + listener->next = tlsInst.tail; + tlsInst.tail = listener; + } + + static void unsubscribe(ThreadExitListener* listener) + { + auto& tlsInst = instance(); + ThreadExitListener** prev = &tlsInst.tail; + for (auto ptr = tlsInst.tail; ptr != nullptr; ptr = ptr->next) { + if (ptr == listener) { + *prev = ptr->next; + break; + } + prev = &ptr->next; + } + } + + private: + ThreadExitNotifier() : tail(nullptr) { } + ThreadExitNotifier(ThreadExitNotifier const&) MOODYCAMEL_DELETE_FUNCTION; + ThreadExitNotifier& operator=(ThreadExitNotifier const&) MOODYCAMEL_DELETE_FUNCTION; + + ~ThreadExitNotifier() + { + // This thread is about to exit, let everyone know! + assert(this == &instance() && "If this assert fails, you likely have a buggy compiler! Change the preprocessor conditions such that MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED is no longer defined."); + for (auto ptr = tail; ptr != nullptr; ptr = ptr->next) { + ptr->callback(ptr->userData); + } + } + + // Thread-local + static inline ThreadExitNotifier& instance() + { + static thread_local ThreadExitNotifier notifier; + return notifier; + } + + private: + ThreadExitListener* tail; + }; +#endif +#endif + + template struct static_is_lock_free_num { enum { value = 0 }; }; + template<> struct static_is_lock_free_num { enum { value = ATOMIC_CHAR_LOCK_FREE }; }; + template<> struct static_is_lock_free_num { enum { value = ATOMIC_SHORT_LOCK_FREE }; }; + template<> struct static_is_lock_free_num { enum { value = ATOMIC_INT_LOCK_FREE }; }; + template<> struct static_is_lock_free_num { enum { value = ATOMIC_LONG_LOCK_FREE }; }; + template<> struct static_is_lock_free_num { enum { value = ATOMIC_LLONG_LOCK_FREE }; }; + template struct static_is_lock_free : static_is_lock_free_num::type> { }; + template<> struct static_is_lock_free { enum { value = ATOMIC_BOOL_LOCK_FREE }; }; + template struct static_is_lock_free { enum { value = ATOMIC_POINTER_LOCK_FREE }; }; +} - // Disable copying and assignment - ProducerToken(ProducerToken const&) MOODYCAMEL_DELETE_FUNCTION; - ProducerToken& operator=(ProducerToken const&) MOODYCAMEL_DELETE_FUNCTION; +struct ProducerToken +{ + template + explicit ProducerToken(ConcurrentQueue& queue); + + template + explicit ProducerToken(BlockingConcurrentQueue& queue); + + ProducerToken(ProducerToken&& other) MOODYCAMEL_NOEXCEPT + : producer(other.producer) + { + other.producer = nullptr; + if (producer != nullptr) { + producer->token = this; + } + } + + inline ProducerToken& operator=(ProducerToken&& other) MOODYCAMEL_NOEXCEPT + { + swap(other); + return *this; + } + + void swap(ProducerToken& other) MOODYCAMEL_NOEXCEPT + { + std::swap(producer, other.producer); + if (producer != nullptr) { + producer->token = this; + } + if (other.producer != nullptr) { + other.producer->token = &other; + } + } + + // A token is always valid unless: + // 1) Memory allocation failed during construction + // 2) It was moved via the move constructor + // (Note: assignment does a swap, leaving both potentially valid) + // 3) The associated queue was destroyed + // Note that if valid() returns true, that only indicates + // that the token is valid for use with a specific queue, + // but not which one; that's up to the user to track. + inline bool valid() const { return producer != nullptr; } + + ~ProducerToken() + { + if (producer != nullptr) { + producer->token = nullptr; + producer->inactive.store(true, std::memory_order_release); + } + } + + // Disable copying and assignment + ProducerToken(ProducerToken const&) MOODYCAMEL_DELETE_FUNCTION; + ProducerToken& operator=(ProducerToken const&) MOODYCAMEL_DELETE_FUNCTION; + private: - template friend class ConcurrentQueue; - friend class ConcurrentQueueTests; - + template friend class ConcurrentQueue; + friend class ConcurrentQueueTests; + protected: - details::ConcurrentQueueProducerTypelessBase* producer; + details::ConcurrentQueueProducerTypelessBase* producer; }; -struct ConsumerToken { - template - explicit ConsumerToken(ConcurrentQueue& q); - - template - explicit ConsumerToken(BlockingConcurrentQueue& q); - - ConsumerToken(ConsumerToken&& other) MOODYCAMEL_NOEXCEPT - : initialOffset(other.initialOffset), - lastKnownGlobalOffset(other.lastKnownGlobalOffset), - itemsConsumedFromCurrent(other.itemsConsumedFromCurrent), - currentProducer(other.currentProducer), - desiredProducer(other.desiredProducer) {} - - inline ConsumerToken& operator=(ConsumerToken&& other) MOODYCAMEL_NOEXCEPT { - swap(other); - return *this; - } - void swap(ConsumerToken& other) MOODYCAMEL_NOEXCEPT { - std::swap(initialOffset, other.initialOffset); - std::swap(lastKnownGlobalOffset, other.lastKnownGlobalOffset); - std::swap(itemsConsumedFromCurrent, other.itemsConsumedFromCurrent); - std::swap(currentProducer, other.currentProducer); - std::swap(desiredProducer, other.desiredProducer); - } - - // Disable copying and assignment - ConsumerToken(ConsumerToken const&) MOODYCAMEL_DELETE_FUNCTION; - ConsumerToken& operator=(ConsumerToken const&) MOODYCAMEL_DELETE_FUNCTION; +struct ConsumerToken +{ + template + explicit ConsumerToken(ConcurrentQueue& q); + + template + explicit ConsumerToken(BlockingConcurrentQueue& q); + + ConsumerToken(ConsumerToken&& other) MOODYCAMEL_NOEXCEPT + : initialOffset(other.initialOffset), lastKnownGlobalOffset(other.lastKnownGlobalOffset), itemsConsumedFromCurrent(other.itemsConsumedFromCurrent), currentProducer(other.currentProducer), desiredProducer(other.desiredProducer) + { + } + + inline ConsumerToken& operator=(ConsumerToken&& other) MOODYCAMEL_NOEXCEPT + { + swap(other); + return *this; + } + + void swap(ConsumerToken& other) MOODYCAMEL_NOEXCEPT + { + std::swap(initialOffset, other.initialOffset); + std::swap(lastKnownGlobalOffset, other.lastKnownGlobalOffset); + std::swap(itemsConsumedFromCurrent, other.itemsConsumedFromCurrent); + std::swap(currentProducer, other.currentProducer); + std::swap(desiredProducer, other.desiredProducer); + } + + // Disable copying and assignment + ConsumerToken(ConsumerToken const&) MOODYCAMEL_DELETE_FUNCTION; + ConsumerToken& operator=(ConsumerToken const&) MOODYCAMEL_DELETE_FUNCTION; private: - template friend class ConcurrentQueue; - friend class ConcurrentQueueTests; - + template friend class ConcurrentQueue; + friend class ConcurrentQueueTests; + private: // but shared with ConcurrentQueue - std::uint32_t initialOffset; - std::uint32_t lastKnownGlobalOffset; - std::uint32_t itemsConsumedFromCurrent; - details::ConcurrentQueueProducerTypelessBase* currentProducer; - details::ConcurrentQueueProducerTypelessBase* desiredProducer; + std::uint32_t initialOffset; + std::uint32_t lastKnownGlobalOffset; + std::uint32_t itemsConsumedFromCurrent; + details::ConcurrentQueueProducerTypelessBase* currentProducer; + details::ConcurrentQueueProducerTypelessBase* desiredProducer; }; // Need to forward-declare this swap because it's in a namespace. -// See -// http://stackoverflow.com/questions/4492062/why-does-a-c-friend-class-need-a-forward-declaration-only-in-other-namespaces -template -inline void swap(typename ConcurrentQueue::ImplicitProducerKVP& a, - typename ConcurrentQueue::ImplicitProducerKVP& b) - MOODYCAMEL_NOEXCEPT; +// See http://stackoverflow.com/questions/4492062/why-does-a-c-friend-class-need-a-forward-declaration-only-in-other-namespaces +template +inline void swap(typename ConcurrentQueue::ImplicitProducerKVP& a, typename ConcurrentQueue::ImplicitProducerKVP& b) MOODYCAMEL_NOEXCEPT; -template -class ConcurrentQueue { -public: - typedef ::moodycamel::ProducerToken producer_token_t; - typedef ::moodycamel::ConsumerToken consumer_token_t; - typedef typename Traits::index_t index_t; - typedef typename Traits::size_t size_t; - - static const size_t BLOCK_SIZE = static_cast(Traits::BLOCK_SIZE); - static const size_t EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD = - static_cast(Traits::EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD); - static const size_t EXPLICIT_INITIAL_INDEX_SIZE = - static_cast(Traits::EXPLICIT_INITIAL_INDEX_SIZE); - static const size_t IMPLICIT_INITIAL_INDEX_SIZE = - static_cast(Traits::IMPLICIT_INITIAL_INDEX_SIZE); - static const size_t INITIAL_IMPLICIT_PRODUCER_HASH_SIZE = - static_cast(Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE); - static const std::uint32_t EXPLICIT_CONSUMER_CONSUMPTION_QUOTA_BEFORE_ROTATE = - static_cast( - Traits::EXPLICIT_CONSUMER_CONSUMPTION_QUOTA_BEFORE_ROTATE); +template +class ConcurrentQueue +{ +public: + typedef ::moodycamel::ProducerToken producer_token_t; + typedef ::moodycamel::ConsumerToken consumer_token_t; + + typedef typename Traits::index_t index_t; + typedef typename Traits::size_t size_t; + + static const size_t BLOCK_SIZE = static_cast(Traits::BLOCK_SIZE); + static const size_t EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD = static_cast(Traits::EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD); + static const size_t EXPLICIT_INITIAL_INDEX_SIZE = static_cast(Traits::EXPLICIT_INITIAL_INDEX_SIZE); + static const size_t IMPLICIT_INITIAL_INDEX_SIZE = static_cast(Traits::IMPLICIT_INITIAL_INDEX_SIZE); + static const size_t INITIAL_IMPLICIT_PRODUCER_HASH_SIZE = static_cast(Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE); + static const std::uint32_t EXPLICIT_CONSUMER_CONSUMPTION_QUOTA_BEFORE_ROTATE = static_cast(Traits::EXPLICIT_CONSUMER_CONSUMPTION_QUOTA_BEFORE_ROTATE); #ifdef _MSC_VER #pragma warning(push) -#pragma warning(disable : 4307) // + integral constant overflow (that's what the - // ternary expression is for!) -#pragma warning(disable : 4309) // static_cast: Truncation of constant value +#pragma warning(disable: 4307) // + integral constant overflow (that's what the ternary expression is for!) +#pragma warning(disable: 4309) // static_cast: Truncation of constant value #endif - static const size_t MAX_SUBQUEUE_SIZE = - (details::const_numeric_max::value - - static_cast(Traits::MAX_SUBQUEUE_SIZE) < - BLOCK_SIZE) - ? details::const_numeric_max::value - : ((static_cast(Traits::MAX_SUBQUEUE_SIZE) + - (BLOCK_SIZE - 1)) / - BLOCK_SIZE * BLOCK_SIZE); + static const size_t MAX_SUBQUEUE_SIZE = (details::const_numeric_max::value - static_cast(Traits::MAX_SUBQUEUE_SIZE) < BLOCK_SIZE) ? details::const_numeric_max::value : ((static_cast(Traits::MAX_SUBQUEUE_SIZE) + (BLOCK_SIZE - 1)) / BLOCK_SIZE * BLOCK_SIZE); #ifdef _MSC_VER #pragma warning(pop) #endif - static_assert(!std::numeric_limits::is_signed && - std::is_integral::value, - "Traits::size_t must be an unsigned integral type"); - static_assert(!std::numeric_limits::is_signed && - std::is_integral::value, - "Traits::index_t must be an unsigned integral type"); - static_assert(sizeof(index_t) >= sizeof(size_t), - "Traits::index_t must be at least as wide as Traits::size_t"); - static_assert((BLOCK_SIZE > 1) && !(BLOCK_SIZE & (BLOCK_SIZE - 1)), - "Traits::BLOCK_SIZE must be a power of 2 (and at least 2)"); - static_assert((EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD > 1) && - !(EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD & - (EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD - 1)), - "Traits::EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD must be a " - "power of 2 (and greater than 1)"); - static_assert((EXPLICIT_INITIAL_INDEX_SIZE > 1) && - !(EXPLICIT_INITIAL_INDEX_SIZE & - (EXPLICIT_INITIAL_INDEX_SIZE - 1)), - "Traits::EXPLICIT_INITIAL_INDEX_SIZE must be a power of 2 (and " - "greater than 1)"); - static_assert((IMPLICIT_INITIAL_INDEX_SIZE > 1) && - !(IMPLICIT_INITIAL_INDEX_SIZE & - (IMPLICIT_INITIAL_INDEX_SIZE - 1)), - "Traits::IMPLICIT_INITIAL_INDEX_SIZE must be a power of 2 (and " - "greater than 1)"); - static_assert( - (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0) || - !(INITIAL_IMPLICIT_PRODUCER_HASH_SIZE & - (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE - 1)), - "Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE must be a power of 2"); - static_assert(INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0 || - INITIAL_IMPLICIT_PRODUCER_HASH_SIZE >= 1, - "Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE must be at least " - "1 (or 0 to disable implicit enqueueing)"); + static_assert(!std::numeric_limits::is_signed && std::is_integral::value, "Traits::size_t must be an unsigned integral type"); + static_assert(!std::numeric_limits::is_signed && std::is_integral::value, "Traits::index_t must be an unsigned integral type"); + static_assert(sizeof(index_t) >= sizeof(size_t), "Traits::index_t must be at least as wide as Traits::size_t"); + static_assert((BLOCK_SIZE > 1) && !(BLOCK_SIZE & (BLOCK_SIZE - 1)), "Traits::BLOCK_SIZE must be a power of 2 (and at least 2)"); + static_assert((EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD > 1) && !(EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD & (EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD - 1)), "Traits::EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD must be a power of 2 (and greater than 1)"); + static_assert((EXPLICIT_INITIAL_INDEX_SIZE > 1) && !(EXPLICIT_INITIAL_INDEX_SIZE & (EXPLICIT_INITIAL_INDEX_SIZE - 1)), "Traits::EXPLICIT_INITIAL_INDEX_SIZE must be a power of 2 (and greater than 1)"); + static_assert((IMPLICIT_INITIAL_INDEX_SIZE > 1) && !(IMPLICIT_INITIAL_INDEX_SIZE & (IMPLICIT_INITIAL_INDEX_SIZE - 1)), "Traits::IMPLICIT_INITIAL_INDEX_SIZE must be a power of 2 (and greater than 1)"); + static_assert((INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0) || !(INITIAL_IMPLICIT_PRODUCER_HASH_SIZE & (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE - 1)), "Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE must be a power of 2"); + static_assert(INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0 || INITIAL_IMPLICIT_PRODUCER_HASH_SIZE >= 1, "Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE must be at least 1 (or 0 to disable implicit enqueueing)"); public: - // Creates a queue with at least `capacity` element slots; note that the - // actual number of elements that can be inserted without additional memory - // allocation depends on the number of producers and the block size (e.g. if - // the block size is equal to `capacity`, only a single block will be - // allocated up-front, which means only a single producer will be able to - // enqueue elements without an extra allocation -- blocks aren't shared - // between producers). This method is not thread safe -- it is up to the user - // to ensure that the queue is fully constructed before it starts being used - // by other threads (this includes making the memory effects of construction - // visible, possibly with a memory barrier). - explicit ConcurrentQueue(size_t capacity = 6 * BLOCK_SIZE) - : producerListTail(nullptr), producerCount(0), initialBlockPoolIndex(0), - nextExplicitConsumerId(0), globalExplicitConsumerOffset(0) { - implicitProducerHashResizeInProgress.clear(std::memory_order_relaxed); - populate_initial_implicit_producer_hash(); - populate_initial_block_list(capacity / BLOCK_SIZE + - ((capacity & (BLOCK_SIZE - 1)) == 0 ? 0 : 1)); - + // Creates a queue with at least `capacity` element slots; note that the + // actual number of elements that can be inserted without additional memory + // allocation depends on the number of producers and the block size (e.g. if + // the block size is equal to `capacity`, only a single block will be allocated + // up-front, which means only a single producer will be able to enqueue elements + // without an extra allocation -- blocks aren't shared between producers). + // This method is not thread safe -- it is up to the user to ensure that the + // queue is fully constructed before it starts being used by other threads (this + // includes making the memory effects of construction visible, possibly with a + // memory barrier). + explicit ConcurrentQueue(size_t capacity = 6 * BLOCK_SIZE) + : producerListTail(nullptr), + producerCount(0), + initialBlockPoolIndex(0), + nextExplicitConsumerId(0), + globalExplicitConsumerOffset(0) + { + implicitProducerHashResizeInProgress.clear(std::memory_order_relaxed); + populate_initial_implicit_producer_hash(); + populate_initial_block_list(capacity / BLOCK_SIZE + ((capacity & (BLOCK_SIZE - 1)) == 0 ? 0 : 1)); + #ifdef MOODYCAMEL_QUEUE_INTERNAL_DEBUG - // Track all the producers using a fully-resolved typed list for - // each kind; this makes it possible to debug them starting from - // the root queue object (otherwise wacky casts are needed that - // don't compile in the debugger's expression evaluator). - explicitProducers.store(nullptr, std::memory_order_relaxed); - implicitProducers.store(nullptr, std::memory_order_relaxed); -#endif - } - - // Computes the correct amount of pre-allocated blocks for you based - // on the minimum number of elements you want available at any given - // time, and the maximum concurrent number of each type of producer. - ConcurrentQueue(size_t minCapacity, size_t maxExplicitProducers, - size_t maxImplicitProducers) - : producerListTail(nullptr), producerCount(0), initialBlockPoolIndex(0), - nextExplicitConsumerId(0), globalExplicitConsumerOffset(0) { - implicitProducerHashResizeInProgress.clear(std::memory_order_relaxed); - populate_initial_implicit_producer_hash(); - size_t blocks = (((minCapacity + BLOCK_SIZE - 1) / BLOCK_SIZE) - 1) * - (maxExplicitProducers + 1) + - 2 * (maxExplicitProducers + maxImplicitProducers); - populate_initial_block_list(blocks); - + // Track all the producers using a fully-resolved typed list for + // each kind; this makes it possible to debug them starting from + // the root queue object (otherwise wacky casts are needed that + // don't compile in the debugger's expression evaluator). + explicitProducers.store(nullptr, std::memory_order_relaxed); + implicitProducers.store(nullptr, std::memory_order_relaxed); +#endif + } + + // Computes the correct amount of pre-allocated blocks for you based + // on the minimum number of elements you want available at any given + // time, and the maximum concurrent number of each type of producer. + ConcurrentQueue(size_t minCapacity, size_t maxExplicitProducers, size_t maxImplicitProducers) + : producerListTail(nullptr), + producerCount(0), + initialBlockPoolIndex(0), + nextExplicitConsumerId(0), + globalExplicitConsumerOffset(0) + { + implicitProducerHashResizeInProgress.clear(std::memory_order_relaxed); + populate_initial_implicit_producer_hash(); + size_t blocks = (((minCapacity + BLOCK_SIZE - 1) / BLOCK_SIZE) - 1) * (maxExplicitProducers + 1) + 2 * (maxExplicitProducers + maxImplicitProducers); + populate_initial_block_list(blocks); + #ifdef MOODYCAMEL_QUEUE_INTERNAL_DEBUG - explicitProducers.store(nullptr, std::memory_order_relaxed); - implicitProducers.store(nullptr, std::memory_order_relaxed); -#endif - } - - // Note: The queue should not be accessed concurrently while it's - // being deleted. It's up to the user to synchronize this. - // This method is not thread safe. - ~ConcurrentQueue() { - // Destroy producers - auto ptr = producerListTail.load(std::memory_order_relaxed); - while (ptr != nullptr) { - auto next = ptr->next_prod(); - if (ptr->token != nullptr) { - ptr->token->producer = nullptr; - } - destroy(ptr); - ptr = next; - } - - // Destroy implicit producer hash tables - if (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE != 0) { - auto hash = implicitProducerHash.load(std::memory_order_relaxed); - while (hash != nullptr) { - auto prev = hash->prev; - if (prev != nullptr) { // The last hash is part of this object and was - // not allocated dynamically - for (size_t i = 0; i != hash->capacity; ++i) { - hash->entries[i].~ImplicitProducerKVP(); - } - hash->~ImplicitProducerHash(); - (Traits::free)(hash); - } - hash = prev; - } - } - - // Destroy global free list - auto block = freeList.head_unsafe(); - while (block != nullptr) { - auto next = block->freeListNext.load(std::memory_order_relaxed); - if (block->dynamicallyAllocated) { - destroy(block); - } - block = next; - } - - // Destroy initial free list - destroy_array(initialBlockPool, initialBlockPoolSize); - } - - // Disable copying and copy assignment - ConcurrentQueue(ConcurrentQueue const&) MOODYCAMEL_DELETE_FUNCTION; - ConcurrentQueue& operator=(ConcurrentQueue const&) MOODYCAMEL_DELETE_FUNCTION; - - // Moving is supported, but note that it is *not* a thread-safe operation. - // Nobody can use the queue while it's being moved, and the memory effects - // of that move must be propagated to other threads before they can use it. - // Note: When a queue is moved, its tokens are still valid but can only be - // used with the destination queue (i.e. semantically they are moved along - // with the queue itself). - ConcurrentQueue(ConcurrentQueue&& other) MOODYCAMEL_NOEXCEPT - : producerListTail( - other.producerListTail.load(std::memory_order_relaxed)), - producerCount(other.producerCount.load(std::memory_order_relaxed)), - initialBlockPoolIndex( - other.initialBlockPoolIndex.load(std::memory_order_relaxed)), - initialBlockPool(other.initialBlockPool), - initialBlockPoolSize(other.initialBlockPoolSize), - freeList(std::move(other.freeList)), - nextExplicitConsumerId( - other.nextExplicitConsumerId.load(std::memory_order_relaxed)), - globalExplicitConsumerOffset(other.globalExplicitConsumerOffset.load( - std::memory_order_relaxed)) { - // Move the other one into this, and leave the other one as an empty queue - implicitProducerHashResizeInProgress.clear(std::memory_order_relaxed); - populate_initial_implicit_producer_hash(); - swap_implicit_producer_hashes(other); - - other.producerListTail.store(nullptr, std::memory_order_relaxed); - other.producerCount.store(0, std::memory_order_relaxed); - other.nextExplicitConsumerId.store(0, std::memory_order_relaxed); - other.globalExplicitConsumerOffset.store(0, std::memory_order_relaxed); - + explicitProducers.store(nullptr, std::memory_order_relaxed); + implicitProducers.store(nullptr, std::memory_order_relaxed); +#endif + } + + // Note: The queue should not be accessed concurrently while it's + // being deleted. It's up to the user to synchronize this. + // This method is not thread safe. + ~ConcurrentQueue() + { + // Destroy producers + auto ptr = producerListTail.load(std::memory_order_relaxed); + while (ptr != nullptr) { + auto next = ptr->next_prod(); + if (ptr->token != nullptr) { + ptr->token->producer = nullptr; + } + destroy(ptr); + ptr = next; + } + + // Destroy implicit producer hash tables + if (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE != 0) { + auto hash = implicitProducerHash.load(std::memory_order_relaxed); + while (hash != nullptr) { + auto prev = hash->prev; + if (prev != nullptr) { // The last hash is part of this object and was not allocated dynamically + for (size_t i = 0; i != hash->capacity; ++i) { + hash->entries[i].~ImplicitProducerKVP(); + } + hash->~ImplicitProducerHash(); + (Traits::free)(hash); + } + hash = prev; + } + } + + // Destroy global free list + auto block = freeList.head_unsafe(); + while (block != nullptr) { + auto next = block->freeListNext.load(std::memory_order_relaxed); + if (block->dynamicallyAllocated) { + destroy(block); + } + block = next; + } + + // Destroy initial free list + destroy_array(initialBlockPool, initialBlockPoolSize); + } + + // Disable copying and copy assignment + ConcurrentQueue(ConcurrentQueue const&) MOODYCAMEL_DELETE_FUNCTION; + ConcurrentQueue& operator=(ConcurrentQueue const&) MOODYCAMEL_DELETE_FUNCTION; + + // Moving is supported, but note that it is *not* a thread-safe operation. + // Nobody can use the queue while it's being moved, and the memory effects + // of that move must be propagated to other threads before they can use it. + // Note: When a queue is moved, its tokens are still valid but can only be + // used with the destination queue (i.e. semantically they are moved along + // with the queue itself). + ConcurrentQueue(ConcurrentQueue&& other) MOODYCAMEL_NOEXCEPT + : producerListTail(other.producerListTail.load(std::memory_order_relaxed)), + producerCount(other.producerCount.load(std::memory_order_relaxed)), + initialBlockPoolIndex(other.initialBlockPoolIndex.load(std::memory_order_relaxed)), + initialBlockPool(other.initialBlockPool), + initialBlockPoolSize(other.initialBlockPoolSize), + freeList(std::move(other.freeList)), + nextExplicitConsumerId(other.nextExplicitConsumerId.load(std::memory_order_relaxed)), + globalExplicitConsumerOffset(other.globalExplicitConsumerOffset.load(std::memory_order_relaxed)) + { + // Move the other one into this, and leave the other one as an empty queue + implicitProducerHashResizeInProgress.clear(std::memory_order_relaxed); + populate_initial_implicit_producer_hash(); + swap_implicit_producer_hashes(other); + + other.producerListTail.store(nullptr, std::memory_order_relaxed); + other.producerCount.store(0, std::memory_order_relaxed); + other.nextExplicitConsumerId.store(0, std::memory_order_relaxed); + other.globalExplicitConsumerOffset.store(0, std::memory_order_relaxed); + #ifdef MOODYCAMEL_QUEUE_INTERNAL_DEBUG - explicitProducers.store( - other.explicitProducers.load(std::memory_order_relaxed), - std::memory_order_relaxed); - other.explicitProducers.store(nullptr, std::memory_order_relaxed); - implicitProducers.store( - other.implicitProducers.load(std::memory_order_relaxed), - std::memory_order_relaxed); - other.implicitProducers.store(nullptr, std::memory_order_relaxed); -#endif - - other.initialBlockPoolIndex.store(0, std::memory_order_relaxed); - other.initialBlockPoolSize = 0; - other.initialBlockPool = nullptr; - - reown_producers(); - } - - inline ConcurrentQueue& - operator=(ConcurrentQueue&& other) MOODYCAMEL_NOEXCEPT { - return swap_internal(other); - } - - // Swaps this queue's state with the other's. Not thread-safe. - // Swapping two queues does not invalidate their tokens, however - // the tokens that were created for one queue must be used with - // only the swapped queue (i.e. the tokens are tied to the - // queue's movable state, not the object itself). - inline void swap(ConcurrentQueue& other) MOODYCAMEL_NOEXCEPT { - swap_internal(other); - } - + explicitProducers.store(other.explicitProducers.load(std::memory_order_relaxed), std::memory_order_relaxed); + other.explicitProducers.store(nullptr, std::memory_order_relaxed); + implicitProducers.store(other.implicitProducers.load(std::memory_order_relaxed), std::memory_order_relaxed); + other.implicitProducers.store(nullptr, std::memory_order_relaxed); +#endif + + other.initialBlockPoolIndex.store(0, std::memory_order_relaxed); + other.initialBlockPoolSize = 0; + other.initialBlockPool = nullptr; + + reown_producers(); + } + + inline ConcurrentQueue& operator=(ConcurrentQueue&& other) MOODYCAMEL_NOEXCEPT + { + return swap_internal(other); + } + + // Swaps this queue's state with the other's. Not thread-safe. + // Swapping two queues does not invalidate their tokens, however + // the tokens that were created for one queue must be used with + // only the swapped queue (i.e. the tokens are tied to the + // queue's movable state, not the object itself). + inline void swap(ConcurrentQueue& other) MOODYCAMEL_NOEXCEPT + { + swap_internal(other); + } + private: - ConcurrentQueue& swap_internal(ConcurrentQueue& other) { - if (this == &other) { - return *this; - } - - details::swap_relaxed(producerListTail, other.producerListTail); - details::swap_relaxed(producerCount, other.producerCount); - details::swap_relaxed(initialBlockPoolIndex, other.initialBlockPoolIndex); - std::swap(initialBlockPool, other.initialBlockPool); - std::swap(initialBlockPoolSize, other.initialBlockPoolSize); - freeList.swap(other.freeList); - details::swap_relaxed(nextExplicitConsumerId, other.nextExplicitConsumerId); - details::swap_relaxed(globalExplicitConsumerOffset, - other.globalExplicitConsumerOffset); - - swap_implicit_producer_hashes(other); - - reown_producers(); - other.reown_producers(); - + ConcurrentQueue& swap_internal(ConcurrentQueue& other) + { + if (this == &other) { + return *this; + } + + details::swap_relaxed(producerListTail, other.producerListTail); + details::swap_relaxed(producerCount, other.producerCount); + details::swap_relaxed(initialBlockPoolIndex, other.initialBlockPoolIndex); + std::swap(initialBlockPool, other.initialBlockPool); + std::swap(initialBlockPoolSize, other.initialBlockPoolSize); + freeList.swap(other.freeList); + details::swap_relaxed(nextExplicitConsumerId, other.nextExplicitConsumerId); + details::swap_relaxed(globalExplicitConsumerOffset, other.globalExplicitConsumerOffset); + + swap_implicit_producer_hashes(other); + + reown_producers(); + other.reown_producers(); + #ifdef MOODYCAMEL_QUEUE_INTERNAL_DEBUG - details::swap_relaxed(explicitProducers, other.explicitProducers); - details::swap_relaxed(implicitProducers, other.implicitProducers); + details::swap_relaxed(explicitProducers, other.explicitProducers); + details::swap_relaxed(implicitProducers, other.implicitProducers); #endif - - return *this; - } - + + return *this; + } + public: - // Enqueues a single item (by copying it). - // Allocates memory if required. Only fails if memory allocation fails (or - // implicit production is disabled because - // Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE is 0, or - // Traits::MAX_SUBQUEUE_SIZE has been defined and would be surpassed). - // Thread-safe. - inline bool enqueue(T const& item) { - if (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0) - return false; - return inner_enqueue(item); - } - - // Enqueues a single item (by moving it, if possible). - // Allocates memory if required. Only fails if memory allocation fails (or - // implicit production is disabled because - // Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE is 0, or - // Traits::MAX_SUBQUEUE_SIZE has been defined and would be surpassed). - // Thread-safe. - inline bool enqueue(T&& item) { - if (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0) - return false; - return inner_enqueue(std::move(item)); - } - - // Enqueues a single item (by copying it) using an explicit producer token. - // Allocates memory if required. Only fails if memory allocation fails (or - // Traits::MAX_SUBQUEUE_SIZE has been defined and would be surpassed). - // Thread-safe. - inline bool enqueue(producer_token_t const& token, T const& item) { - return inner_enqueue(token, item); - } - - // Enqueues a single item (by moving it, if possible) using an explicit - // producer token. Allocates memory if required. Only fails if memory - // allocation fails (or Traits::MAX_SUBQUEUE_SIZE has been defined and would - // be surpassed). Thread-safe. - inline bool enqueue(producer_token_t const& token, T&& item) { - return inner_enqueue(token, std::move(item)); - } - - // Enqueues several items. - // Allocates memory if required. Only fails if memory allocation fails (or - // implicit production is disabled because - // Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE is 0, or - // Traits::MAX_SUBQUEUE_SIZE has been defined and would be surpassed). Note: - // Use std::make_move_iterator if the elements should be moved instead of - // copied. Thread-safe. - template bool enqueue_bulk(It itemFirst, size_t count) { - if (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0) - return false; - return inner_enqueue_bulk(itemFirst, count); - } - - // Enqueues several items using an explicit producer token. - // Allocates memory if required. Only fails if memory allocation fails - // (or Traits::MAX_SUBQUEUE_SIZE has been defined and would be surpassed). - // Note: Use std::make_move_iterator if the elements should be moved - // instead of copied. - // Thread-safe. - template - bool enqueue_bulk(producer_token_t const& token, It itemFirst, size_t count) { - return inner_enqueue_bulk(token, itemFirst, count); - } - - // Enqueues a single item (by copying it). - // Does not allocate memory. Fails if not enough room to enqueue (or implicit - // production is disabled because Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE - // is 0). - // Thread-safe. - inline bool try_enqueue(T const& item) { - if (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0) - return false; - return inner_enqueue(item); - } - - // Enqueues a single item (by moving it, if possible). - // Does not allocate memory (except for one-time implicit producer). - // Fails if not enough room to enqueue (or implicit production is - // disabled because Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE is 0). - // Thread-safe. - inline bool try_enqueue(T&& item) { - if (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0) - return false; - return inner_enqueue(std::move(item)); - } - - // Enqueues a single item (by copying it) using an explicit producer token. - // Does not allocate memory. Fails if not enough room to enqueue. - // Thread-safe. - inline bool try_enqueue(producer_token_t const& token, T const& item) { - return inner_enqueue(token, item); - } - - // Enqueues a single item (by moving it, if possible) using an explicit - // producer token. Does not allocate memory. Fails if not enough room to - // enqueue. Thread-safe. - inline bool try_enqueue(producer_token_t const& token, T&& item) { - return inner_enqueue(token, std::move(item)); - } - - // Enqueues several items. - // Does not allocate memory (except for one-time implicit producer). - // Fails if not enough room to enqueue (or implicit production is - // disabled because Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE is 0). - // Note: Use std::make_move_iterator if the elements should be moved - // instead of copied. - // Thread-safe. - template bool try_enqueue_bulk(It itemFirst, size_t count) { - if (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0) - return false; - return inner_enqueue_bulk(itemFirst, count); - } - - // Enqueues several items using an explicit producer token. - // Does not allocate memory. Fails if not enough room to enqueue. - // Note: Use std::make_move_iterator if the elements should be moved - // instead of copied. - // Thread-safe. - template - bool try_enqueue_bulk(producer_token_t const& token, It itemFirst, - size_t count) { - return inner_enqueue_bulk(token, itemFirst, count); - } - - // Attempts to dequeue from the queue. - // Returns false if all producer streams appeared empty at the time they - // were checked (so, the queue is likely but not guaranteed to be empty). - // Never allocates. Thread-safe. - template bool try_dequeue(U& item) { - // Instead of simply trying each producer in turn (which could cause - // needless contention on the first producer), we score them heuristically. - size_t nonEmptyCount = 0; - ProducerBase* best = nullptr; - size_t bestSize = 0; - for (auto ptr = producerListTail.load(std::memory_order_acquire); - nonEmptyCount < 3 && ptr != nullptr; ptr = ptr->next_prod()) { - auto size = ptr->size_approx(); - if (size > 0) { - if (size > bestSize) { - bestSize = size; - best = ptr; - } - ++nonEmptyCount; - } - } - - // If there was at least one non-empty queue but it appears empty at the - // time we try to dequeue from it, we need to make sure every queue's been - // tried - if (nonEmptyCount > 0) { - if (details::likely(best->dequeue(item))) { - return true; - } - for (auto ptr = producerListTail.load(std::memory_order_acquire); - ptr != nullptr; ptr = ptr->next_prod()) { - if (ptr != best && ptr->dequeue(item)) { - return true; - } - } - } - return false; - } - - // Attempts to dequeue from the queue. - // Returns false if all producer streams appeared empty at the time they - // were checked (so, the queue is likely but not guaranteed to be empty). - // This differs from the try_dequeue(item) method in that this one does - // not attempt to reduce contention by interleaving the order that producer - // streams are dequeued from. So, using this method can reduce overall - // throughput under contention, but will give more predictable results in - // single-threaded consumer scenarios. This is mostly only useful for internal - // unit tests. Never allocates. Thread-safe. - template bool try_dequeue_non_interleaved(U& item) { - for (auto ptr = producerListTail.load(std::memory_order_acquire); - ptr != nullptr; ptr = ptr->next_prod()) { - if (ptr->dequeue(item)) { - return true; - } - } - return false; - } - - // Attempts to dequeue from the queue using an explicit consumer token. - // Returns false if all producer streams appeared empty at the time they - // were checked (so, the queue is likely but not guaranteed to be empty). - // Never allocates. Thread-safe. - template bool try_dequeue(consumer_token_t& token, U& item) { - // The idea is roughly as follows: - // Every 256 items from one producer, make everyone rotate (increase the - // global offset) -> this means the highest efficiency consumer dictates the - // rotation speed of everyone else, more or less If you see that the global - // offset has changed, you must reset your consumption counter and move to - // your designated place If there's no items where you're supposed to be, - // keep moving until you find a producer with some items If the global - // offset has not changed but you've run out of items to consume, move over - // from your current position until you find an producer with something in - // it - - if (token.desiredProducer == nullptr || - token.lastKnownGlobalOffset != - globalExplicitConsumerOffset.load(std::memory_order_relaxed)) { - if (!update_current_producer_after_rotation(token)) { - return false; - } - } - - // If there was at least one non-empty queue but it appears empty at the - // time we try to dequeue from it, we need to make sure every queue's been - // tried - if (static_cast(token.currentProducer)->dequeue(item)) { - if (++token.itemsConsumedFromCurrent == - EXPLICIT_CONSUMER_CONSUMPTION_QUOTA_BEFORE_ROTATE) { - globalExplicitConsumerOffset.fetch_add(1, std::memory_order_relaxed); - } - return true; - } + // Enqueues a single item (by copying it). + // Allocates memory if required. Only fails if memory allocation fails (or implicit + // production is disabled because Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE is 0, + // or Traits::MAX_SUBQUEUE_SIZE has been defined and would be surpassed). + // Thread-safe. + inline bool enqueue(T const& item) + { + if (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0) return false; + return inner_enqueue(item); + } + + // Enqueues a single item (by moving it, if possible). + // Allocates memory if required. Only fails if memory allocation fails (or implicit + // production is disabled because Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE is 0, + // or Traits::MAX_SUBQUEUE_SIZE has been defined and would be surpassed). + // Thread-safe. + inline bool enqueue(T&& item) + { + if (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0) return false; + return inner_enqueue(std::move(item)); + } + + // Enqueues a single item (by copying it) using an explicit producer token. + // Allocates memory if required. Only fails if memory allocation fails (or + // Traits::MAX_SUBQUEUE_SIZE has been defined and would be surpassed). + // Thread-safe. + inline bool enqueue(producer_token_t const& token, T const& item) + { + return inner_enqueue(token, item); + } + + // Enqueues a single item (by moving it, if possible) using an explicit producer token. + // Allocates memory if required. Only fails if memory allocation fails (or + // Traits::MAX_SUBQUEUE_SIZE has been defined and would be surpassed). + // Thread-safe. + inline bool enqueue(producer_token_t const& token, T&& item) + { + return inner_enqueue(token, std::move(item)); + } + + // Enqueues several items. + // Allocates memory if required. Only fails if memory allocation fails (or + // implicit production is disabled because Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE + // is 0, or Traits::MAX_SUBQUEUE_SIZE has been defined and would be surpassed). + // Note: Use std::make_move_iterator if the elements should be moved instead of copied. + // Thread-safe. + template + bool enqueue_bulk(It itemFirst, size_t count) + { + if (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0) return false; + return inner_enqueue_bulk(itemFirst, count); + } + + // Enqueues several items using an explicit producer token. + // Allocates memory if required. Only fails if memory allocation fails + // (or Traits::MAX_SUBQUEUE_SIZE has been defined and would be surpassed). + // Note: Use std::make_move_iterator if the elements should be moved + // instead of copied. + // Thread-safe. + template + bool enqueue_bulk(producer_token_t const& token, It itemFirst, size_t count) + { + return inner_enqueue_bulk(token, itemFirst, count); + } + + // Enqueues a single item (by copying it). + // Does not allocate memory. Fails if not enough room to enqueue (or implicit + // production is disabled because Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE + // is 0). + // Thread-safe. + inline bool try_enqueue(T const& item) + { + if (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0) return false; + return inner_enqueue(item); + } + + // Enqueues a single item (by moving it, if possible). + // Does not allocate memory (except for one-time implicit producer). + // Fails if not enough room to enqueue (or implicit production is + // disabled because Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE is 0). + // Thread-safe. + inline bool try_enqueue(T&& item) + { + if (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0) return false; + return inner_enqueue(std::move(item)); + } + + // Enqueues a single item (by copying it) using an explicit producer token. + // Does not allocate memory. Fails if not enough room to enqueue. + // Thread-safe. + inline bool try_enqueue(producer_token_t const& token, T const& item) + { + return inner_enqueue(token, item); + } + + // Enqueues a single item (by moving it, if possible) using an explicit producer token. + // Does not allocate memory. Fails if not enough room to enqueue. + // Thread-safe. + inline bool try_enqueue(producer_token_t const& token, T&& item) + { + return inner_enqueue(token, std::move(item)); + } + + // Enqueues several items. + // Does not allocate memory (except for one-time implicit producer). + // Fails if not enough room to enqueue (or implicit production is + // disabled because Traits::INITIAL_IMPLICIT_PRODUCER_HASH_SIZE is 0). + // Note: Use std::make_move_iterator if the elements should be moved + // instead of copied. + // Thread-safe. + template + bool try_enqueue_bulk(It itemFirst, size_t count) + { + if (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0) return false; + return inner_enqueue_bulk(itemFirst, count); + } + + // Enqueues several items using an explicit producer token. + // Does not allocate memory. Fails if not enough room to enqueue. + // Note: Use std::make_move_iterator if the elements should be moved + // instead of copied. + // Thread-safe. + template + bool try_enqueue_bulk(producer_token_t const& token, It itemFirst, size_t count) + { + return inner_enqueue_bulk(token, itemFirst, count); + } + + + + // Attempts to dequeue from the queue. + // Returns false if all producer streams appeared empty at the time they + // were checked (so, the queue is likely but not guaranteed to be empty). + // Never allocates. Thread-safe. + template + bool try_dequeue(U& item) + { + // Instead of simply trying each producer in turn (which could cause needless contention on the first + // producer), we score them heuristically. + size_t nonEmptyCount = 0; + ProducerBase* best = nullptr; + size_t bestSize = 0; + for (auto ptr = producerListTail.load(std::memory_order_acquire); nonEmptyCount < 3 && ptr != nullptr; ptr = ptr->next_prod()) { + auto size = ptr->size_approx(); + if (size > 0) { + if (size > bestSize) { + bestSize = size; + best = ptr; + } + ++nonEmptyCount; + } + } + + // If there was at least one non-empty queue but it appears empty at the time + // we try to dequeue from it, we need to make sure every queue's been tried + if (nonEmptyCount > 0) { + if ((details::likely)(best->dequeue(item))) { + return true; + } + for (auto ptr = producerListTail.load(std::memory_order_acquire); ptr != nullptr; ptr = ptr->next_prod()) { + if (ptr != best && ptr->dequeue(item)) { + return true; + } + } + } + return false; + } + + // Attempts to dequeue from the queue. + // Returns false if all producer streams appeared empty at the time they + // were checked (so, the queue is likely but not guaranteed to be empty). + // This differs from the try_dequeue(item) method in that this one does + // not attempt to reduce contention by interleaving the order that producer + // streams are dequeued from. So, using this method can reduce overall throughput + // under contention, but will give more predictable results in single-threaded + // consumer scenarios. This is mostly only useful for internal unit tests. + // Never allocates. Thread-safe. + template + bool try_dequeue_non_interleaved(U& item) + { + for (auto ptr = producerListTail.load(std::memory_order_acquire); ptr != nullptr; ptr = ptr->next_prod()) { + if (ptr->dequeue(item)) { + return true; + } + } + return false; + } + + // Attempts to dequeue from the queue using an explicit consumer token. + // Returns false if all producer streams appeared empty at the time they + // were checked (so, the queue is likely but not guaranteed to be empty). + // Never allocates. Thread-safe. + template + bool try_dequeue(consumer_token_t& token, U& item) + { + // The idea is roughly as follows: + // Every 256 items from one producer, make everyone rotate (increase the global offset) -> this means the highest efficiency consumer dictates the rotation speed of everyone else, more or less + // If you see that the global offset has changed, you must reset your consumption counter and move to your designated place + // If there's no items where you're supposed to be, keep moving until you find a producer with some items + // If the global offset has not changed but you've run out of items to consume, move over from your current position until you find an producer with something in it + + if (token.desiredProducer == nullptr || token.lastKnownGlobalOffset != globalExplicitConsumerOffset.load(std::memory_order_relaxed)) { + if (!update_current_producer_after_rotation(token)) { + return false; + } + } + + // If there was at least one non-empty queue but it appears empty at the time + // we try to dequeue from it, we need to make sure every queue's been tried + if (static_cast(token.currentProducer)->dequeue(item)) { + if (++token.itemsConsumedFromCurrent == EXPLICIT_CONSUMER_CONSUMPTION_QUOTA_BEFORE_ROTATE) { + globalExplicitConsumerOffset.fetch_add(1, std::memory_order_relaxed); + } + return true; + } + + auto tail = producerListTail.load(std::memory_order_acquire); + auto ptr = static_cast(token.currentProducer)->next_prod(); + if (ptr == nullptr) { + ptr = tail; + } + while (ptr != static_cast(token.currentProducer)) { + if (ptr->dequeue(item)) { + token.currentProducer = ptr; + token.itemsConsumedFromCurrent = 1; + return true; + } + ptr = ptr->next_prod(); + if (ptr == nullptr) { + ptr = tail; + } + } + return false; + } + + // Attempts to dequeue several elements from the queue. + // Returns the number of items actually dequeued. + // Returns 0 if all producer streams appeared empty at the time they + // were checked (so, the queue is likely but not guaranteed to be empty). + // Never allocates. Thread-safe. + template + size_t try_dequeue_bulk(It itemFirst, size_t max) + { + size_t count = 0; + for (auto ptr = producerListTail.load(std::memory_order_acquire); ptr != nullptr; ptr = ptr->next_prod()) { + count += ptr->dequeue_bulk(itemFirst, max - count); + if (count == max) { + break; + } + } + return count; + } + + // Attempts to dequeue several elements from the queue using an explicit consumer token. + // Returns the number of items actually dequeued. + // Returns 0 if all producer streams appeared empty at the time they + // were checked (so, the queue is likely but not guaranteed to be empty). + // Never allocates. Thread-safe. + template + size_t try_dequeue_bulk(consumer_token_t& token, It itemFirst, size_t max) + { + if (token.desiredProducer == nullptr || token.lastKnownGlobalOffset != globalExplicitConsumerOffset.load(std::memory_order_relaxed)) { + if (!update_current_producer_after_rotation(token)) { + return 0; + } + } + + size_t count = static_cast(token.currentProducer)->dequeue_bulk(itemFirst, max); + if (count == max) { + if ((token.itemsConsumedFromCurrent += static_cast(max)) >= EXPLICIT_CONSUMER_CONSUMPTION_QUOTA_BEFORE_ROTATE) { + globalExplicitConsumerOffset.fetch_add(1, std::memory_order_relaxed); + } + return max; + } + token.itemsConsumedFromCurrent += static_cast(count); + max -= count; + + auto tail = producerListTail.load(std::memory_order_acquire); + auto ptr = static_cast(token.currentProducer)->next_prod(); + if (ptr == nullptr) { + ptr = tail; + } + while (ptr != static_cast(token.currentProducer)) { + auto dequeued = ptr->dequeue_bulk(itemFirst, max); + count += dequeued; + if (dequeued != 0) { + token.currentProducer = ptr; + token.itemsConsumedFromCurrent = static_cast(dequeued); + } + if (dequeued == max) { + break; + } + max -= dequeued; + ptr = ptr->next_prod(); + if (ptr == nullptr) { + ptr = tail; + } + } + return count; + } + + + + // Attempts to dequeue from a specific producer's inner queue. + // If you happen to know which producer you want to dequeue from, this + // is significantly faster than using the general-case try_dequeue methods. + // Returns false if the producer's queue appeared empty at the time it + // was checked (so, the queue is likely but not guaranteed to be empty). + // Never allocates. Thread-safe. + template + inline bool try_dequeue_from_producer(producer_token_t const& producer, U& item) + { + return static_cast(producer.producer)->dequeue(item); + } + + // Attempts to dequeue several elements from a specific producer's inner queue. + // Returns the number of items actually dequeued. + // If you happen to know which producer you want to dequeue from, this + // is significantly faster than using the general-case try_dequeue methods. + // Returns 0 if the producer's queue appeared empty at the time it + // was checked (so, the queue is likely but not guaranteed to be empty). + // Never allocates. Thread-safe. + template + inline size_t try_dequeue_bulk_from_producer(producer_token_t const& producer, It itemFirst, size_t max) + { + return static_cast(producer.producer)->dequeue_bulk(itemFirst, max); + } + + + // Returns an estimate of the total number of elements currently in the queue. This + // estimate is only accurate if the queue has completely stabilized before it is called + // (i.e. all enqueue and dequeue operations have completed and their memory effects are + // visible on the calling thread, and no further operations start while this method is + // being called). + // Thread-safe. + size_t size_approx() const + { + size_t size = 0; + for (auto ptr = producerListTail.load(std::memory_order_acquire); ptr != nullptr; ptr = ptr->next_prod()) { + size += ptr->size_approx(); + } + return size; + } + + + // Returns true if the underlying atomic variables used by + // the queue are lock-free (they should be on most platforms). + // Thread-safe. + static bool is_lock_free() + { + return + details::static_is_lock_free::value == 2 && + details::static_is_lock_free::value == 2 && + details::static_is_lock_free::value == 2 && + details::static_is_lock_free::value == 2 && + details::static_is_lock_free::value == 2 && + details::static_is_lock_free::thread_id_numeric_size_t>::value == 2; + } - auto tail = producerListTail.load(std::memory_order_acquire); - auto ptr = static_cast(token.currentProducer)->next_prod(); - if (ptr == nullptr) { - ptr = tail; - } - while (ptr != static_cast(token.currentProducer)) { - if (ptr->dequeue(item)) { - token.currentProducer = ptr; - token.itemsConsumedFromCurrent = 1; - return true; - } - ptr = ptr->next_prod(); - if (ptr == nullptr) { - ptr = tail; - } - } - return false; - } - - // Attempts to dequeue several elements from the queue. - // Returns the number of items actually dequeued. - // Returns 0 if all producer streams appeared empty at the time they - // were checked (so, the queue is likely but not guaranteed to be empty). - // Never allocates. Thread-safe. - template size_t try_dequeue_bulk(It itemFirst, size_t max) { - size_t count = 0; - for (auto ptr = producerListTail.load(std::memory_order_acquire); - ptr != nullptr; ptr = ptr->next_prod()) { - count += ptr->dequeue_bulk(itemFirst, max - count); - if (count == max) { - break; - } - } - return count; - } - - // Attempts to dequeue several elements from the queue using an explicit - // consumer token. Returns the number of items actually dequeued. Returns 0 if - // all producer streams appeared empty at the time they were checked (so, the - // queue is likely but not guaranteed to be empty). Never allocates. - // Thread-safe. - template - size_t try_dequeue_bulk(consumer_token_t& token, It itemFirst, size_t max) { - if (token.desiredProducer == nullptr || - token.lastKnownGlobalOffset != - globalExplicitConsumerOffset.load(std::memory_order_relaxed)) { - if (!update_current_producer_after_rotation(token)) { - return 0; - } - } - - size_t count = static_cast(token.currentProducer) - ->dequeue_bulk(itemFirst, max); - if (count == max) { - if ((token.itemsConsumedFromCurrent += static_cast(max)) >= - EXPLICIT_CONSUMER_CONSUMPTION_QUOTA_BEFORE_ROTATE) { - globalExplicitConsumerOffset.fetch_add(1, std::memory_order_relaxed); - } - return max; - } - token.itemsConsumedFromCurrent += static_cast(count); - max -= count; - - auto tail = producerListTail.load(std::memory_order_acquire); - auto ptr = static_cast(token.currentProducer)->next_prod(); - if (ptr == nullptr) { - ptr = tail; - } - while (ptr != static_cast(token.currentProducer)) { - auto dequeued = ptr->dequeue_bulk(itemFirst, max); - count += dequeued; - if (dequeued != 0) { - token.currentProducer = ptr; - token.itemsConsumedFromCurrent = static_cast(dequeued); - } - if (dequeued == max) { - break; - } - max -= dequeued; - ptr = ptr->next_prod(); - if (ptr == nullptr) { - ptr = tail; - } - } - return count; - } - - // Attempts to dequeue from a specific producer's inner queue. - // If you happen to know which producer you want to dequeue from, this - // is significantly faster than using the general-case try_dequeue methods. - // Returns false if the producer's queue appeared empty at the time it - // was checked (so, the queue is likely but not guaranteed to be empty). - // Never allocates. Thread-safe. - template - inline bool try_dequeue_from_producer(producer_token_t const& producer, - U& item) { - return static_cast(producer.producer)->dequeue(item); - } - - // Attempts to dequeue several elements from a specific producer's inner - // queue. Returns the number of items actually dequeued. If you happen to know - // which producer you want to dequeue from, this is significantly faster than - // using the general-case try_dequeue methods. Returns 0 if the producer's - // queue appeared empty at the time it was checked (so, the queue is likely - // but not guaranteed to be empty). Never allocates. Thread-safe. - template - inline size_t try_dequeue_bulk_from_producer(producer_token_t const& producer, - It itemFirst, size_t max) { - return static_cast(producer.producer) - ->dequeue_bulk(itemFirst, max); - } - - // Returns an estimate of the total number of elements currently in the queue. - // This estimate is only accurate if the queue has completely stabilized - // before it is called (i.e. all enqueue and dequeue operations have completed - // and their memory effects are visible on the calling thread, and no further - // operations start while this method is being called). Thread-safe. - size_t size_approx() const { - size_t size = 0; - for (auto ptr = producerListTail.load(std::memory_order_acquire); - ptr != nullptr; ptr = ptr->next_prod()) { - size += ptr->size_approx(); - } - return size; - } - - // Returns true if the underlying atomic variables used by - // the queue are lock-free (they should be on most platforms). - // Thread-safe. - static bool is_lock_free() { - return details::static_is_lock_free::value == 2 && - details::static_is_lock_free::value == 2 && - details::static_is_lock_free::value == 2 && - details::static_is_lock_free::value == 2 && - details::static_is_lock_free::value == 2 && - details::static_is_lock_free::thread_id_numeric_size_t>::value == 2; - } private: - friend struct ProducerToken; - friend struct ConsumerToken; - friend struct ExplicitProducer; - friend class ConcurrentQueueTests; - - enum AllocationMode { CanAlloc, CannotAlloc }; - - /////////////////////////////// - // Queue methods - /////////////////////////////// - - template - inline bool inner_enqueue(producer_token_t const& token, U&& element) { - return static_cast(token.producer) - ->ConcurrentQueue::ExplicitProducer::template enqueue( - std::forward(element)); - } - - template - inline bool inner_enqueue(U&& element) { - auto producer = get_or_add_implicit_producer(); - return producer == nullptr - ? false - : producer->ConcurrentQueue::ImplicitProducer::template enqueue< - canAlloc>(std::forward(element)); - } - - template - inline bool inner_enqueue_bulk(producer_token_t const& token, It itemFirst, - size_t count) { - return static_cast(token.producer) - ->ConcurrentQueue::ExplicitProducer::template enqueue_bulk( - itemFirst, count); - } - - template - inline bool inner_enqueue_bulk(It itemFirst, size_t count) { - auto producer = get_or_add_implicit_producer(); - return producer == nullptr - ? false - : producer->ConcurrentQueue::ImplicitProducer:: - template enqueue_bulk(itemFirst, count); - } - - inline bool update_current_producer_after_rotation(consumer_token_t& token) { - // Ah, there's been a rotation, figure out where we should be! - auto tail = producerListTail.load(std::memory_order_acquire); - if (token.desiredProducer == nullptr && tail == nullptr) { - return false; - } - auto prodCount = producerCount.load(std::memory_order_relaxed); - auto globalOffset = - globalExplicitConsumerOffset.load(std::memory_order_relaxed); - if (details::unlikely(token.desiredProducer == nullptr)) { - // Aha, first time we're dequeueing anything. - // Figure out our local position - // Note: offset is from start, not end, but we're traversing from end -- - // subtract from count first - std::uint32_t offset = prodCount - 1 - (token.initialOffset % prodCount); - token.desiredProducer = tail; - for (std::uint32_t i = 0; i != offset; ++i) { - token.desiredProducer = - static_cast(token.desiredProducer)->next_prod(); - if (token.desiredProducer == nullptr) { - token.desiredProducer = tail; - } - } - } - - std::uint32_t delta = globalOffset - token.lastKnownGlobalOffset; - if (delta >= prodCount) { - delta = delta % prodCount; - } - for (std::uint32_t i = 0; i != delta; ++i) { - token.desiredProducer = - static_cast(token.desiredProducer)->next_prod(); - if (token.desiredProducer == nullptr) { - token.desiredProducer = tail; - } - } - - token.lastKnownGlobalOffset = globalOffset; - token.currentProducer = token.desiredProducer; - token.itemsConsumedFromCurrent = 0; - return true; - } - - /////////////////////////// - // Free list - /////////////////////////// - - template struct FreeListNode { - FreeListNode() : freeListRefs(0), freeListNext(nullptr) {} - - std::atomic freeListRefs; - std::atomic freeListNext; - }; - - // A simple CAS-based lock-free free list. Not the fastest thing in the world - // under heavy contention, but simple and correct (assuming nodes are never - // freed until after the free list is destroyed), and fairly speedy under low - // contention. - template // N must inherit FreeListNode or have the same fields - // (and initialization of them) - struct FreeList { - FreeList() : freeListHead(nullptr) {} - FreeList(FreeList&& other) - : freeListHead(other.freeListHead.load(std::memory_order_relaxed)) { - other.freeListHead.store(nullptr, std::memory_order_relaxed); - } - void swap(FreeList& other) { - details::swap_relaxed(freeListHead, other.freeListHead); - } - - FreeList(FreeList const&) MOODYCAMEL_DELETE_FUNCTION; - FreeList& operator=(FreeList const&) MOODYCAMEL_DELETE_FUNCTION; - - inline void add(N* node) { + friend struct ProducerToken; + friend struct ConsumerToken; + struct ExplicitProducer; + friend struct ExplicitProducer; + struct ImplicitProducer; + friend struct ImplicitProducer; + friend class ConcurrentQueueTests; + + enum AllocationMode { CanAlloc, CannotAlloc }; + + + /////////////////////////////// + // Queue methods + /////////////////////////////// + + template + inline bool inner_enqueue(producer_token_t const& token, U&& element) + { + return static_cast(token.producer)->ConcurrentQueue::ExplicitProducer::template enqueue(std::forward(element)); + } + + template + inline bool inner_enqueue(U&& element) + { + auto producer = get_or_add_implicit_producer(); + return producer == nullptr ? false : producer->ConcurrentQueue::ImplicitProducer::template enqueue(std::forward(element)); + } + + template + inline bool inner_enqueue_bulk(producer_token_t const& token, It itemFirst, size_t count) + { + return static_cast(token.producer)->ConcurrentQueue::ExplicitProducer::template enqueue_bulk(itemFirst, count); + } + + template + inline bool inner_enqueue_bulk(It itemFirst, size_t count) + { + auto producer = get_or_add_implicit_producer(); + return producer == nullptr ? false : producer->ConcurrentQueue::ImplicitProducer::template enqueue_bulk(itemFirst, count); + } + + inline bool update_current_producer_after_rotation(consumer_token_t& token) + { + // Ah, there's been a rotation, figure out where we should be! + auto tail = producerListTail.load(std::memory_order_acquire); + if (token.desiredProducer == nullptr && tail == nullptr) { + return false; + } + auto prodCount = producerCount.load(std::memory_order_relaxed); + auto globalOffset = globalExplicitConsumerOffset.load(std::memory_order_relaxed); + if ((details::unlikely)(token.desiredProducer == nullptr)) { + // Aha, first time we're dequeueing anything. + // Figure out our local position + // Note: offset is from start, not end, but we're traversing from end -- subtract from count first + std::uint32_t offset = prodCount - 1 - (token.initialOffset % prodCount); + token.desiredProducer = tail; + for (std::uint32_t i = 0; i != offset; ++i) { + token.desiredProducer = static_cast(token.desiredProducer)->next_prod(); + if (token.desiredProducer == nullptr) { + token.desiredProducer = tail; + } + } + } + + std::uint32_t delta = globalOffset - token.lastKnownGlobalOffset; + if (delta >= prodCount) { + delta = delta % prodCount; + } + for (std::uint32_t i = 0; i != delta; ++i) { + token.desiredProducer = static_cast(token.desiredProducer)->next_prod(); + if (token.desiredProducer == nullptr) { + token.desiredProducer = tail; + } + } + + token.lastKnownGlobalOffset = globalOffset; + token.currentProducer = token.desiredProducer; + token.itemsConsumedFromCurrent = 0; + return true; + } + + + /////////////////////////// + // Free list + /////////////////////////// + + template + struct FreeListNode + { + FreeListNode() : freeListRefs(0), freeListNext(nullptr) { } + + std::atomic freeListRefs; + std::atomic freeListNext; + }; + + // A simple CAS-based lock-free free list. Not the fastest thing in the world under heavy contention, but + // simple and correct (assuming nodes are never freed until after the free list is destroyed), and fairly + // speedy under low contention. + template // N must inherit FreeListNode or have the same fields (and initialization of them) + struct FreeList + { + FreeList() : freeListHead(nullptr) { } + FreeList(FreeList&& other) : freeListHead(other.freeListHead.load(std::memory_order_relaxed)) { other.freeListHead.store(nullptr, std::memory_order_relaxed); } + void swap(FreeList& other) { details::swap_relaxed(freeListHead, other.freeListHead); } + + FreeList(FreeList const&) MOODYCAMEL_DELETE_FUNCTION; + FreeList& operator=(FreeList const&) MOODYCAMEL_DELETE_FUNCTION; + + inline void add(N* node) + { #if MCDBGQ_NOLOCKFREE_FREELIST - debug::DebugLock lock(mutex); -#endif - // We know that the should-be-on-freelist bit is 0 at this point, so it's - // safe to set it using a fetch_add - if (node->freeListRefs.fetch_add(SHOULD_BE_ON_FREELIST, - std::memory_order_acq_rel) == 0) { - // Oh look! We were the last ones referencing this node, and we know - // we want to add it to the free list, so let's do it! - add_knowing_refcount_is_zero(node); - } - } - - inline N* try_get() { + debug::DebugLock lock(mutex); +#endif + // We know that the should-be-on-freelist bit is 0 at this point, so it's safe to + // set it using a fetch_add + if (node->freeListRefs.fetch_add(SHOULD_BE_ON_FREELIST, std::memory_order_acq_rel) == 0) { + // Oh look! We were the last ones referencing this node, and we know + // we want to add it to the free list, so let's do it! + add_knowing_refcount_is_zero(node); + } + } + + inline N* try_get() + { #if MCDBGQ_NOLOCKFREE_FREELIST - debug::DebugLock lock(mutex); -#endif - auto head = freeListHead.load(std::memory_order_acquire); - while (head != nullptr) { - auto prevHead = head; - auto refs = head->freeListRefs.load(std::memory_order_relaxed); - if ((refs & REFS_MASK) == 0 || - !head->freeListRefs.compare_exchange_strong( - refs, refs + 1, std::memory_order_acquire, - std::memory_order_relaxed)) { - head = freeListHead.load(std::memory_order_acquire); - continue; - } - - // Good, reference count has been incremented (it wasn't at zero), which - // means we can read the next and not worry about it changing between - // now and the time we do the CAS - auto next = head->freeListNext.load(std::memory_order_relaxed); - if (freeListHead.compare_exchange_strong(head, next, - std::memory_order_acquire, - std::memory_order_relaxed)) { - // Yay, got the node. This means it was on the list, which means - // shouldBeOnFreeList must be false no matter the refcount (because - // nobody else knows it's been taken off yet, it can't have been put - // back on). - assert((head->freeListRefs.load(std::memory_order_relaxed) & - SHOULD_BE_ON_FREELIST) == 0); - - // Decrease refcount twice, once for our ref, and once for the list's - // ref - head->freeListRefs.fetch_sub(2, std::memory_order_release); - return head; - } - - // OK, the head must have changed on us, but we still need to decrease - // the refcount we increased. Note that we don't need to release any - // memory effects, but we do need to ensure that the reference count - // decrement happens-after the CAS on the head. - refs = prevHead->freeListRefs.fetch_sub(1, std::memory_order_acq_rel); - if (refs == SHOULD_BE_ON_FREELIST + 1) { - add_knowing_refcount_is_zero(prevHead); - } - } - - return nullptr; - } - - // Useful for traversing the list when there's no contention (e.g. to - // destroy remaining nodes) - N* head_unsafe() const { - return freeListHead.load(std::memory_order_relaxed); - } - - private: - inline void add_knowing_refcount_is_zero(N* node) { - // Since the refcount is zero, and nobody can increase it once it's zero - // (except us, and we run only one copy of this method per node at a time, - // i.e. the single thread case), then we know we can safely change the - // next pointer of the node; however, once the refcount is back above - // zero, then other threads could increase it (happens under heavy - // contention, when the refcount goes to zero in between a load and a - // refcount increment of a node in try_get, then back up to something - // non-zero, then the refcount increment is done by the other thread) -- - // so, if the CAS to add the node to the actual list fails, decrease the - // refcount and leave the add operation to the next thread who puts the - // refcount back at zero (which could be us, hence the loop). - auto head = freeListHead.load(std::memory_order_relaxed); - while (true) { - node->freeListNext.store(head, std::memory_order_relaxed); - node->freeListRefs.store(1, std::memory_order_release); - if (!freeListHead.compare_exchange_strong(head, node, - std::memory_order_release, - std::memory_order_relaxed)) { - // Hmm, the add failed, but we can only try again when the refcount - // goes back to zero - if (node->freeListRefs.fetch_add(SHOULD_BE_ON_FREELIST - 1, - std::memory_order_release) == 1) { - continue; - } - } - return; - } - } - - private: - // Implemented like a stack, but where node order doesn't matter (nodes are - // inserted out of order under contention) - std::atomic freeListHead; - - static const std::uint32_t REFS_MASK = 0x7FFFFFFF; - static const std::uint32_t SHOULD_BE_ON_FREELIST = 0x80000000; - + debug::DebugLock lock(mutex); +#endif + auto head = freeListHead.load(std::memory_order_acquire); + while (head != nullptr) { + auto prevHead = head; + auto refs = head->freeListRefs.load(std::memory_order_relaxed); + if ((refs & REFS_MASK) == 0 || !head->freeListRefs.compare_exchange_strong(refs, refs + 1, std::memory_order_acquire, std::memory_order_relaxed)) { + head = freeListHead.load(std::memory_order_acquire); + continue; + } + + // Good, reference count has been incremented (it wasn't at zero), which means we can read the + // next and not worry about it changing between now and the time we do the CAS + auto next = head->freeListNext.load(std::memory_order_relaxed); + if (freeListHead.compare_exchange_strong(head, next, std::memory_order_acquire, std::memory_order_relaxed)) { + // Yay, got the node. This means it was on the list, which means shouldBeOnFreeList must be false no + // matter the refcount (because nobody else knows it's been taken off yet, it can't have been put back on). + assert((head->freeListRefs.load(std::memory_order_relaxed) & SHOULD_BE_ON_FREELIST) == 0); + + // Decrease refcount twice, once for our ref, and once for the list's ref + head->freeListRefs.fetch_sub(2, std::memory_order_release); + return head; + } + + // OK, the head must have changed on us, but we still need to decrease the refcount we increased. + // Note that we don't need to release any memory effects, but we do need to ensure that the reference + // count decrement happens-after the CAS on the head. + refs = prevHead->freeListRefs.fetch_sub(1, std::memory_order_acq_rel); + if (refs == SHOULD_BE_ON_FREELIST + 1) { + add_knowing_refcount_is_zero(prevHead); + } + } + + return nullptr; + } + + // Useful for traversing the list when there's no contention (e.g. to destroy remaining nodes) + N* head_unsafe() const { return freeListHead.load(std::memory_order_relaxed); } + + private: + inline void add_knowing_refcount_is_zero(N* node) + { + // Since the refcount is zero, and nobody can increase it once it's zero (except us, and we run + // only one copy of this method per node at a time, i.e. the single thread case), then we know + // we can safely change the next pointer of the node; however, once the refcount is back above + // zero, then other threads could increase it (happens under heavy contention, when the refcount + // goes to zero in between a load and a refcount increment of a node in try_get, then back up to + // something non-zero, then the refcount increment is done by the other thread) -- so, if the CAS + // to add the node to the actual list fails, decrease the refcount and leave the add operation to + // the next thread who puts the refcount back at zero (which could be us, hence the loop). + auto head = freeListHead.load(std::memory_order_relaxed); + while (true) { + node->freeListNext.store(head, std::memory_order_relaxed); + node->freeListRefs.store(1, std::memory_order_release); + if (!freeListHead.compare_exchange_strong(head, node, std::memory_order_release, std::memory_order_relaxed)) { + // Hmm, the add failed, but we can only try again when the refcount goes back to zero + if (node->freeListRefs.fetch_add(SHOULD_BE_ON_FREELIST - 1, std::memory_order_release) == 1) { + continue; + } + } + return; + } + } + + private: + // Implemented like a stack, but where node order doesn't matter (nodes are inserted out of order under contention) + std::atomic freeListHead; + + static const std::uint32_t REFS_MASK = 0x7FFFFFFF; + static const std::uint32_t SHOULD_BE_ON_FREELIST = 0x80000000; + #if MCDBGQ_NOLOCKFREE_FREELIST - debug::DebugMutex mutex; -#endif - }; - - /////////////////////////// - // Block - /////////////////////////// - - enum InnerQueueContext { implicit_context = 0, explicit_context = 1 }; - - struct Block { - Block() - : next(nullptr), elementsCompletelyDequeued(0), freeListRefs(0), - freeListNext(nullptr), shouldBeOnFreeList(false), - dynamicallyAllocated(true) { + debug::DebugMutex mutex; +#endif + }; + + + /////////////////////////// + // Block + /////////////////////////// + + enum InnerQueueContext { implicit_context = 0, explicit_context = 1 }; + + struct Block + { + Block() + : next(nullptr), elementsCompletelyDequeued(0), freeListRefs(0), freeListNext(nullptr), shouldBeOnFreeList(false), dynamicallyAllocated(true) + { #if MCDBGQ_TRACKMEM - owner = nullptr; -#endif - } - - template inline bool is_empty() const { - if (context == explicit_context && - BLOCK_SIZE <= EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD) { - // Check flags - for (size_t i = 0; i < BLOCK_SIZE; ++i) { - if (!emptyFlags[i].load(std::memory_order_relaxed)) { - return false; - } - } - - // Aha, empty; make sure we have all other memory effects that happened - // before the empty flags were set - std::atomic_thread_fence(std::memory_order_acquire); - return true; - } else { - // Check counter - if (elementsCompletelyDequeued.load(std::memory_order_relaxed) == - BLOCK_SIZE) { - std::atomic_thread_fence(std::memory_order_acquire); - return true; - } - assert(elementsCompletelyDequeued.load(std::memory_order_relaxed) <= - BLOCK_SIZE); - return false; - } - } - - // Returns true if the block is now empty (does not apply in explicit - // context) - template inline bool set_empty(index_t i) { - if (context == explicit_context && - BLOCK_SIZE <= EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD) { - // Set flag - assert(!emptyFlags[BLOCK_SIZE - 1 - - static_cast( - i & static_cast(BLOCK_SIZE - 1))] - .load(std::memory_order_relaxed)); - emptyFlags[BLOCK_SIZE - 1 - - static_cast(i & - static_cast(BLOCK_SIZE - 1))] - .store(true, std::memory_order_release); - return false; - } else { - // Increment counter - auto prevVal = - elementsCompletelyDequeued.fetch_add(1, std::memory_order_release); - assert(prevVal < BLOCK_SIZE); - return prevVal == BLOCK_SIZE - 1; - } - } - - // Sets multiple contiguous item statuses to 'empty' (assumes no wrapping - // and count > 0). Returns true if the block is now empty (does not apply in - // explicit context). - template - inline bool set_many_empty(index_t i, size_t count) { - if (context == explicit_context && - BLOCK_SIZE <= EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD) { - // Set flags - std::atomic_thread_fence(std::memory_order_release); - i = BLOCK_SIZE - 1 - - static_cast(i & static_cast(BLOCK_SIZE - 1)) - - count + 1; - for (size_t j = 0; j != count; ++j) { - assert(!emptyFlags[i + j].load(std::memory_order_relaxed)); - emptyFlags[i + j].store(true, std::memory_order_relaxed); - } - return false; - } else { - // Increment counter - auto prevVal = elementsCompletelyDequeued.fetch_add( - count, std::memory_order_release); - assert(prevVal + count <= BLOCK_SIZE); - return prevVal + count == BLOCK_SIZE; - } - } - - template inline void set_all_empty() { - if (context == explicit_context && - BLOCK_SIZE <= EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD) { - // Set all flags - for (size_t i = 0; i != BLOCK_SIZE; ++i) { - emptyFlags[i].store(true, std::memory_order_relaxed); - } - } else { - // Reset counter - elementsCompletelyDequeued.store(BLOCK_SIZE, std::memory_order_relaxed); - } - } - - template inline void reset_empty() { - if (context == explicit_context && - BLOCK_SIZE <= EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD) { - // Reset flags - for (size_t i = 0; i != BLOCK_SIZE; ++i) { - emptyFlags[i].store(false, std::memory_order_relaxed); - } - } else { - // Reset counter - elementsCompletelyDequeued.store(0, std::memory_order_relaxed); - } - } - - inline T* operator[](index_t idx) MOODYCAMEL_NOEXCEPT { - return static_cast(static_cast(elements)) + - static_cast(idx & static_cast(BLOCK_SIZE - 1)); - } - inline T const* operator[](index_t idx) const MOODYCAMEL_NOEXCEPT { - return static_cast(static_cast(elements)) + - static_cast(idx & static_cast(BLOCK_SIZE - 1)); - } - - private: - // IMPORTANT: This must be the first member in Block, so that if T depends - // on the alignment of addresses returned by malloc, that alignment will be - // preserved. Apparently clang actually generates code that uses this - // assumption for AVX instructions in some cases. Ideally, we should also - // align Block to the alignment of T in case it's higher than malloc's - // 16-byte alignment, but this is hard to do in a cross-platform way. Assert - // for this case: - static_assert( - std::alignment_of::value <= - std::alignment_of::value, - "The queue does not support super-aligned types at this time"); - // Additionally, we need the alignment of Block itself to be a multiple of - // max_align_t since otherwise the appropriate padding will not be added at - // the end of Block in order to make arrays of Blocks all be properly - // aligned (not just the first one). We use a union to force this. - union { - char elements[sizeof(T) * BLOCK_SIZE]; - details::max_align_t dummy; - }; - - public: - Block* next; - std::atomic elementsCompletelyDequeued; - std::atomic emptyFlags - [BLOCK_SIZE <= EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD ? BLOCK_SIZE : 1]; - - public: - std::atomic freeListRefs; - std::atomic freeListNext; - std::atomic shouldBeOnFreeList; - bool dynamicallyAllocated; // Perhaps a better name for this would be - // 'isNotPartOfInitialBlockPool' - + owner = nullptr; +#endif + } + + template + inline bool is_empty() const + { + if (context == explicit_context && BLOCK_SIZE <= EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD) { + // Check flags + for (size_t i = 0; i < BLOCK_SIZE; ++i) { + if (!emptyFlags[i].load(std::memory_order_relaxed)) { + return false; + } + } + + // Aha, empty; make sure we have all other memory effects that happened before the empty flags were set + std::atomic_thread_fence(std::memory_order_acquire); + return true; + } + else { + // Check counter + if (elementsCompletelyDequeued.load(std::memory_order_relaxed) == BLOCK_SIZE) { + std::atomic_thread_fence(std::memory_order_acquire); + return true; + } + assert(elementsCompletelyDequeued.load(std::memory_order_relaxed) <= BLOCK_SIZE); + return false; + } + } + + // Returns true if the block is now empty (does not apply in explicit context) + template + inline bool set_empty(index_t i) + { + if (context == explicit_context && BLOCK_SIZE <= EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD) { + // Set flag + assert(!emptyFlags[BLOCK_SIZE - 1 - static_cast(i & static_cast(BLOCK_SIZE - 1))].load(std::memory_order_relaxed)); + emptyFlags[BLOCK_SIZE - 1 - static_cast(i & static_cast(BLOCK_SIZE - 1))].store(true, std::memory_order_release); + return false; + } + else { + // Increment counter + auto prevVal = elementsCompletelyDequeued.fetch_add(1, std::memory_order_release); + assert(prevVal < BLOCK_SIZE); + return prevVal == BLOCK_SIZE - 1; + } + } + + // Sets multiple contiguous item statuses to 'empty' (assumes no wrapping and count > 0). + // Returns true if the block is now empty (does not apply in explicit context). + template + inline bool set_many_empty(index_t i, size_t count) + { + if (context == explicit_context && BLOCK_SIZE <= EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD) { + // Set flags + std::atomic_thread_fence(std::memory_order_release); + i = BLOCK_SIZE - 1 - static_cast(i & static_cast(BLOCK_SIZE - 1)) - count + 1; + for (size_t j = 0; j != count; ++j) { + assert(!emptyFlags[i + j].load(std::memory_order_relaxed)); + emptyFlags[i + j].store(true, std::memory_order_relaxed); + } + return false; + } + else { + // Increment counter + auto prevVal = elementsCompletelyDequeued.fetch_add(count, std::memory_order_release); + assert(prevVal + count <= BLOCK_SIZE); + return prevVal + count == BLOCK_SIZE; + } + } + + template + inline void set_all_empty() + { + if (context == explicit_context && BLOCK_SIZE <= EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD) { + // Set all flags + for (size_t i = 0; i != BLOCK_SIZE; ++i) { + emptyFlags[i].store(true, std::memory_order_relaxed); + } + } + else { + // Reset counter + elementsCompletelyDequeued.store(BLOCK_SIZE, std::memory_order_relaxed); + } + } + + template + inline void reset_empty() + { + if (context == explicit_context && BLOCK_SIZE <= EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD) { + // Reset flags + for (size_t i = 0; i != BLOCK_SIZE; ++i) { + emptyFlags[i].store(false, std::memory_order_relaxed); + } + } + else { + // Reset counter + elementsCompletelyDequeued.store(0, std::memory_order_relaxed); + } + } + + inline T* operator[](index_t idx) MOODYCAMEL_NOEXCEPT { return static_cast(static_cast(elements)) + static_cast(idx & static_cast(BLOCK_SIZE - 1)); } + inline T const* operator[](index_t idx) const MOODYCAMEL_NOEXCEPT { return static_cast(static_cast(elements)) + static_cast(idx & static_cast(BLOCK_SIZE - 1)); } + + private: + // IMPORTANT: This must be the first member in Block, so that if T depends on the alignment of + // addresses returned by malloc, that alignment will be preserved. Apparently clang actually + // generates code that uses this assumption for AVX instructions in some cases. Ideally, we + // should also align Block to the alignment of T in case it's higher than malloc's 16-byte + // alignment, but this is hard to do in a cross-platform way. Assert for this case: + static_assert(std::alignment_of::value <= std::alignment_of::value, "The queue does not support super-aligned types at this time"); + // Additionally, we need the alignment of Block itself to be a multiple of max_align_t since + // otherwise the appropriate padding will not be added at the end of Block in order to make + // arrays of Blocks all be properly aligned (not just the first one). We use a union to force + // this. + union { + char elements[sizeof(T) * BLOCK_SIZE]; + details::max_align_t dummy; + }; + public: + Block* next; + std::atomic elementsCompletelyDequeued; + std::atomic emptyFlags[BLOCK_SIZE <= EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD ? BLOCK_SIZE : 1]; + public: + std::atomic freeListRefs; + std::atomic freeListNext; + std::atomic shouldBeOnFreeList; + bool dynamicallyAllocated; // Perhaps a better name for this would be 'isNotPartOfInitialBlockPool' + #if MCDBGQ_TRACKMEM - void* owner; + void* owner; #endif - }; - static_assert(std::alignment_of::value >= - std::alignment_of::value, - "Internal error: Blocks must be at least as aligned as the " - "type they are wrapping"); + }; + static_assert(std::alignment_of::value >= std::alignment_of::value, "Internal error: Blocks must be at least as aligned as the type they are wrapping"); + #if MCDBGQ_TRACKMEM public: - struct MemStats; - + struct MemStats; private: #endif - - /////////////////////////// - // Producer base - /////////////////////////// - - struct ProducerBase : public details::ConcurrentQueueProducerTypelessBase { - ProducerBase(ConcurrentQueue* parent_, bool isExplicit_) - : tailIndex(0), headIndex(0), dequeueOptimisticCount(0), - dequeueOvercommit(0), tailBlock(nullptr), isExplicit(isExplicit_), - parent(parent_) {} - - virtual ~ProducerBase(){}; - - template inline bool dequeue(U& element) { - if (isExplicit) { - return static_cast(this)->dequeue(element); - } else { - return static_cast(this)->dequeue(element); - } - } - - template - inline size_t dequeue_bulk(It& itemFirst, size_t max) { - if (isExplicit) { - return static_cast(this)->dequeue_bulk(itemFirst, - max); - } else { - return static_cast(this)->dequeue_bulk(itemFirst, - max); - } - } - - inline ProducerBase* next_prod() const { - return static_cast(next); - } - - inline size_t size_approx() const { - auto tail = tailIndex.load(std::memory_order_relaxed); - auto head = headIndex.load(std::memory_order_relaxed); - return details::circular_less_than(head, tail) - ? static_cast(tail - head) - : 0; - } - - inline index_t getTail() const { - return tailIndex.load(std::memory_order_relaxed); - } - - protected: - std::atomic tailIndex; // Where to enqueue to next - std::atomic headIndex; // Where to dequeue from next - - std::atomic dequeueOptimisticCount; - std::atomic dequeueOvercommit; - - Block* tailBlock; - - public: - bool isExplicit; - ConcurrentQueue* parent; - - protected: + + /////////////////////////// + // Producer base + /////////////////////////// + + struct ProducerBase : public details::ConcurrentQueueProducerTypelessBase + { + ProducerBase(ConcurrentQueue* parent_, bool isExplicit_) : + tailIndex(0), + headIndex(0), + dequeueOptimisticCount(0), + dequeueOvercommit(0), + tailBlock(nullptr), + isExplicit(isExplicit_), + parent(parent_) + { + } + + virtual ~ProducerBase() { }; + + template + inline bool dequeue(U& element) + { + if (isExplicit) { + return static_cast(this)->dequeue(element); + } + else { + return static_cast(this)->dequeue(element); + } + } + + template + inline size_t dequeue_bulk(It& itemFirst, size_t max) + { + if (isExplicit) { + return static_cast(this)->dequeue_bulk(itemFirst, max); + } + else { + return static_cast(this)->dequeue_bulk(itemFirst, max); + } + } + + inline ProducerBase* next_prod() const { return static_cast(next); } + + inline size_t size_approx() const + { + auto tail = tailIndex.load(std::memory_order_relaxed); + auto head = headIndex.load(std::memory_order_relaxed); + return details::circular_less_than(head, tail) ? static_cast(tail - head) : 0; + } + + inline index_t getTail() const { return tailIndex.load(std::memory_order_relaxed); } + protected: + std::atomic tailIndex; // Where to enqueue to next + std::atomic headIndex; // Where to dequeue from next + + std::atomic dequeueOptimisticCount; + std::atomic dequeueOvercommit; + + Block* tailBlock; + + public: + bool isExplicit; + ConcurrentQueue* parent; + + protected: #if MCDBGQ_TRACKMEM - friend struct MemStats; -#endif - }; - - /////////////////////////// - // Explicit queue - /////////////////////////// - - struct ExplicitProducer : public ProducerBase { - explicit ExplicitProducer(ConcurrentQueue* parent) - : ProducerBase(parent, true), blockIndex(nullptr), - pr_blockIndexSlotsUsed(0), - pr_blockIndexSize(EXPLICIT_INITIAL_INDEX_SIZE >> 1), - pr_blockIndexFront(0), pr_blockIndexEntries(nullptr), - pr_blockIndexRaw(nullptr) { - size_t poolBasedIndexSize = - details::ceil_to_pow_2(parent->initialBlockPoolSize) >> 1; - if (poolBasedIndexSize > pr_blockIndexSize) { - pr_blockIndexSize = poolBasedIndexSize; - } - - new_block_index(0); // This creates an index with double the number of - // current entries, i.e. EXPLICIT_INITIAL_INDEX_SIZE - } - - ~ExplicitProducer() { - // Destruct any elements not yet dequeued. - // Since we're in the destructor, we can assume all elements - // are either completely dequeued or completely not (no halfways). - if (this->tailBlock != - nullptr) { // Note this means there must be a block index too - // First find the block that's partially dequeued, if any - Block* halfDequeuedBlock = nullptr; - if ((this->headIndex.load(std::memory_order_relaxed) & - static_cast(BLOCK_SIZE - 1)) != 0) { - // The head's not on a block boundary, meaning a block somewhere is - // partially dequeued (or the head block is the tail block and was - // fully dequeued, but the head/tail are still not on a boundary) - size_t i = (pr_blockIndexFront - pr_blockIndexSlotsUsed) & - (pr_blockIndexSize - 1); - while (details::circular_less_than( - pr_blockIndexEntries[i].base + BLOCK_SIZE, - this->headIndex.load(std::memory_order_relaxed))) { - i = (i + 1) & (pr_blockIndexSize - 1); - } - assert(details::circular_less_than( - pr_blockIndexEntries[i].base, - this->headIndex.load(std::memory_order_relaxed))); - halfDequeuedBlock = pr_blockIndexEntries[i].block; - } - - // Start at the head block (note the first line in the loop gives us the - // head from the tail on the first iteration) - auto block = this->tailBlock; - do { - block = block->next; - if (block->ConcurrentQueue::Block::template is_empty< - explicit_context>()) { - continue; - } - - size_t i = 0; // Offset into block - if (block == halfDequeuedBlock) { - i = static_cast( - this->headIndex.load(std::memory_order_relaxed) & - static_cast(BLOCK_SIZE - 1)); - } - - // Walk through all the items in the block; if this is the tail block, - // we need to stop when we reach the tail index - auto lastValidIndex = - (this->tailIndex.load(std::memory_order_relaxed) & - static_cast(BLOCK_SIZE - 1)) == 0 - ? BLOCK_SIZE - : static_cast( - this->tailIndex.load(std::memory_order_relaxed) & - static_cast(BLOCK_SIZE - 1)); - while (i != BLOCK_SIZE && - (block != this->tailBlock || i != lastValidIndex)) { - (*block)[i++]->~T(); - } - } while (block != this->tailBlock); - } - - // Destroy all blocks that we own - if (this->tailBlock != nullptr) { - auto block = this->tailBlock; - do { - auto nextBlock = block->next; - if (block->dynamicallyAllocated) { - destroy(block); - } else { - this->parent->add_block_to_free_list(block); - } - block = nextBlock; - } while (block != this->tailBlock); - } - - // Destroy the block indices - auto header = static_cast(pr_blockIndexRaw); - while (header != nullptr) { - auto prev = static_cast(header->prev); - header->~BlockIndexHeader(); - (Traits::free)(header); - header = prev; - } - } - - template - inline bool enqueue(U&& element) { - index_t currentTailIndex = - this->tailIndex.load(std::memory_order_relaxed); - index_t newTailIndex = 1 + currentTailIndex; - if ((currentTailIndex & static_cast(BLOCK_SIZE - 1)) == 0) { - // We reached the end of a block, start a new one - auto startBlock = this->tailBlock; - auto originalBlockIndexSlotsUsed = pr_blockIndexSlotsUsed; - if (this->tailBlock != nullptr && - this->tailBlock->next->ConcurrentQueue::Block::template is_empty< - explicit_context>()) { - // We can re-use the block ahead of us, it's empty! - this->tailBlock = this->tailBlock->next; - this->tailBlock->ConcurrentQueue::Block::template reset_empty< - explicit_context>(); - - // We'll put the block on the block index (guaranteed to be room since - // we're conceptually removing the last block from it first -- except - // instead of removing then adding, we can just overwrite). Note that - // there must be a valid block index here, since even if allocation - // failed in the ctor, it would have been re-attempted when adding the - // first block to the queue; since there is such a block, a block - // index must have been successfully allocated. - } else { - // Whatever head value we see here is >= the last value we saw here - // (relatively), and <= its current value. Since we have the most - // recent tail, the head must be - // <= to it. - auto head = this->headIndex.load(std::memory_order_relaxed); - assert(!details::circular_less_than(currentTailIndex, head)); - if (!details::circular_less_than(head, currentTailIndex + - BLOCK_SIZE) || - (MAX_SUBQUEUE_SIZE != details::const_numeric_max::value && - (MAX_SUBQUEUE_SIZE == 0 || - MAX_SUBQUEUE_SIZE - BLOCK_SIZE < currentTailIndex - head))) { - // We can't enqueue in another block because there's not enough - // leeway -- the tail could surpass the head by the time the block - // fills up! (Or we'll exceed the size limit, if the second part of - // the condition was true.) - return false; - } - // We're going to need a new block; check that the block index has - // room - if (pr_blockIndexRaw == nullptr || - pr_blockIndexSlotsUsed == pr_blockIndexSize) { - // Hmm, the circular block index is already full -- we'll need - // to allocate a new index. Note pr_blockIndexRaw can only be - // nullptr if the initial allocation failed in the constructor. - - if (allocMode == CannotAlloc || - !new_block_index(pr_blockIndexSlotsUsed)) { - return false; - } - } - - // Insert a new block in the circular linked list - auto newBlock = - this->parent - ->ConcurrentQueue::template requisition_block(); - if (newBlock == nullptr) { - return false; - } + friend struct MemStats; +#endif + }; + + + /////////////////////////// + // Explicit queue + /////////////////////////// + + struct ExplicitProducer : public ProducerBase + { + explicit ExplicitProducer(ConcurrentQueue* parent) : + ProducerBase(parent, true), + blockIndex(nullptr), + pr_blockIndexSlotsUsed(0), + pr_blockIndexSize(EXPLICIT_INITIAL_INDEX_SIZE >> 1), + pr_blockIndexFront(0), + pr_blockIndexEntries(nullptr), + pr_blockIndexRaw(nullptr) + { + size_t poolBasedIndexSize = details::ceil_to_pow_2(parent->initialBlockPoolSize) >> 1; + if (poolBasedIndexSize > pr_blockIndexSize) { + pr_blockIndexSize = poolBasedIndexSize; + } + + new_block_index(0); // This creates an index with double the number of current entries, i.e. EXPLICIT_INITIAL_INDEX_SIZE + } + + ~ExplicitProducer() + { + // Destruct any elements not yet dequeued. + // Since we're in the destructor, we can assume all elements + // are either completely dequeued or completely not (no halfways). + if (this->tailBlock != nullptr) { // Note this means there must be a block index too + // First find the block that's partially dequeued, if any + Block* halfDequeuedBlock = nullptr; + if ((this->headIndex.load(std::memory_order_relaxed) & static_cast(BLOCK_SIZE - 1)) != 0) { + // The head's not on a block boundary, meaning a block somewhere is partially dequeued + // (or the head block is the tail block and was fully dequeued, but the head/tail are still not on a boundary) + size_t i = (pr_blockIndexFront - pr_blockIndexSlotsUsed) & (pr_blockIndexSize - 1); + while (details::circular_less_than(pr_blockIndexEntries[i].base + BLOCK_SIZE, this->headIndex.load(std::memory_order_relaxed))) { + i = (i + 1) & (pr_blockIndexSize - 1); + } + assert(details::circular_less_than(pr_blockIndexEntries[i].base, this->headIndex.load(std::memory_order_relaxed))); + halfDequeuedBlock = pr_blockIndexEntries[i].block; + } + + // Start at the head block (note the first line in the loop gives us the head from the tail on the first iteration) + auto block = this->tailBlock; + do { + block = block->next; + if (block->ConcurrentQueue::Block::template is_empty()) { + continue; + } + + size_t i = 0; // Offset into block + if (block == halfDequeuedBlock) { + i = static_cast(this->headIndex.load(std::memory_order_relaxed) & static_cast(BLOCK_SIZE - 1)); + } + + // Walk through all the items in the block; if this is the tail block, we need to stop when we reach the tail index + auto lastValidIndex = (this->tailIndex.load(std::memory_order_relaxed) & static_cast(BLOCK_SIZE - 1)) == 0 ? BLOCK_SIZE : static_cast(this->tailIndex.load(std::memory_order_relaxed) & static_cast(BLOCK_SIZE - 1)); + while (i != BLOCK_SIZE && (block != this->tailBlock || i != lastValidIndex)) { + (*block)[i++]->~T(); + } + } while (block != this->tailBlock); + } + + // Destroy all blocks that we own + if (this->tailBlock != nullptr) { + auto block = this->tailBlock; + do { + auto nextBlock = block->next; + if (block->dynamicallyAllocated) { + destroy(block); + } + else { + this->parent->add_block_to_free_list(block); + } + block = nextBlock; + } while (block != this->tailBlock); + } + + // Destroy the block indices + auto header = static_cast(pr_blockIndexRaw); + while (header != nullptr) { + auto prev = static_cast(header->prev); + header->~BlockIndexHeader(); + (Traits::free)(header); + header = prev; + } + } + + template + inline bool enqueue(U&& element) + { + index_t currentTailIndex = this->tailIndex.load(std::memory_order_relaxed); + index_t newTailIndex = 1 + currentTailIndex; + if ((currentTailIndex & static_cast(BLOCK_SIZE - 1)) == 0) { + // We reached the end of a block, start a new one + auto startBlock = this->tailBlock; + auto originalBlockIndexSlotsUsed = pr_blockIndexSlotsUsed; + if (this->tailBlock != nullptr && this->tailBlock->next->ConcurrentQueue::Block::template is_empty()) { + // We can re-use the block ahead of us, it's empty! + this->tailBlock = this->tailBlock->next; + this->tailBlock->ConcurrentQueue::Block::template reset_empty(); + + // We'll put the block on the block index (guaranteed to be room since we're conceptually removing the + // last block from it first -- except instead of removing then adding, we can just overwrite). + // Note that there must be a valid block index here, since even if allocation failed in the ctor, + // it would have been re-attempted when adding the first block to the queue; since there is such + // a block, a block index must have been successfully allocated. + } + else { + // Whatever head value we see here is >= the last value we saw here (relatively), + // and <= its current value. Since we have the most recent tail, the head must be + // <= to it. + auto head = this->headIndex.load(std::memory_order_relaxed); + assert(!details::circular_less_than(currentTailIndex, head)); + if (!details::circular_less_than(head, currentTailIndex + BLOCK_SIZE) + || (MAX_SUBQUEUE_SIZE != details::const_numeric_max::value && (MAX_SUBQUEUE_SIZE == 0 || MAX_SUBQUEUE_SIZE - BLOCK_SIZE < currentTailIndex - head))) { + // We can't enqueue in another block because there's not enough leeway -- the + // tail could surpass the head by the time the block fills up! (Or we'll exceed + // the size limit, if the second part of the condition was true.) + return false; + } + // We're going to need a new block; check that the block index has room + if (pr_blockIndexRaw == nullptr || pr_blockIndexSlotsUsed == pr_blockIndexSize) { + // Hmm, the circular block index is already full -- we'll need + // to allocate a new index. Note pr_blockIndexRaw can only be nullptr if + // the initial allocation failed in the constructor. + + if (allocMode == CannotAlloc || !new_block_index(pr_blockIndexSlotsUsed)) { + return false; + } + } + + // Insert a new block in the circular linked list + auto newBlock = this->parent->ConcurrentQueue::template requisition_block(); + if (newBlock == nullptr) { + return false; + } #if MCDBGQ_TRACKMEM - newBlock->owner = this; -#endif - newBlock->ConcurrentQueue::Block::template reset_empty< - explicit_context>(); - if (this->tailBlock == nullptr) { - newBlock->next = newBlock; - } else { - newBlock->next = this->tailBlock->next; - this->tailBlock->next = newBlock; - } - this->tailBlock = newBlock; - ++pr_blockIndexSlotsUsed; - } - - if (!MOODYCAMEL_NOEXCEPT_CTOR( - T, U, new (nullptr) T(std::forward(element)))) { - // The constructor may throw. We want the element not to appear in the - // queue in that case (without corrupting the queue): - MOODYCAMEL_TRY { - new ((*this->tailBlock)[currentTailIndex]) - T(std::forward(element)); - } - MOODYCAMEL_CATCH(...) { - // Revert change to the current block, but leave the new block - // available for next time - pr_blockIndexSlotsUsed = originalBlockIndexSlotsUsed; - this->tailBlock = - startBlock == nullptr ? this->tailBlock : startBlock; - MOODYCAMEL_RETHROW; - } - } else { - (void)startBlock; - (void)originalBlockIndexSlotsUsed; - } - - // Add block to block index - auto& entry = blockIndex.load(std::memory_order_relaxed) - ->entries[pr_blockIndexFront]; - entry.base = currentTailIndex; - entry.block = this->tailBlock; - blockIndex.load(std::memory_order_relaxed) - ->front.store(pr_blockIndexFront, std::memory_order_release); - pr_blockIndexFront = (pr_blockIndexFront + 1) & (pr_blockIndexSize - 1); - - if (!MOODYCAMEL_NOEXCEPT_CTOR( - T, U, new (nullptr) T(std::forward(element)))) { - this->tailIndex.store(newTailIndex, std::memory_order_release); - return true; - } - } - - // Enqueue - new ((*this->tailBlock)[currentTailIndex]) T(std::forward(element)); - - this->tailIndex.store(newTailIndex, std::memory_order_release); - return true; - } - - template bool dequeue(U& element) { - auto tail = this->tailIndex.load(std::memory_order_relaxed); - auto overcommit = this->dequeueOvercommit.load(std::memory_order_relaxed); - if (details::circular_less_than( - this->dequeueOptimisticCount.load(std::memory_order_relaxed) - - overcommit, - tail)) { - // Might be something to dequeue, let's give it a try - - // Note that this if is purely for performance purposes in the common - // case when the queue is empty and the values are eventually consistent - // -- we may enter here spuriously. - - // Note that whatever the values of overcommit and tail are, they are - // not going to change (unless we change them) and must be the same - // value at this point (inside the if) as when the if condition was - // evaluated. - - // We insert an acquire fence here to synchronize-with the release upon - // incrementing dequeueOvercommit below. This ensures that whatever the - // value we got loaded into overcommit, the load of dequeueOptisticCount - // in the fetch_add below will result in a value at least as recent as - // that (and therefore at least as large). Note that I believe a - // compiler (signal) fence here would be sufficient due to the nature of - // fetch_add (all read-modify-write operations are guaranteed to work on - // the latest value in the modification order), but unfortunately that - // can't be shown to be correct using only the C++11 standard. See - // http://stackoverflow.com/questions/18223161/what-are-the-c11-memory-ordering-guarantees-in-this-corner-case - std::atomic_thread_fence(std::memory_order_acquire); - - // Increment optimistic counter, then check if it went over the boundary - auto myDequeueCount = this->dequeueOptimisticCount.fetch_add( - 1, std::memory_order_relaxed); - - // Note that since dequeueOvercommit must be <= dequeueOptimisticCount - // (because dequeueOvercommit is only ever incremented after - // dequeueOptimisticCount -- this is enforced in the `else` block - // below), and since we now have a version of dequeueOptimisticCount - // that is at least as recent as overcommit (due to the release upon - // incrementing dequeueOvercommit and the acquire above that - // synchronizes with it), overcommit <= myDequeueCount. - assert(overcommit <= myDequeueCount); - - // Note that we reload tail here in case it changed; it will be the same - // value as before or greater, since this load is sequenced after - // (happens after) the earlier load above. This is supported by - // read-read coherency (as defined in the standard), explained here: - // http://en.cppreference.com/w/cpp/atomic/memory_order - tail = this->tailIndex.load(std::memory_order_acquire); - if (details::likely(details::circular_less_than( - myDequeueCount - overcommit, tail))) { - // Guaranteed to be at least one element to dequeue! - - // Get the index. Note that since there's guaranteed to be at least - // one element, this will never exceed tail. We need to do an - // acquire-release fence here since it's possible that whatever - // condition got us to this point was for an earlier enqueued element - // (that we already see the memory effects for), but that by the time - // we increment somebody else has incremented it, and we need to see - // the memory effects for *that* element, which is in such a case is - // necessarily visible on the thread that incremented it in the first - // place with the more current condition (they must have acquired a - // tail that is at least as recent). - auto index = this->headIndex.fetch_add(1, std::memory_order_acq_rel); - - // Determine which block the element is in - - auto localBlockIndex = blockIndex.load(std::memory_order_acquire); - auto localBlockIndexHead = - localBlockIndex->front.load(std::memory_order_acquire); - - // We need to be careful here about subtracting and dividing because - // of index wrap-around. When an index wraps, we need to preserve the - // sign of the offset when dividing it by the block size (in order to - // get a correct signed block count offset in all cases): - auto headBase = localBlockIndex->entries[localBlockIndexHead].base; - auto blockBaseIndex = index & ~static_cast(BLOCK_SIZE - 1); - auto offset = static_cast( - static_cast::type>( - blockBaseIndex - headBase) / - BLOCK_SIZE); - auto block = localBlockIndex - ->entries[(localBlockIndexHead + offset) & - (localBlockIndex->size - 1)] - .block; - - // Dequeue - auto& el = *((*block)[index]); - if (!MOODYCAMEL_NOEXCEPT_ASSIGN(T, T&&, element = std::move(el))) { - // Make sure the element is still fully dequeued and destroyed even - // if the assignment throws - struct Guard { - Block* block; - index_t index; - - ~Guard() { - (*block)[index]->~T(); - block->ConcurrentQueue::Block::template set_empty< - explicit_context>(index); - } - } guard = {block, index}; - - element = std::move(el); - } else { - element = std::move(el); - el.~T(); - block->ConcurrentQueue::Block::template set_empty( - index); - } - - return true; - } else { - // Wasn't anything to dequeue after all; make the effective dequeue - // count eventually consistent - this->dequeueOvercommit.fetch_add( - 1, std::memory_order_release); // Release so that the fetch_add on - // dequeueOptimisticCount is - // guaranteed to happen before this - // write - } - } - - return false; - } - - template - bool enqueue_bulk(It itemFirst, size_t count) { - // First, we need to make sure we have enough room to enqueue all of the - // elements; this means pre-allocating blocks and putting them in the - // block index (but only if all the allocations succeeded). - index_t startTailIndex = this->tailIndex.load(std::memory_order_relaxed); - auto startBlock = this->tailBlock; - auto originalBlockIndexFront = pr_blockIndexFront; - auto originalBlockIndexSlotsUsed = pr_blockIndexSlotsUsed; - - Block* firstAllocatedBlock = nullptr; - - // Figure out how many blocks we'll need to allocate, and do so - size_t blockBaseDiff = - ((startTailIndex + count - 1) & - ~static_cast(BLOCK_SIZE - 1)) - - ((startTailIndex - 1) & ~static_cast(BLOCK_SIZE - 1)); - index_t currentTailIndex = - (startTailIndex - 1) & ~static_cast(BLOCK_SIZE - 1); - if (blockBaseDiff > 0) { - // Allocate as many blocks as possible from ahead - while (blockBaseDiff > 0 && this->tailBlock != nullptr && - this->tailBlock->next != firstAllocatedBlock && - this->tailBlock->next->ConcurrentQueue::Block::template is_empty< - explicit_context>()) { - blockBaseDiff -= static_cast(BLOCK_SIZE); - currentTailIndex += static_cast(BLOCK_SIZE); - - this->tailBlock = this->tailBlock->next; - firstAllocatedBlock = firstAllocatedBlock == nullptr - ? this->tailBlock - : firstAllocatedBlock; - - auto& entry = blockIndex.load(std::memory_order_relaxed) - ->entries[pr_blockIndexFront]; - entry.base = currentTailIndex; - entry.block = this->tailBlock; - pr_blockIndexFront = - (pr_blockIndexFront + 1) & (pr_blockIndexSize - 1); - } - - // Now allocate as many blocks as necessary from the block pool - while (blockBaseDiff > 0) { - blockBaseDiff -= static_cast(BLOCK_SIZE); - currentTailIndex += static_cast(BLOCK_SIZE); - - auto head = this->headIndex.load(std::memory_order_relaxed); - assert(!details::circular_less_than(currentTailIndex, head)); - bool full = - !details::circular_less_than(head, currentTailIndex + - BLOCK_SIZE) || - (MAX_SUBQUEUE_SIZE != details::const_numeric_max::value && - (MAX_SUBQUEUE_SIZE == 0 || - MAX_SUBQUEUE_SIZE - BLOCK_SIZE < currentTailIndex - head)); - if (pr_blockIndexRaw == nullptr || - pr_blockIndexSlotsUsed == pr_blockIndexSize || full) { - if (allocMode == CannotAlloc || full || - !new_block_index(originalBlockIndexSlotsUsed)) { - // Failed to allocate, undo changes (but keep injected blocks) - pr_blockIndexFront = originalBlockIndexFront; - pr_blockIndexSlotsUsed = originalBlockIndexSlotsUsed; - this->tailBlock = - startBlock == nullptr ? firstAllocatedBlock : startBlock; - return false; - } - - // pr_blockIndexFront is updated inside new_block_index, so we need - // to update our fallback value too (since we keep the new index - // even if we later fail) - originalBlockIndexFront = originalBlockIndexSlotsUsed; - } - - // Insert a new block in the circular linked list - auto newBlock = - this->parent - ->ConcurrentQueue::template requisition_block(); - if (newBlock == nullptr) { - pr_blockIndexFront = originalBlockIndexFront; - pr_blockIndexSlotsUsed = originalBlockIndexSlotsUsed; - this->tailBlock = - startBlock == nullptr ? firstAllocatedBlock : startBlock; - return false; - } - + newBlock->owner = this; +#endif + newBlock->ConcurrentQueue::Block::template reset_empty(); + if (this->tailBlock == nullptr) { + newBlock->next = newBlock; + } + else { + newBlock->next = this->tailBlock->next; + this->tailBlock->next = newBlock; + } + this->tailBlock = newBlock; + ++pr_blockIndexSlotsUsed; + } + + if (!MOODYCAMEL_NOEXCEPT_CTOR(T, U, new (nullptr) T(std::forward(element)))) { + // The constructor may throw. We want the element not to appear in the queue in + // that case (without corrupting the queue): + MOODYCAMEL_TRY { + new ((*this->tailBlock)[currentTailIndex]) T(std::forward(element)); + } + MOODYCAMEL_CATCH (...) { + // Revert change to the current block, but leave the new block available + // for next time + pr_blockIndexSlotsUsed = originalBlockIndexSlotsUsed; + this->tailBlock = startBlock == nullptr ? this->tailBlock : startBlock; + MOODYCAMEL_RETHROW; + } + } + else { + (void)startBlock; + (void)originalBlockIndexSlotsUsed; + } + + // Add block to block index + auto& entry = blockIndex.load(std::memory_order_relaxed)->entries[pr_blockIndexFront]; + entry.base = currentTailIndex; + entry.block = this->tailBlock; + blockIndex.load(std::memory_order_relaxed)->front.store(pr_blockIndexFront, std::memory_order_release); + pr_blockIndexFront = (pr_blockIndexFront + 1) & (pr_blockIndexSize - 1); + + if (!MOODYCAMEL_NOEXCEPT_CTOR(T, U, new (nullptr) T(std::forward(element)))) { + this->tailIndex.store(newTailIndex, std::memory_order_release); + return true; + } + } + + // Enqueue + new ((*this->tailBlock)[currentTailIndex]) T(std::forward(element)); + + this->tailIndex.store(newTailIndex, std::memory_order_release); + return true; + } + + template + bool dequeue(U& element) + { + auto tail = this->tailIndex.load(std::memory_order_relaxed); + auto overcommit = this->dequeueOvercommit.load(std::memory_order_relaxed); + if (details::circular_less_than(this->dequeueOptimisticCount.load(std::memory_order_relaxed) - overcommit, tail)) { + // Might be something to dequeue, let's give it a try + + // Note that this if is purely for performance purposes in the common case when the queue is + // empty and the values are eventually consistent -- we may enter here spuriously. + + // Note that whatever the values of overcommit and tail are, they are not going to change (unless we + // change them) and must be the same value at this point (inside the if) as when the if condition was + // evaluated. + + // We insert an acquire fence here to synchronize-with the release upon incrementing dequeueOvercommit below. + // This ensures that whatever the value we got loaded into overcommit, the load of dequeueOptisticCount in + // the fetch_add below will result in a value at least as recent as that (and therefore at least as large). + // Note that I believe a compiler (signal) fence here would be sufficient due to the nature of fetch_add (all + // read-modify-write operations are guaranteed to work on the latest value in the modification order), but + // unfortunately that can't be shown to be correct using only the C++11 standard. + // See http://stackoverflow.com/questions/18223161/what-are-the-c11-memory-ordering-guarantees-in-this-corner-case + std::atomic_thread_fence(std::memory_order_acquire); + + // Increment optimistic counter, then check if it went over the boundary + auto myDequeueCount = this->dequeueOptimisticCount.fetch_add(1, std::memory_order_relaxed); + + // Note that since dequeueOvercommit must be <= dequeueOptimisticCount (because dequeueOvercommit is only ever + // incremented after dequeueOptimisticCount -- this is enforced in the `else` block below), and since we now + // have a version of dequeueOptimisticCount that is at least as recent as overcommit (due to the release upon + // incrementing dequeueOvercommit and the acquire above that synchronizes with it), overcommit <= myDequeueCount. + // However, we can't assert this since both dequeueOptimisticCount and dequeueOvercommit may (independently) + // overflow; in such a case, though, the logic still holds since the difference between the two is maintained. + + // Note that we reload tail here in case it changed; it will be the same value as before or greater, since + // this load is sequenced after (happens after) the earlier load above. This is supported by read-read + // coherency (as defined in the standard), explained here: http://en.cppreference.com/w/cpp/atomic/memory_order + tail = this->tailIndex.load(std::memory_order_acquire); + if ((details::likely)(details::circular_less_than(myDequeueCount - overcommit, tail))) { + // Guaranteed to be at least one element to dequeue! + + // Get the index. Note that since there's guaranteed to be at least one element, this + // will never exceed tail. We need to do an acquire-release fence here since it's possible + // that whatever condition got us to this point was for an earlier enqueued element (that + // we already see the memory effects for), but that by the time we increment somebody else + // has incremented it, and we need to see the memory effects for *that* element, which is + // in such a case is necessarily visible on the thread that incremented it in the first + // place with the more current condition (they must have acquired a tail that is at least + // as recent). + auto index = this->headIndex.fetch_add(1, std::memory_order_acq_rel); + + + // Determine which block the element is in + + auto localBlockIndex = blockIndex.load(std::memory_order_acquire); + auto localBlockIndexHead = localBlockIndex->front.load(std::memory_order_acquire); + + // We need to be careful here about subtracting and dividing because of index wrap-around. + // When an index wraps, we need to preserve the sign of the offset when dividing it by the + // block size (in order to get a correct signed block count offset in all cases): + auto headBase = localBlockIndex->entries[localBlockIndexHead].base; + auto blockBaseIndex = index & ~static_cast(BLOCK_SIZE - 1); + auto offset = static_cast(static_cast::type>(blockBaseIndex - headBase) / BLOCK_SIZE); + auto block = localBlockIndex->entries[(localBlockIndexHead + offset) & (localBlockIndex->size - 1)].block; + + // Dequeue + auto& el = *((*block)[index]); + if (!MOODYCAMEL_NOEXCEPT_ASSIGN(T, T&&, element = std::move(el))) { + // Make sure the element is still fully dequeued and destroyed even if the assignment + // throws + struct Guard { + Block* block; + index_t index; + + ~Guard() + { + (*block)[index]->~T(); + block->ConcurrentQueue::Block::template set_empty(index); + } + } guard = { block, index }; + + element = std::move(el); + } + else { + element = std::move(el); + el.~T(); + block->ConcurrentQueue::Block::template set_empty(index); + } + + return true; + } + else { + // Wasn't anything to dequeue after all; make the effective dequeue count eventually consistent + this->dequeueOvercommit.fetch_add(1, std::memory_order_release); // Release so that the fetch_add on dequeueOptimisticCount is guaranteed to happen before this write + } + } + + return false; + } + + template + bool enqueue_bulk(It itemFirst, size_t count) + { + // First, we need to make sure we have enough room to enqueue all of the elements; + // this means pre-allocating blocks and putting them in the block index (but only if + // all the allocations succeeded). + index_t startTailIndex = this->tailIndex.load(std::memory_order_relaxed); + auto startBlock = this->tailBlock; + auto originalBlockIndexFront = pr_blockIndexFront; + auto originalBlockIndexSlotsUsed = pr_blockIndexSlotsUsed; + + Block* firstAllocatedBlock = nullptr; + + // Figure out how many blocks we'll need to allocate, and do so + size_t blockBaseDiff = ((startTailIndex + count - 1) & ~static_cast(BLOCK_SIZE - 1)) - ((startTailIndex - 1) & ~static_cast(BLOCK_SIZE - 1)); + index_t currentTailIndex = (startTailIndex - 1) & ~static_cast(BLOCK_SIZE - 1); + if (blockBaseDiff > 0) { + // Allocate as many blocks as possible from ahead + while (blockBaseDiff > 0 && this->tailBlock != nullptr && this->tailBlock->next != firstAllocatedBlock && this->tailBlock->next->ConcurrentQueue::Block::template is_empty()) { + blockBaseDiff -= static_cast(BLOCK_SIZE); + currentTailIndex += static_cast(BLOCK_SIZE); + + this->tailBlock = this->tailBlock->next; + firstAllocatedBlock = firstAllocatedBlock == nullptr ? this->tailBlock : firstAllocatedBlock; + + auto& entry = blockIndex.load(std::memory_order_relaxed)->entries[pr_blockIndexFront]; + entry.base = currentTailIndex; + entry.block = this->tailBlock; + pr_blockIndexFront = (pr_blockIndexFront + 1) & (pr_blockIndexSize - 1); + } + + // Now allocate as many blocks as necessary from the block pool + while (blockBaseDiff > 0) { + blockBaseDiff -= static_cast(BLOCK_SIZE); + currentTailIndex += static_cast(BLOCK_SIZE); + + auto head = this->headIndex.load(std::memory_order_relaxed); + assert(!details::circular_less_than(currentTailIndex, head)); + bool full = !details::circular_less_than(head, currentTailIndex + BLOCK_SIZE) || (MAX_SUBQUEUE_SIZE != details::const_numeric_max::value && (MAX_SUBQUEUE_SIZE == 0 || MAX_SUBQUEUE_SIZE - BLOCK_SIZE < currentTailIndex - head)); + if (pr_blockIndexRaw == nullptr || pr_blockIndexSlotsUsed == pr_blockIndexSize || full) { + if (allocMode == CannotAlloc || full || !new_block_index(originalBlockIndexSlotsUsed)) { + // Failed to allocate, undo changes (but keep injected blocks) + pr_blockIndexFront = originalBlockIndexFront; + pr_blockIndexSlotsUsed = originalBlockIndexSlotsUsed; + this->tailBlock = startBlock == nullptr ? firstAllocatedBlock : startBlock; + return false; + } + + // pr_blockIndexFront is updated inside new_block_index, so we need to + // update our fallback value too (since we keep the new index even if we + // later fail) + originalBlockIndexFront = originalBlockIndexSlotsUsed; + } + + // Insert a new block in the circular linked list + auto newBlock = this->parent->ConcurrentQueue::template requisition_block(); + if (newBlock == nullptr) { + pr_blockIndexFront = originalBlockIndexFront; + pr_blockIndexSlotsUsed = originalBlockIndexSlotsUsed; + this->tailBlock = startBlock == nullptr ? firstAllocatedBlock : startBlock; + return false; + } + #if MCDBGQ_TRACKMEM - newBlock->owner = this; -#endif - newBlock->ConcurrentQueue::Block::template set_all_empty< - explicit_context>(); - if (this->tailBlock == nullptr) { - newBlock->next = newBlock; - } else { - newBlock->next = this->tailBlock->next; - this->tailBlock->next = newBlock; - } - this->tailBlock = newBlock; - firstAllocatedBlock = firstAllocatedBlock == nullptr - ? this->tailBlock - : firstAllocatedBlock; - - ++pr_blockIndexSlotsUsed; - - auto& entry = blockIndex.load(std::memory_order_relaxed) - ->entries[pr_blockIndexFront]; - entry.base = currentTailIndex; - entry.block = this->tailBlock; - pr_blockIndexFront = - (pr_blockIndexFront + 1) & (pr_blockIndexSize - 1); - } - - // Excellent, all allocations succeeded. Reset each block's emptiness - // before we fill them up, and publish the new block index front - auto block = firstAllocatedBlock; - while (true) { - block->ConcurrentQueue::Block::template reset_empty< - explicit_context>(); - if (block == this->tailBlock) { - break; - } - block = block->next; - } - - if (MOODYCAMEL_NOEXCEPT_CTOR( - T, decltype(*itemFirst), - new (nullptr) T(details::deref_noexcept(itemFirst)))) { - blockIndex.load(std::memory_order_relaxed) - ->front.store((pr_blockIndexFront - 1) & (pr_blockIndexSize - 1), - std::memory_order_release); - } - } - - // Enqueue, one block at a time - index_t newTailIndex = startTailIndex + static_cast(count); - currentTailIndex = startTailIndex; - auto endBlock = this->tailBlock; - this->tailBlock = startBlock; - assert((startTailIndex & static_cast(BLOCK_SIZE - 1)) != 0 || - firstAllocatedBlock != nullptr || count == 0); - if ((startTailIndex & static_cast(BLOCK_SIZE - 1)) == 0 && - firstAllocatedBlock != nullptr) { - this->tailBlock = firstAllocatedBlock; - } - while (true) { - auto stopIndex = - (currentTailIndex & ~static_cast(BLOCK_SIZE - 1)) + - static_cast(BLOCK_SIZE); - if (details::circular_less_than(newTailIndex, stopIndex)) { - stopIndex = newTailIndex; - } - if (MOODYCAMEL_NOEXCEPT_CTOR( - T, decltype(*itemFirst), - new (nullptr) T(details::deref_noexcept(itemFirst)))) { - while (currentTailIndex != stopIndex) { - new ((*this->tailBlock)[currentTailIndex++]) T(*itemFirst++); - } - } else { - MOODYCAMEL_TRY { - while (currentTailIndex != stopIndex) { - // Must use copy constructor even if move constructor is available - // because we may have to revert if there's an exception. - // Sorry about the horrible templated next line, but it was the - // only way to disable moving *at compile time*, which is - // important because a type may only define a (noexcept) move - // constructor, and so calls to the cctor will not compile, even - // if they are in an if branch that will never be executed - new ((*this->tailBlock)[currentTailIndex]) - T(details::nomove_if<(bool)!MOODYCAMEL_NOEXCEPT_CTOR( - T, decltype(*itemFirst), - new (nullptr) T(details::deref_noexcept( - itemFirst)))>::eval(*itemFirst)); - ++currentTailIndex; - ++itemFirst; - } - } - MOODYCAMEL_CATCH(...) { - // Oh dear, an exception's been thrown -- destroy the elements that - // were enqueued so far and revert the entire bulk operation (we'll - // keep any allocated blocks in our linked list for later, though). - auto constructedStopIndex = currentTailIndex; - auto lastBlockEnqueued = this->tailBlock; - - pr_blockIndexFront = originalBlockIndexFront; - pr_blockIndexSlotsUsed = originalBlockIndexSlotsUsed; - this->tailBlock = - startBlock == nullptr ? firstAllocatedBlock : startBlock; - - if (!details::is_trivially_destructible::value) { - auto block = startBlock; - if ((startTailIndex & static_cast(BLOCK_SIZE - 1)) == - 0) { - block = firstAllocatedBlock; - } - currentTailIndex = startTailIndex; - while (true) { - stopIndex = - (currentTailIndex & ~static_cast(BLOCK_SIZE - 1)) + - static_cast(BLOCK_SIZE); - if (details::circular_less_than(constructedStopIndex, - stopIndex)) { - stopIndex = constructedStopIndex; - } - while (currentTailIndex != stopIndex) { - (*block)[currentTailIndex++]->~T(); - } - if (block == lastBlockEnqueued) { - break; - } - block = block->next; - } - } - MOODYCAMEL_RETHROW; - } - } - - if (this->tailBlock == endBlock) { - assert(currentTailIndex == newTailIndex); - break; - } - this->tailBlock = this->tailBlock->next; - } - - if (!MOODYCAMEL_NOEXCEPT_CTOR( - T, decltype(*itemFirst), - new (nullptr) T(details::deref_noexcept(itemFirst))) && - firstAllocatedBlock != nullptr) { - blockIndex.load(std::memory_order_relaxed) - ->front.store((pr_blockIndexFront - 1) & (pr_blockIndexSize - 1), - std::memory_order_release); - } - - this->tailIndex.store(newTailIndex, std::memory_order_release); - return true; - } - - template size_t dequeue_bulk(It& itemFirst, size_t max) { - auto tail = this->tailIndex.load(std::memory_order_relaxed); - auto overcommit = this->dequeueOvercommit.load(std::memory_order_relaxed); - auto desiredCount = static_cast( - tail - (this->dequeueOptimisticCount.load(std::memory_order_relaxed) - - overcommit)); - if (details::circular_less_than(0, desiredCount)) { - desiredCount = desiredCount < max ? desiredCount : max; - std::atomic_thread_fence(std::memory_order_acquire); - - auto myDequeueCount = this->dequeueOptimisticCount.fetch_add( - desiredCount, std::memory_order_relaxed); - assert(overcommit <= myDequeueCount); - - tail = this->tailIndex.load(std::memory_order_acquire); - auto actualCount = - static_cast(tail - (myDequeueCount - overcommit)); - if (details::circular_less_than(0, actualCount)) { - actualCount = desiredCount < actualCount ? desiredCount : actualCount; - if (actualCount < desiredCount) { - this->dequeueOvercommit.fetch_add(desiredCount - actualCount, - std::memory_order_release); - } - - // Get the first index. Note that since there's guaranteed to be at - // least actualCount elements, this will never exceed tail. - auto firstIndex = - this->headIndex.fetch_add(actualCount, std::memory_order_acq_rel); - - // Determine which block the first element is in - auto localBlockIndex = blockIndex.load(std::memory_order_acquire); - auto localBlockIndexHead = - localBlockIndex->front.load(std::memory_order_acquire); - - auto headBase = localBlockIndex->entries[localBlockIndexHead].base; - auto firstBlockBaseIndex = - firstIndex & ~static_cast(BLOCK_SIZE - 1); - auto offset = static_cast( - static_cast::type>( - firstBlockBaseIndex - headBase) / - BLOCK_SIZE); - auto indexIndex = - (localBlockIndexHead + offset) & (localBlockIndex->size - 1); - - // Iterate the blocks and dequeue - auto index = firstIndex; - do { - auto firstIndexInBlock = index; - auto endIndex = (index & ~static_cast(BLOCK_SIZE - 1)) + - static_cast(BLOCK_SIZE); - endIndex = - details::circular_less_than( - firstIndex + static_cast(actualCount), endIndex) - ? firstIndex + static_cast(actualCount) - : endIndex; - auto block = localBlockIndex->entries[indexIndex].block; - if (MOODYCAMEL_NOEXCEPT_ASSIGN(T, T&&, - details::deref_noexcept(itemFirst) = - std::move((*(*block)[index])))) { - while (index != endIndex) { - auto& el = *((*block)[index]); - *itemFirst++ = std::move(el); - el.~T(); - ++index; - } - } else { - MOODYCAMEL_TRY { - while (index != endIndex) { - auto& el = *((*block)[index]); - *itemFirst = std::move(el); - ++itemFirst; - el.~T(); - ++index; - } - } - MOODYCAMEL_CATCH(...) { - // It's too late to revert the dequeue, but we can make sure - // that all the dequeued objects are properly destroyed and the - // block index (and empty count) are properly updated before we - // propagate the exception - do { - block = localBlockIndex->entries[indexIndex].block; - while (index != endIndex) { - (*block)[index++]->~T(); - } - block->ConcurrentQueue::Block::template set_many_empty< - explicit_context>( - firstIndexInBlock, - static_cast(endIndex - firstIndexInBlock)); - indexIndex = (indexIndex + 1) & (localBlockIndex->size - 1); - - firstIndexInBlock = index; - endIndex = (index & ~static_cast(BLOCK_SIZE - 1)) + - static_cast(BLOCK_SIZE); - endIndex = - details::circular_less_than( - firstIndex + static_cast(actualCount), - endIndex) - ? firstIndex + static_cast(actualCount) - : endIndex; - } while (index != firstIndex + actualCount); - - MOODYCAMEL_RETHROW; - } - } - block->ConcurrentQueue::Block::template set_many_empty< - explicit_context>( - firstIndexInBlock, - static_cast(endIndex - firstIndexInBlock)); - indexIndex = (indexIndex + 1) & (localBlockIndex->size - 1); - } while (index != firstIndex + actualCount); - - return actualCount; - } else { - // Wasn't anything to dequeue after all; make the effective dequeue - // count eventually consistent - this->dequeueOvercommit.fetch_add(desiredCount, - std::memory_order_release); - } - } - - return 0; - } - - private: - struct BlockIndexEntry { - index_t base; - Block* block; - }; - - struct BlockIndexHeader { - size_t size; - std::atomic - front; // Current slot (not next, like pr_blockIndexFront) - BlockIndexEntry* entries; - void* prev; - }; - - bool new_block_index(size_t numberOfFilledSlotsToExpose) { - auto prevBlockSizeMask = pr_blockIndexSize - 1; - - // Create the new block - pr_blockIndexSize <<= 1; - auto newRawPtr = static_cast((Traits::malloc)( - sizeof(BlockIndexHeader) + std::alignment_of::value - - 1 + sizeof(BlockIndexEntry) * pr_blockIndexSize)); - if (newRawPtr == nullptr) { - pr_blockIndexSize >>= 1; // Reset to allow graceful retry - return false; - } - - auto newBlockIndexEntries = reinterpret_cast( - details::align_for(newRawPtr + - sizeof(BlockIndexHeader))); - - // Copy in all the old indices, if any - size_t j = 0; - if (pr_blockIndexSlotsUsed != 0) { - auto i = - (pr_blockIndexFront - pr_blockIndexSlotsUsed) & prevBlockSizeMask; - do { - newBlockIndexEntries[j++] = pr_blockIndexEntries[i]; - i = (i + 1) & prevBlockSizeMask; - } while (i != pr_blockIndexFront); - } - - // Update everything - auto header = new (newRawPtr) BlockIndexHeader; - header->size = pr_blockIndexSize; - header->front.store(numberOfFilledSlotsToExpose - 1, - std::memory_order_relaxed); - header->entries = newBlockIndexEntries; - header->prev = pr_blockIndexRaw; // we link the new block to the old one - // so we can free it later - - pr_blockIndexFront = j; - pr_blockIndexEntries = newBlockIndexEntries; - pr_blockIndexRaw = newRawPtr; - blockIndex.store(header, std::memory_order_release); - - return true; - } - - private: - std::atomic blockIndex; - - // To be used by producer only -- consumer must use the ones in referenced - // by blockIndex - size_t pr_blockIndexSlotsUsed; - size_t pr_blockIndexSize; - size_t pr_blockIndexFront; // Next slot (not current) - BlockIndexEntry* pr_blockIndexEntries; - void* pr_blockIndexRaw; - + newBlock->owner = this; +#endif + newBlock->ConcurrentQueue::Block::template set_all_empty(); + if (this->tailBlock == nullptr) { + newBlock->next = newBlock; + } + else { + newBlock->next = this->tailBlock->next; + this->tailBlock->next = newBlock; + } + this->tailBlock = newBlock; + firstAllocatedBlock = firstAllocatedBlock == nullptr ? this->tailBlock : firstAllocatedBlock; + + ++pr_blockIndexSlotsUsed; + + auto& entry = blockIndex.load(std::memory_order_relaxed)->entries[pr_blockIndexFront]; + entry.base = currentTailIndex; + entry.block = this->tailBlock; + pr_blockIndexFront = (pr_blockIndexFront + 1) & (pr_blockIndexSize - 1); + } + + // Excellent, all allocations succeeded. Reset each block's emptiness before we fill them up, and + // publish the new block index front + auto block = firstAllocatedBlock; + while (true) { + block->ConcurrentQueue::Block::template reset_empty(); + if (block == this->tailBlock) { + break; + } + block = block->next; + } + + if (MOODYCAMEL_NOEXCEPT_CTOR(T, decltype(*itemFirst), new (nullptr) T(details::deref_noexcept(itemFirst)))) { + blockIndex.load(std::memory_order_relaxed)->front.store((pr_blockIndexFront - 1) & (pr_blockIndexSize - 1), std::memory_order_release); + } + } + + // Enqueue, one block at a time + index_t newTailIndex = startTailIndex + static_cast(count); + currentTailIndex = startTailIndex; + auto endBlock = this->tailBlock; + this->tailBlock = startBlock; + assert((startTailIndex & static_cast(BLOCK_SIZE - 1)) != 0 || firstAllocatedBlock != nullptr || count == 0); + if ((startTailIndex & static_cast(BLOCK_SIZE - 1)) == 0 && firstAllocatedBlock != nullptr) { + this->tailBlock = firstAllocatedBlock; + } + while (true) { + auto stopIndex = (currentTailIndex & ~static_cast(BLOCK_SIZE - 1)) + static_cast(BLOCK_SIZE); + if (details::circular_less_than(newTailIndex, stopIndex)) { + stopIndex = newTailIndex; + } + if (MOODYCAMEL_NOEXCEPT_CTOR(T, decltype(*itemFirst), new (nullptr) T(details::deref_noexcept(itemFirst)))) { + while (currentTailIndex != stopIndex) { + new ((*this->tailBlock)[currentTailIndex++]) T(*itemFirst++); + } + } + else { + MOODYCAMEL_TRY { + while (currentTailIndex != stopIndex) { + // Must use copy constructor even if move constructor is available + // because we may have to revert if there's an exception. + // Sorry about the horrible templated next line, but it was the only way + // to disable moving *at compile time*, which is important because a type + // may only define a (noexcept) move constructor, and so calls to the + // cctor will not compile, even if they are in an if branch that will never + // be executed + new ((*this->tailBlock)[currentTailIndex]) T(details::nomove_if<(bool)!MOODYCAMEL_NOEXCEPT_CTOR(T, decltype(*itemFirst), new (nullptr) T(details::deref_noexcept(itemFirst)))>::eval(*itemFirst)); + ++currentTailIndex; + ++itemFirst; + } + } + MOODYCAMEL_CATCH (...) { + // Oh dear, an exception's been thrown -- destroy the elements that + // were enqueued so far and revert the entire bulk operation (we'll keep + // any allocated blocks in our linked list for later, though). + auto constructedStopIndex = currentTailIndex; + auto lastBlockEnqueued = this->tailBlock; + + pr_blockIndexFront = originalBlockIndexFront; + pr_blockIndexSlotsUsed = originalBlockIndexSlotsUsed; + this->tailBlock = startBlock == nullptr ? firstAllocatedBlock : startBlock; + + if (!details::is_trivially_destructible::value) { + auto block = startBlock; + if ((startTailIndex & static_cast(BLOCK_SIZE - 1)) == 0) { + block = firstAllocatedBlock; + } + currentTailIndex = startTailIndex; + while (true) { + stopIndex = (currentTailIndex & ~static_cast(BLOCK_SIZE - 1)) + static_cast(BLOCK_SIZE); + if (details::circular_less_than(constructedStopIndex, stopIndex)) { + stopIndex = constructedStopIndex; + } + while (currentTailIndex != stopIndex) { + (*block)[currentTailIndex++]->~T(); + } + if (block == lastBlockEnqueued) { + break; + } + block = block->next; + } + } + MOODYCAMEL_RETHROW; + } + } + + if (this->tailBlock == endBlock) { + assert(currentTailIndex == newTailIndex); + break; + } + this->tailBlock = this->tailBlock->next; + } + + if (!MOODYCAMEL_NOEXCEPT_CTOR(T, decltype(*itemFirst), new (nullptr) T(details::deref_noexcept(itemFirst))) && firstAllocatedBlock != nullptr) { + blockIndex.load(std::memory_order_relaxed)->front.store((pr_blockIndexFront - 1) & (pr_blockIndexSize - 1), std::memory_order_release); + } + + this->tailIndex.store(newTailIndex, std::memory_order_release); + return true; + } + + template + size_t dequeue_bulk(It& itemFirst, size_t max) + { + auto tail = this->tailIndex.load(std::memory_order_relaxed); + auto overcommit = this->dequeueOvercommit.load(std::memory_order_relaxed); + auto desiredCount = static_cast(tail - (this->dequeueOptimisticCount.load(std::memory_order_relaxed) - overcommit)); + if (details::circular_less_than(0, desiredCount)) { + desiredCount = desiredCount < max ? desiredCount : max; + std::atomic_thread_fence(std::memory_order_acquire); + + auto myDequeueCount = this->dequeueOptimisticCount.fetch_add(desiredCount, std::memory_order_relaxed);; + + tail = this->tailIndex.load(std::memory_order_acquire); + auto actualCount = static_cast(tail - (myDequeueCount - overcommit)); + if (details::circular_less_than(0, actualCount)) { + actualCount = desiredCount < actualCount ? desiredCount : actualCount; + if (actualCount < desiredCount) { + this->dequeueOvercommit.fetch_add(desiredCount - actualCount, std::memory_order_release); + } + + // Get the first index. Note that since there's guaranteed to be at least actualCount elements, this + // will never exceed tail. + auto firstIndex = this->headIndex.fetch_add(actualCount, std::memory_order_acq_rel); + + // Determine which block the first element is in + auto localBlockIndex = blockIndex.load(std::memory_order_acquire); + auto localBlockIndexHead = localBlockIndex->front.load(std::memory_order_acquire); + + auto headBase = localBlockIndex->entries[localBlockIndexHead].base; + auto firstBlockBaseIndex = firstIndex & ~static_cast(BLOCK_SIZE - 1); + auto offset = static_cast(static_cast::type>(firstBlockBaseIndex - headBase) / BLOCK_SIZE); + auto indexIndex = (localBlockIndexHead + offset) & (localBlockIndex->size - 1); + + // Iterate the blocks and dequeue + auto index = firstIndex; + do { + auto firstIndexInBlock = index; + auto endIndex = (index & ~static_cast(BLOCK_SIZE - 1)) + static_cast(BLOCK_SIZE); + endIndex = details::circular_less_than(firstIndex + static_cast(actualCount), endIndex) ? firstIndex + static_cast(actualCount) : endIndex; + auto block = localBlockIndex->entries[indexIndex].block; + if (MOODYCAMEL_NOEXCEPT_ASSIGN(T, T&&, details::deref_noexcept(itemFirst) = std::move((*(*block)[index])))) { + while (index != endIndex) { + auto& el = *((*block)[index]); + *itemFirst++ = std::move(el); + el.~T(); + ++index; + } + } + else { + MOODYCAMEL_TRY { + while (index != endIndex) { + auto& el = *((*block)[index]); + *itemFirst = std::move(el); + ++itemFirst; + el.~T(); + ++index; + } + } + MOODYCAMEL_CATCH (...) { + // It's too late to revert the dequeue, but we can make sure that all + // the dequeued objects are properly destroyed and the block index + // (and empty count) are properly updated before we propagate the exception + do { + block = localBlockIndex->entries[indexIndex].block; + while (index != endIndex) { + (*block)[index++]->~T(); + } + block->ConcurrentQueue::Block::template set_many_empty(firstIndexInBlock, static_cast(endIndex - firstIndexInBlock)); + indexIndex = (indexIndex + 1) & (localBlockIndex->size - 1); + + firstIndexInBlock = index; + endIndex = (index & ~static_cast(BLOCK_SIZE - 1)) + static_cast(BLOCK_SIZE); + endIndex = details::circular_less_than(firstIndex + static_cast(actualCount), endIndex) ? firstIndex + static_cast(actualCount) : endIndex; + } while (index != firstIndex + actualCount); + + MOODYCAMEL_RETHROW; + } + } + block->ConcurrentQueue::Block::template set_many_empty(firstIndexInBlock, static_cast(endIndex - firstIndexInBlock)); + indexIndex = (indexIndex + 1) & (localBlockIndex->size - 1); + } while (index != firstIndex + actualCount); + + return actualCount; + } + else { + // Wasn't anything to dequeue after all; make the effective dequeue count eventually consistent + this->dequeueOvercommit.fetch_add(desiredCount, std::memory_order_release); + } + } + + return 0; + } + + private: + struct BlockIndexEntry + { + index_t base; + Block* block; + }; + + struct BlockIndexHeader + { + size_t size; + std::atomic front; // Current slot (not next, like pr_blockIndexFront) + BlockIndexEntry* entries; + void* prev; + }; + + + bool new_block_index(size_t numberOfFilledSlotsToExpose) + { + auto prevBlockSizeMask = pr_blockIndexSize - 1; + + // Create the new block + pr_blockIndexSize <<= 1; + auto newRawPtr = static_cast((Traits::malloc)(sizeof(BlockIndexHeader) + std::alignment_of::value - 1 + sizeof(BlockIndexEntry) * pr_blockIndexSize)); + if (newRawPtr == nullptr) { + pr_blockIndexSize >>= 1; // Reset to allow graceful retry + return false; + } + + auto newBlockIndexEntries = reinterpret_cast(details::align_for(newRawPtr + sizeof(BlockIndexHeader))); + + // Copy in all the old indices, if any + size_t j = 0; + if (pr_blockIndexSlotsUsed != 0) { + auto i = (pr_blockIndexFront - pr_blockIndexSlotsUsed) & prevBlockSizeMask; + do { + newBlockIndexEntries[j++] = pr_blockIndexEntries[i]; + i = (i + 1) & prevBlockSizeMask; + } while (i != pr_blockIndexFront); + } + + // Update everything + auto header = new (newRawPtr) BlockIndexHeader; + header->size = pr_blockIndexSize; + header->front.store(numberOfFilledSlotsToExpose - 1, std::memory_order_relaxed); + header->entries = newBlockIndexEntries; + header->prev = pr_blockIndexRaw; // we link the new block to the old one so we can free it later + + pr_blockIndexFront = j; + pr_blockIndexEntries = newBlockIndexEntries; + pr_blockIndexRaw = newRawPtr; + blockIndex.store(header, std::memory_order_release); + + return true; + } + + private: + std::atomic blockIndex; + + // To be used by producer only -- consumer must use the ones in referenced by blockIndex + size_t pr_blockIndexSlotsUsed; + size_t pr_blockIndexSize; + size_t pr_blockIndexFront; // Next slot (not current) + BlockIndexEntry* pr_blockIndexEntries; + void* pr_blockIndexRaw; + #ifdef MOODYCAMEL_QUEUE_INTERNAL_DEBUG - public: - ExplicitProducer* nextExplicitProducer; - - private: + public: + ExplicitProducer* nextExplicitProducer; + private: #endif - + #if MCDBGQ_TRACKMEM - friend struct MemStats; -#endif - }; - - ////////////////////////////////// - // Implicit queue - ////////////////////////////////// - - struct ImplicitProducer : public ProducerBase { - ImplicitProducer(ConcurrentQueue* parent) - : ProducerBase(parent, false), - nextBlockIndexCapacity(IMPLICIT_INITIAL_INDEX_SIZE), - blockIndex(nullptr) { - new_block_index(); - } - - ~ImplicitProducer() { -// Note that since we're in the destructor we can assume that all -// enqueue/dequeue operations completed already; this means that all undequeued -// elements are placed contiguously across contiguous blocks, and that only the -// first and last remaining blocks can be only partially empty (all other -// remaining blocks must be completely full). - + friend struct MemStats; +#endif + }; + + + ////////////////////////////////// + // Implicit queue + ////////////////////////////////// + + struct ImplicitProducer : public ProducerBase + { + ImplicitProducer(ConcurrentQueue* parent) : + ProducerBase(parent, false), + nextBlockIndexCapacity(IMPLICIT_INITIAL_INDEX_SIZE), + blockIndex(nullptr) + { + new_block_index(); + } + + ~ImplicitProducer() + { + // Note that since we're in the destructor we can assume that all enqueue/dequeue operations + // completed already; this means that all undequeued elements are placed contiguously across + // contiguous blocks, and that only the first and last remaining blocks can be only partially + // empty (all other remaining blocks must be completely full). + #ifdef MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED - // Unregister ourselves for thread termination notification - if (!this->inactive.load(std::memory_order_relaxed)) { - details::ThreadExitNotifier::unsubscribe(&threadExitListener); - } -#endif - - // Destroy all remaining elements! - auto tail = this->tailIndex.load(std::memory_order_relaxed); - auto index = this->headIndex.load(std::memory_order_relaxed); - Block* block = nullptr; - assert(index == tail || details::circular_less_than(index, tail)); - bool forceFreeLastBlock = index != tail; // If we enter the loop, then the - // last (tail) block will not be - // freed - while (index != tail) { - if ((index & static_cast(BLOCK_SIZE - 1)) == 0 || - block == nullptr) { - if (block != nullptr) { - // Free the old block - this->parent->add_block_to_free_list(block); - } - - block = get_block_index_entry_for_index(index)->value.load( - std::memory_order_relaxed); - } - - ((*block)[index])->~T(); - ++index; - } - // Even if the queue is empty, there's still one block that's not on the - // free list (unless the head index reached the end of it, in which case - // the tail will be poised to create a new block). - if (this->tailBlock != nullptr && - (forceFreeLastBlock || - (tail & static_cast(BLOCK_SIZE - 1)) != 0)) { - this->parent->add_block_to_free_list(this->tailBlock); - } - - // Destroy block index - auto localBlockIndex = blockIndex.load(std::memory_order_relaxed); - if (localBlockIndex != nullptr) { - for (size_t i = 0; i != localBlockIndex->capacity; ++i) { - localBlockIndex->index[i]->~BlockIndexEntry(); - } - do { - auto prev = localBlockIndex->prev; - localBlockIndex->~BlockIndexHeader(); - (Traits::free)(localBlockIndex); - localBlockIndex = prev; - } while (localBlockIndex != nullptr); - } - } - - template - inline bool enqueue(U&& element) { - index_t currentTailIndex = - this->tailIndex.load(std::memory_order_relaxed); - index_t newTailIndex = 1 + currentTailIndex; - if ((currentTailIndex & static_cast(BLOCK_SIZE - 1)) == 0) { - // We reached the end of a block, start a new one - auto head = this->headIndex.load(std::memory_order_relaxed); - assert(!details::circular_less_than(currentTailIndex, head)); - if (!details::circular_less_than(head, currentTailIndex + - BLOCK_SIZE) || - (MAX_SUBQUEUE_SIZE != details::const_numeric_max::value && - (MAX_SUBQUEUE_SIZE == 0 || - MAX_SUBQUEUE_SIZE - BLOCK_SIZE < currentTailIndex - head))) { - return false; - } + // Unregister ourselves for thread termination notification + if (!this->inactive.load(std::memory_order_relaxed)) { + details::ThreadExitNotifier::unsubscribe(&threadExitListener); + } +#endif + + // Destroy all remaining elements! + auto tail = this->tailIndex.load(std::memory_order_relaxed); + auto index = this->headIndex.load(std::memory_order_relaxed); + Block* block = nullptr; + assert(index == tail || details::circular_less_than(index, tail)); + bool forceFreeLastBlock = index != tail; // If we enter the loop, then the last (tail) block will not be freed + while (index != tail) { + if ((index & static_cast(BLOCK_SIZE - 1)) == 0 || block == nullptr) { + if (block != nullptr) { + // Free the old block + this->parent->add_block_to_free_list(block); + } + + block = get_block_index_entry_for_index(index)->value.load(std::memory_order_relaxed); + } + + ((*block)[index])->~T(); + ++index; + } + // Even if the queue is empty, there's still one block that's not on the free list + // (unless the head index reached the end of it, in which case the tail will be poised + // to create a new block). + if (this->tailBlock != nullptr && (forceFreeLastBlock || (tail & static_cast(BLOCK_SIZE - 1)) != 0)) { + this->parent->add_block_to_free_list(this->tailBlock); + } + + // Destroy block index + auto localBlockIndex = blockIndex.load(std::memory_order_relaxed); + if (localBlockIndex != nullptr) { + for (size_t i = 0; i != localBlockIndex->capacity; ++i) { + localBlockIndex->index[i]->~BlockIndexEntry(); + } + do { + auto prev = localBlockIndex->prev; + localBlockIndex->~BlockIndexHeader(); + (Traits::free)(localBlockIndex); + localBlockIndex = prev; + } while (localBlockIndex != nullptr); + } + } + + template + inline bool enqueue(U&& element) + { + index_t currentTailIndex = this->tailIndex.load(std::memory_order_relaxed); + index_t newTailIndex = 1 + currentTailIndex; + if ((currentTailIndex & static_cast(BLOCK_SIZE - 1)) == 0) { + // We reached the end of a block, start a new one + auto head = this->headIndex.load(std::memory_order_relaxed); + assert(!details::circular_less_than(currentTailIndex, head)); + if (!details::circular_less_than(head, currentTailIndex + BLOCK_SIZE) || (MAX_SUBQUEUE_SIZE != details::const_numeric_max::value && (MAX_SUBQUEUE_SIZE == 0 || MAX_SUBQUEUE_SIZE - BLOCK_SIZE < currentTailIndex - head))) { + return false; + } #if MCDBGQ_NOLOCKFREE_IMPLICITPRODBLOCKINDEX - debug::DebugLock lock(mutex); -#endif - // Find out where we'll be inserting this block in the block index - BlockIndexEntry* idxEntry; - if (!insert_block_index_entry(idxEntry, currentTailIndex)) { - return false; - } - - // Get ahold of a new block - auto newBlock = - this->parent - ->ConcurrentQueue::template requisition_block(); - if (newBlock == nullptr) { - rewind_block_index_tail(); - idxEntry->value.store(nullptr, std::memory_order_relaxed); - return false; - } + debug::DebugLock lock(mutex); +#endif + // Find out where we'll be inserting this block in the block index + BlockIndexEntry* idxEntry; + if (!insert_block_index_entry(idxEntry, currentTailIndex)) { + return false; + } + + // Get ahold of a new block + auto newBlock = this->parent->ConcurrentQueue::template requisition_block(); + if (newBlock == nullptr) { + rewind_block_index_tail(); + idxEntry->value.store(nullptr, std::memory_order_relaxed); + return false; + } #if MCDBGQ_TRACKMEM - newBlock->owner = this; -#endif - newBlock - ->ConcurrentQueue::Block::template reset_empty(); - - if (!MOODYCAMEL_NOEXCEPT_CTOR( - T, U, new (nullptr) T(std::forward(element)))) { - // May throw, try to insert now before we publish the fact that we - // have this new block - MOODYCAMEL_TRY { - new ((*newBlock)[currentTailIndex]) T(std::forward(element)); - } - MOODYCAMEL_CATCH(...) { - rewind_block_index_tail(); - idxEntry->value.store(nullptr, std::memory_order_relaxed); - this->parent->add_block_to_free_list(newBlock); - MOODYCAMEL_RETHROW; - } - } - - // Insert the new block into the index - idxEntry->value.store(newBlock, std::memory_order_relaxed); - - this->tailBlock = newBlock; - - if (!MOODYCAMEL_NOEXCEPT_CTOR( - T, U, new (nullptr) T(std::forward(element)))) { - this->tailIndex.store(newTailIndex, std::memory_order_release); - return true; - } - } - - // Enqueue - new ((*this->tailBlock)[currentTailIndex]) T(std::forward(element)); - - this->tailIndex.store(newTailIndex, std::memory_order_release); - return true; - } - - template bool dequeue(U& element) { - // See ExplicitProducer::dequeue for rationale and explanation - index_t tail = this->tailIndex.load(std::memory_order_relaxed); - index_t overcommit = - this->dequeueOvercommit.load(std::memory_order_relaxed); - if (details::circular_less_than( - this->dequeueOptimisticCount.load(std::memory_order_relaxed) - - overcommit, - tail)) { - std::atomic_thread_fence(std::memory_order_acquire); - - index_t myDequeueCount = this->dequeueOptimisticCount.fetch_add( - 1, std::memory_order_relaxed); - assert(overcommit <= myDequeueCount); - tail = this->tailIndex.load(std::memory_order_acquire); - if (details::likely(details::circular_less_than( - myDequeueCount - overcommit, tail))) { - index_t index = - this->headIndex.fetch_add(1, std::memory_order_acq_rel); - - // Determine which block the element is in - auto entry = get_block_index_entry_for_index(index); - - // Dequeue - auto block = entry->value.load(std::memory_order_relaxed); - auto& el = *((*block)[index]); - - if (!MOODYCAMEL_NOEXCEPT_ASSIGN(T, T&&, element = std::move(el))) { + newBlock->owner = this; +#endif + newBlock->ConcurrentQueue::Block::template reset_empty(); + + if (!MOODYCAMEL_NOEXCEPT_CTOR(T, U, new (nullptr) T(std::forward(element)))) { + // May throw, try to insert now before we publish the fact that we have this new block + MOODYCAMEL_TRY { + new ((*newBlock)[currentTailIndex]) T(std::forward(element)); + } + MOODYCAMEL_CATCH (...) { + rewind_block_index_tail(); + idxEntry->value.store(nullptr, std::memory_order_relaxed); + this->parent->add_block_to_free_list(newBlock); + MOODYCAMEL_RETHROW; + } + } + + // Insert the new block into the index + idxEntry->value.store(newBlock, std::memory_order_relaxed); + + this->tailBlock = newBlock; + + if (!MOODYCAMEL_NOEXCEPT_CTOR(T, U, new (nullptr) T(std::forward(element)))) { + this->tailIndex.store(newTailIndex, std::memory_order_release); + return true; + } + } + + // Enqueue + new ((*this->tailBlock)[currentTailIndex]) T(std::forward(element)); + + this->tailIndex.store(newTailIndex, std::memory_order_release); + return true; + } + + template + bool dequeue(U& element) + { + // See ExplicitProducer::dequeue for rationale and explanation + index_t tail = this->tailIndex.load(std::memory_order_relaxed); + index_t overcommit = this->dequeueOvercommit.load(std::memory_order_relaxed); + if (details::circular_less_than(this->dequeueOptimisticCount.load(std::memory_order_relaxed) - overcommit, tail)) { + std::atomic_thread_fence(std::memory_order_acquire); + + index_t myDequeueCount = this->dequeueOptimisticCount.fetch_add(1, std::memory_order_relaxed); + tail = this->tailIndex.load(std::memory_order_acquire); + if ((details::likely)(details::circular_less_than(myDequeueCount - overcommit, tail))) { + index_t index = this->headIndex.fetch_add(1, std::memory_order_acq_rel); + + // Determine which block the element is in + auto entry = get_block_index_entry_for_index(index); + + // Dequeue + auto block = entry->value.load(std::memory_order_relaxed); + auto& el = *((*block)[index]); + + if (!MOODYCAMEL_NOEXCEPT_ASSIGN(T, T&&, element = std::move(el))) { #if MCDBGQ_NOLOCKFREE_IMPLICITPRODBLOCKINDEX - // Note: Acquiring the mutex with every dequeue instead of only when - // a block is released is very sub-optimal, but it is, after all, - // purely debug code. - debug::DebugLock lock(producer->mutex); -#endif - struct Guard { - Block* block; - index_t index; - BlockIndexEntry* entry; - ConcurrentQueue* parent; - - ~Guard() { - (*block)[index]->~T(); - if (block->ConcurrentQueue::Block::template set_empty< - implicit_context>(index)) { - entry->value.store(nullptr, std::memory_order_relaxed); - parent->add_block_to_free_list(block); - } - } - } guard = {block, index, entry, this->parent}; - - element = std::move(el); - } else { - element = std::move(el); - el.~T(); - - if (block->ConcurrentQueue::Block::template set_empty< - implicit_context>(index)) { - { + // Note: Acquiring the mutex with every dequeue instead of only when a block + // is released is very sub-optimal, but it is, after all, purely debug code. + debug::DebugLock lock(producer->mutex); +#endif + struct Guard { + Block* block; + index_t index; + BlockIndexEntry* entry; + ConcurrentQueue* parent; + + ~Guard() + { + (*block)[index]->~T(); + if (block->ConcurrentQueue::Block::template set_empty(index)) { + entry->value.store(nullptr, std::memory_order_relaxed); + parent->add_block_to_free_list(block); + } + } + } guard = { block, index, entry, this->parent }; + + element = std::move(el); + } + else { + element = std::move(el); + el.~T(); + + if (block->ConcurrentQueue::Block::template set_empty(index)) { + { #if MCDBGQ_NOLOCKFREE_IMPLICITPRODBLOCKINDEX - debug::DebugLock lock(mutex); -#endif - // Add the block back into the global free pool (and remove from - // block index) - entry->value.store(nullptr, std::memory_order_relaxed); - } - this->parent->add_block_to_free_list( - block); // releases the above store - } - } - - return true; - } else { - this->dequeueOvercommit.fetch_add(1, std::memory_order_release); - } - } - - return false; - } - - template - bool enqueue_bulk(It itemFirst, size_t count) { - // First, we need to make sure we have enough room to enqueue all of the - // elements; this means pre-allocating blocks and putting them in the - // block index (but only if all the allocations succeeded). - - // Note that the tailBlock we start off with may not be owned by us any - // more; this happens if it was filled up exactly to the top (setting - // tailIndex to the first index of the next block which is not yet - // allocated), then dequeued completely (putting it on the free list) - // before we enqueue again. - - index_t startTailIndex = this->tailIndex.load(std::memory_order_relaxed); - auto startBlock = this->tailBlock; - Block* firstAllocatedBlock = nullptr; - auto endBlock = this->tailBlock; - - // Figure out how many blocks we'll need to allocate, and do so - size_t blockBaseDiff = - ((startTailIndex + count - 1) & - ~static_cast(BLOCK_SIZE - 1)) - - ((startTailIndex - 1) & ~static_cast(BLOCK_SIZE - 1)); - index_t currentTailIndex = - (startTailIndex - 1) & ~static_cast(BLOCK_SIZE - 1); - if (blockBaseDiff > 0) { + debug::DebugLock lock(mutex); +#endif + // Add the block back into the global free pool (and remove from block index) + entry->value.store(nullptr, std::memory_order_relaxed); + } + this->parent->add_block_to_free_list(block); // releases the above store + } + } + + return true; + } + else { + this->dequeueOvercommit.fetch_add(1, std::memory_order_release); + } + } + + return false; + } + + template + bool enqueue_bulk(It itemFirst, size_t count) + { + // First, we need to make sure we have enough room to enqueue all of the elements; + // this means pre-allocating blocks and putting them in the block index (but only if + // all the allocations succeeded). + + // Note that the tailBlock we start off with may not be owned by us any more; + // this happens if it was filled up exactly to the top (setting tailIndex to + // the first index of the next block which is not yet allocated), then dequeued + // completely (putting it on the free list) before we enqueue again. + + index_t startTailIndex = this->tailIndex.load(std::memory_order_relaxed); + auto startBlock = this->tailBlock; + Block* firstAllocatedBlock = nullptr; + auto endBlock = this->tailBlock; + + // Figure out how many blocks we'll need to allocate, and do so + size_t blockBaseDiff = ((startTailIndex + count - 1) & ~static_cast(BLOCK_SIZE - 1)) - ((startTailIndex - 1) & ~static_cast(BLOCK_SIZE - 1)); + index_t currentTailIndex = (startTailIndex - 1) & ~static_cast(BLOCK_SIZE - 1); + if (blockBaseDiff > 0) { #if MCDBGQ_NOLOCKFREE_IMPLICITPRODBLOCKINDEX - debug::DebugLock lock(mutex); -#endif - do { - blockBaseDiff -= static_cast(BLOCK_SIZE); - currentTailIndex += static_cast(BLOCK_SIZE); - - // Find out where we'll be inserting this block in the block index - BlockIndexEntry* idxEntry = nullptr; // initialization here - // unnecessary but compiler can't - // always tell - Block* newBlock; - bool indexInserted = false; - auto head = this->headIndex.load(std::memory_order_relaxed); - assert(!details::circular_less_than(currentTailIndex, head)); - bool full = - !details::circular_less_than(head, currentTailIndex + - BLOCK_SIZE) || - (MAX_SUBQUEUE_SIZE != details::const_numeric_max::value && - (MAX_SUBQUEUE_SIZE == 0 || - MAX_SUBQUEUE_SIZE - BLOCK_SIZE < currentTailIndex - head)); - if (full || - !(indexInserted = insert_block_index_entry( - idxEntry, currentTailIndex)) || - (newBlock = - this->parent->ConcurrentQueue::template requisition_block< - allocMode>()) == nullptr) { - // Index allocation or block allocation failed; revert any other - // allocations and index insertions done so far for this operation - if (indexInserted) { - rewind_block_index_tail(); - idxEntry->value.store(nullptr, std::memory_order_relaxed); - } - currentTailIndex = - (startTailIndex - 1) & ~static_cast(BLOCK_SIZE - 1); - for (auto block = firstAllocatedBlock; block != nullptr; - block = block->next) { - currentTailIndex += static_cast(BLOCK_SIZE); - idxEntry = get_block_index_entry_for_index(currentTailIndex); - idxEntry->value.store(nullptr, std::memory_order_relaxed); - rewind_block_index_tail(); - } - this->parent->add_blocks_to_free_list(firstAllocatedBlock); - this->tailBlock = startBlock; - - return false; - } - + debug::DebugLock lock(mutex); +#endif + do { + blockBaseDiff -= static_cast(BLOCK_SIZE); + currentTailIndex += static_cast(BLOCK_SIZE); + + // Find out where we'll be inserting this block in the block index + BlockIndexEntry* idxEntry = nullptr; // initialization here unnecessary but compiler can't always tell + Block* newBlock; + bool indexInserted = false; + auto head = this->headIndex.load(std::memory_order_relaxed); + assert(!details::circular_less_than(currentTailIndex, head)); + bool full = !details::circular_less_than(head, currentTailIndex + BLOCK_SIZE) || (MAX_SUBQUEUE_SIZE != details::const_numeric_max::value && (MAX_SUBQUEUE_SIZE == 0 || MAX_SUBQUEUE_SIZE - BLOCK_SIZE < currentTailIndex - head)); + if (full || !(indexInserted = insert_block_index_entry(idxEntry, currentTailIndex)) || (newBlock = this->parent->ConcurrentQueue::template requisition_block()) == nullptr) { + // Index allocation or block allocation failed; revert any other allocations + // and index insertions done so far for this operation + if (indexInserted) { + rewind_block_index_tail(); + idxEntry->value.store(nullptr, std::memory_order_relaxed); + } + currentTailIndex = (startTailIndex - 1) & ~static_cast(BLOCK_SIZE - 1); + for (auto block = firstAllocatedBlock; block != nullptr; block = block->next) { + currentTailIndex += static_cast(BLOCK_SIZE); + idxEntry = get_block_index_entry_for_index(currentTailIndex); + idxEntry->value.store(nullptr, std::memory_order_relaxed); + rewind_block_index_tail(); + } + this->parent->add_blocks_to_free_list(firstAllocatedBlock); + this->tailBlock = startBlock; + + return false; + } + #if MCDBGQ_TRACKMEM - newBlock->owner = this; -#endif - newBlock->ConcurrentQueue::Block::template reset_empty< - implicit_context>(); - newBlock->next = nullptr; - - // Insert the new block into the index - idxEntry->value.store(newBlock, std::memory_order_relaxed); - - // Store the chain of blocks so that we can undo if later allocations - // fail, and so that we can find the blocks when we do the actual - // enqueueing - if ((startTailIndex & static_cast(BLOCK_SIZE - 1)) != 0 || - firstAllocatedBlock != nullptr) { - assert(this->tailBlock != nullptr); - this->tailBlock->next = newBlock; - } - this->tailBlock = newBlock; - endBlock = newBlock; - firstAllocatedBlock = - firstAllocatedBlock == nullptr ? newBlock : firstAllocatedBlock; - } while (blockBaseDiff > 0); - } - - // Enqueue, one block at a time - index_t newTailIndex = startTailIndex + static_cast(count); - currentTailIndex = startTailIndex; - this->tailBlock = startBlock; - assert((startTailIndex & static_cast(BLOCK_SIZE - 1)) != 0 || - firstAllocatedBlock != nullptr || count == 0); - if ((startTailIndex & static_cast(BLOCK_SIZE - 1)) == 0 && - firstAllocatedBlock != nullptr) { - this->tailBlock = firstAllocatedBlock; - } - while (true) { - auto stopIndex = - (currentTailIndex & ~static_cast(BLOCK_SIZE - 1)) + - static_cast(BLOCK_SIZE); - if (details::circular_less_than(newTailIndex, stopIndex)) { - stopIndex = newTailIndex; - } - if (MOODYCAMEL_NOEXCEPT_CTOR( - T, decltype(*itemFirst), - new (nullptr) T(details::deref_noexcept(itemFirst)))) { - while (currentTailIndex != stopIndex) { - new ((*this->tailBlock)[currentTailIndex++]) T(*itemFirst++); - } - } else { - MOODYCAMEL_TRY { - while (currentTailIndex != stopIndex) { - new ((*this->tailBlock)[currentTailIndex]) - T(details::nomove_if<(bool)!MOODYCAMEL_NOEXCEPT_CTOR( - T, decltype(*itemFirst), - new (nullptr) T(details::deref_noexcept( - itemFirst)))>::eval(*itemFirst)); - ++currentTailIndex; - ++itemFirst; - } - } - MOODYCAMEL_CATCH(...) { - auto constructedStopIndex = currentTailIndex; - auto lastBlockEnqueued = this->tailBlock; - - if (!details::is_trivially_destructible::value) { - auto block = startBlock; - if ((startTailIndex & static_cast(BLOCK_SIZE - 1)) == - 0) { - block = firstAllocatedBlock; - } - currentTailIndex = startTailIndex; - while (true) { - stopIndex = - (currentTailIndex & ~static_cast(BLOCK_SIZE - 1)) + - static_cast(BLOCK_SIZE); - if (details::circular_less_than(constructedStopIndex, - stopIndex)) { - stopIndex = constructedStopIndex; - } - while (currentTailIndex != stopIndex) { - (*block)[currentTailIndex++]->~T(); - } - if (block == lastBlockEnqueued) { - break; - } - block = block->next; - } - } - - currentTailIndex = - (startTailIndex - 1) & ~static_cast(BLOCK_SIZE - 1); - for (auto block = firstAllocatedBlock; block != nullptr; - block = block->next) { - currentTailIndex += static_cast(BLOCK_SIZE); - auto idxEntry = get_block_index_entry_for_index(currentTailIndex); - idxEntry->value.store(nullptr, std::memory_order_relaxed); - rewind_block_index_tail(); - } - this->parent->add_blocks_to_free_list(firstAllocatedBlock); - this->tailBlock = startBlock; - MOODYCAMEL_RETHROW; - } - } - - if (this->tailBlock == endBlock) { - assert(currentTailIndex == newTailIndex); - break; - } - this->tailBlock = this->tailBlock->next; - } - this->tailIndex.store(newTailIndex, std::memory_order_release); - return true; - } - - template size_t dequeue_bulk(It& itemFirst, size_t max) { - auto tail = this->tailIndex.load(std::memory_order_relaxed); - auto overcommit = this->dequeueOvercommit.load(std::memory_order_relaxed); - auto desiredCount = static_cast( - tail - (this->dequeueOptimisticCount.load(std::memory_order_relaxed) - - overcommit)); - if (details::circular_less_than(0, desiredCount)) { - desiredCount = desiredCount < max ? desiredCount : max; - std::atomic_thread_fence(std::memory_order_acquire); - - auto myDequeueCount = this->dequeueOptimisticCount.fetch_add( - desiredCount, std::memory_order_relaxed); - assert(overcommit <= myDequeueCount); - - tail = this->tailIndex.load(std::memory_order_acquire); - auto actualCount = - static_cast(tail - (myDequeueCount - overcommit)); - if (details::circular_less_than(0, actualCount)) { - actualCount = desiredCount < actualCount ? desiredCount : actualCount; - if (actualCount < desiredCount) { - this->dequeueOvercommit.fetch_add(desiredCount - actualCount, - std::memory_order_release); - } - - // Get the first index. Note that since there's guaranteed to be at - // least actualCount elements, this will never exceed tail. - auto firstIndex = - this->headIndex.fetch_add(actualCount, std::memory_order_acq_rel); - - // Iterate the blocks and dequeue - auto index = firstIndex; - BlockIndexHeader* localBlockIndex; - auto indexIndex = - get_block_index_index_for_index(index, localBlockIndex); - do { - auto blockStartIndex = index; - auto endIndex = (index & ~static_cast(BLOCK_SIZE - 1)) + - static_cast(BLOCK_SIZE); - endIndex = - details::circular_less_than( - firstIndex + static_cast(actualCount), endIndex) - ? firstIndex + static_cast(actualCount) - : endIndex; - - auto entry = localBlockIndex->index[indexIndex]; - auto block = entry->value.load(std::memory_order_relaxed); - if (MOODYCAMEL_NOEXCEPT_ASSIGN(T, T&&, - details::deref_noexcept(itemFirst) = - std::move((*(*block)[index])))) { - while (index != endIndex) { - auto& el = *((*block)[index]); - *itemFirst++ = std::move(el); - el.~T(); - ++index; - } - } else { - MOODYCAMEL_TRY { - while (index != endIndex) { - auto& el = *((*block)[index]); - *itemFirst = std::move(el); - ++itemFirst; - el.~T(); - ++index; - } - } - MOODYCAMEL_CATCH(...) { - do { - entry = localBlockIndex->index[indexIndex]; - block = entry->value.load(std::memory_order_relaxed); - while (index != endIndex) { - (*block)[index++]->~T(); - } - - if (block->ConcurrentQueue::Block::template set_many_empty< - implicit_context>( - blockStartIndex, - static_cast(endIndex - blockStartIndex))) { + newBlock->owner = this; +#endif + newBlock->ConcurrentQueue::Block::template reset_empty(); + newBlock->next = nullptr; + + // Insert the new block into the index + idxEntry->value.store(newBlock, std::memory_order_relaxed); + + // Store the chain of blocks so that we can undo if later allocations fail, + // and so that we can find the blocks when we do the actual enqueueing + if ((startTailIndex & static_cast(BLOCK_SIZE - 1)) != 0 || firstAllocatedBlock != nullptr) { + assert(this->tailBlock != nullptr); + this->tailBlock->next = newBlock; + } + this->tailBlock = newBlock; + endBlock = newBlock; + firstAllocatedBlock = firstAllocatedBlock == nullptr ? newBlock : firstAllocatedBlock; + } while (blockBaseDiff > 0); + } + + // Enqueue, one block at a time + index_t newTailIndex = startTailIndex + static_cast(count); + currentTailIndex = startTailIndex; + this->tailBlock = startBlock; + assert((startTailIndex & static_cast(BLOCK_SIZE - 1)) != 0 || firstAllocatedBlock != nullptr || count == 0); + if ((startTailIndex & static_cast(BLOCK_SIZE - 1)) == 0 && firstAllocatedBlock != nullptr) { + this->tailBlock = firstAllocatedBlock; + } + while (true) { + auto stopIndex = (currentTailIndex & ~static_cast(BLOCK_SIZE - 1)) + static_cast(BLOCK_SIZE); + if (details::circular_less_than(newTailIndex, stopIndex)) { + stopIndex = newTailIndex; + } + if (MOODYCAMEL_NOEXCEPT_CTOR(T, decltype(*itemFirst), new (nullptr) T(details::deref_noexcept(itemFirst)))) { + while (currentTailIndex != stopIndex) { + new ((*this->tailBlock)[currentTailIndex++]) T(*itemFirst++); + } + } + else { + MOODYCAMEL_TRY { + while (currentTailIndex != stopIndex) { + new ((*this->tailBlock)[currentTailIndex]) T(details::nomove_if<(bool)!MOODYCAMEL_NOEXCEPT_CTOR(T, decltype(*itemFirst), new (nullptr) T(details::deref_noexcept(itemFirst)))>::eval(*itemFirst)); + ++currentTailIndex; + ++itemFirst; + } + } + MOODYCAMEL_CATCH (...) { + auto constructedStopIndex = currentTailIndex; + auto lastBlockEnqueued = this->tailBlock; + + if (!details::is_trivially_destructible::value) { + auto block = startBlock; + if ((startTailIndex & static_cast(BLOCK_SIZE - 1)) == 0) { + block = firstAllocatedBlock; + } + currentTailIndex = startTailIndex; + while (true) { + stopIndex = (currentTailIndex & ~static_cast(BLOCK_SIZE - 1)) + static_cast(BLOCK_SIZE); + if (details::circular_less_than(constructedStopIndex, stopIndex)) { + stopIndex = constructedStopIndex; + } + while (currentTailIndex != stopIndex) { + (*block)[currentTailIndex++]->~T(); + } + if (block == lastBlockEnqueued) { + break; + } + block = block->next; + } + } + + currentTailIndex = (startTailIndex - 1) & ~static_cast(BLOCK_SIZE - 1); + for (auto block = firstAllocatedBlock; block != nullptr; block = block->next) { + currentTailIndex += static_cast(BLOCK_SIZE); + auto idxEntry = get_block_index_entry_for_index(currentTailIndex); + idxEntry->value.store(nullptr, std::memory_order_relaxed); + rewind_block_index_tail(); + } + this->parent->add_blocks_to_free_list(firstAllocatedBlock); + this->tailBlock = startBlock; + MOODYCAMEL_RETHROW; + } + } + + if (this->tailBlock == endBlock) { + assert(currentTailIndex == newTailIndex); + break; + } + this->tailBlock = this->tailBlock->next; + } + this->tailIndex.store(newTailIndex, std::memory_order_release); + return true; + } + + template + size_t dequeue_bulk(It& itemFirst, size_t max) + { + auto tail = this->tailIndex.load(std::memory_order_relaxed); + auto overcommit = this->dequeueOvercommit.load(std::memory_order_relaxed); + auto desiredCount = static_cast(tail - (this->dequeueOptimisticCount.load(std::memory_order_relaxed) - overcommit)); + if (details::circular_less_than(0, desiredCount)) { + desiredCount = desiredCount < max ? desiredCount : max; + std::atomic_thread_fence(std::memory_order_acquire); + + auto myDequeueCount = this->dequeueOptimisticCount.fetch_add(desiredCount, std::memory_order_relaxed); + + tail = this->tailIndex.load(std::memory_order_acquire); + auto actualCount = static_cast(tail - (myDequeueCount - overcommit)); + if (details::circular_less_than(0, actualCount)) { + actualCount = desiredCount < actualCount ? desiredCount : actualCount; + if (actualCount < desiredCount) { + this->dequeueOvercommit.fetch_add(desiredCount - actualCount, std::memory_order_release); + } + + // Get the first index. Note that since there's guaranteed to be at least actualCount elements, this + // will never exceed tail. + auto firstIndex = this->headIndex.fetch_add(actualCount, std::memory_order_acq_rel); + + // Iterate the blocks and dequeue + auto index = firstIndex; + BlockIndexHeader* localBlockIndex; + auto indexIndex = get_block_index_index_for_index(index, localBlockIndex); + do { + auto blockStartIndex = index; + auto endIndex = (index & ~static_cast(BLOCK_SIZE - 1)) + static_cast(BLOCK_SIZE); + endIndex = details::circular_less_than(firstIndex + static_cast(actualCount), endIndex) ? firstIndex + static_cast(actualCount) : endIndex; + + auto entry = localBlockIndex->index[indexIndex]; + auto block = entry->value.load(std::memory_order_relaxed); + if (MOODYCAMEL_NOEXCEPT_ASSIGN(T, T&&, details::deref_noexcept(itemFirst) = std::move((*(*block)[index])))) { + while (index != endIndex) { + auto& el = *((*block)[index]); + *itemFirst++ = std::move(el); + el.~T(); + ++index; + } + } + else { + MOODYCAMEL_TRY { + while (index != endIndex) { + auto& el = *((*block)[index]); + *itemFirst = std::move(el); + ++itemFirst; + el.~T(); + ++index; + } + } + MOODYCAMEL_CATCH (...) { + do { + entry = localBlockIndex->index[indexIndex]; + block = entry->value.load(std::memory_order_relaxed); + while (index != endIndex) { + (*block)[index++]->~T(); + } + + if (block->ConcurrentQueue::Block::template set_many_empty(blockStartIndex, static_cast(endIndex - blockStartIndex))) { #if MCDBGQ_NOLOCKFREE_IMPLICITPRODBLOCKINDEX - debug::DebugLock lock(mutex); -#endif - entry->value.store(nullptr, std::memory_order_relaxed); - this->parent->add_block_to_free_list(block); - } - indexIndex = - (indexIndex + 1) & (localBlockIndex->capacity - 1); - - blockStartIndex = index; - endIndex = (index & ~static_cast(BLOCK_SIZE - 1)) + - static_cast(BLOCK_SIZE); - endIndex = - details::circular_less_than( - firstIndex + static_cast(actualCount), - endIndex) - ? firstIndex + static_cast(actualCount) - : endIndex; - } while (index != firstIndex + actualCount); - - MOODYCAMEL_RETHROW; - } - } - if (block->ConcurrentQueue::Block::template set_many_empty< - implicit_context>( - blockStartIndex, - static_cast(endIndex - blockStartIndex))) { - { + debug::DebugLock lock(mutex); +#endif + entry->value.store(nullptr, std::memory_order_relaxed); + this->parent->add_block_to_free_list(block); + } + indexIndex = (indexIndex + 1) & (localBlockIndex->capacity - 1); + + blockStartIndex = index; + endIndex = (index & ~static_cast(BLOCK_SIZE - 1)) + static_cast(BLOCK_SIZE); + endIndex = details::circular_less_than(firstIndex + static_cast(actualCount), endIndex) ? firstIndex + static_cast(actualCount) : endIndex; + } while (index != firstIndex + actualCount); + + MOODYCAMEL_RETHROW; + } + } + if (block->ConcurrentQueue::Block::template set_many_empty(blockStartIndex, static_cast(endIndex - blockStartIndex))) { + { #if MCDBGQ_NOLOCKFREE_IMPLICITPRODBLOCKINDEX - debug::DebugLock lock(mutex); -#endif - // Note that the set_many_empty above did a release, meaning - // that anybody who acquires the block we're about to free can - // use it safely since our writes (and reads!) will have - // happened-before then. - entry->value.store(nullptr, std::memory_order_relaxed); - } - this->parent->add_block_to_free_list( - block); // releases the above store - } - indexIndex = (indexIndex + 1) & (localBlockIndex->capacity - 1); - } while (index != firstIndex + actualCount); - - return actualCount; - } else { - this->dequeueOvercommit.fetch_add(desiredCount, - std::memory_order_release); - } - } - - return 0; - } - - private: - // The block size must be > 1, so any number with the low bit set is an - // invalid block base index - static const index_t INVALID_BLOCK_BASE = 1; - - struct BlockIndexEntry { - std::atomic key; - std::atomic value; - }; - - struct BlockIndexHeader { - size_t capacity; - std::atomic tail; - BlockIndexEntry* entries; - BlockIndexEntry** index; - BlockIndexHeader* prev; - }; - - template - inline bool insert_block_index_entry(BlockIndexEntry*& idxEntry, - index_t blockStartIndex) { - auto localBlockIndex = - blockIndex.load(std::memory_order_relaxed); // We're the only writer - // thread, relaxed is OK - if (localBlockIndex == nullptr) { - return false; // this can happen if new_block_index failed in the - // constructor - } - auto newTail = - (localBlockIndex->tail.load(std::memory_order_relaxed) + 1) & - (localBlockIndex->capacity - 1); - idxEntry = localBlockIndex->index[newTail]; - if (idxEntry->key.load(std::memory_order_relaxed) == INVALID_BLOCK_BASE || - idxEntry->value.load(std::memory_order_relaxed) == nullptr) { - - idxEntry->key.store(blockStartIndex, std::memory_order_relaxed); - localBlockIndex->tail.store(newTail, std::memory_order_release); - return true; - } - - // No room in the old block index, try to allocate another one! - if (allocMode == CannotAlloc || !new_block_index()) { - return false; - } - localBlockIndex = blockIndex.load(std::memory_order_relaxed); - newTail = (localBlockIndex->tail.load(std::memory_order_relaxed) + 1) & - (localBlockIndex->capacity - 1); - idxEntry = localBlockIndex->index[newTail]; - assert(idxEntry->key.load(std::memory_order_relaxed) == - INVALID_BLOCK_BASE); - idxEntry->key.store(blockStartIndex, std::memory_order_relaxed); - localBlockIndex->tail.store(newTail, std::memory_order_release); - return true; - } - - inline void rewind_block_index_tail() { - auto localBlockIndex = blockIndex.load(std::memory_order_relaxed); - localBlockIndex->tail.store( - (localBlockIndex->tail.load(std::memory_order_relaxed) - 1) & - (localBlockIndex->capacity - 1), - std::memory_order_relaxed); - } - - inline BlockIndexEntry* - get_block_index_entry_for_index(index_t index) const { - BlockIndexHeader* localBlockIndex; - auto idx = get_block_index_index_for_index(index, localBlockIndex); - return localBlockIndex->index[idx]; - } - - inline size_t - get_block_index_index_for_index(index_t index, - BlockIndexHeader*& localBlockIndex) const { + debug::DebugLock lock(mutex); +#endif + // Note that the set_many_empty above did a release, meaning that anybody who acquires the block + // we're about to free can use it safely since our writes (and reads!) will have happened-before then. + entry->value.store(nullptr, std::memory_order_relaxed); + } + this->parent->add_block_to_free_list(block); // releases the above store + } + indexIndex = (indexIndex + 1) & (localBlockIndex->capacity - 1); + } while (index != firstIndex + actualCount); + + return actualCount; + } + else { + this->dequeueOvercommit.fetch_add(desiredCount, std::memory_order_release); + } + } + + return 0; + } + + private: + // The block size must be > 1, so any number with the low bit set is an invalid block base index + static const index_t INVALID_BLOCK_BASE = 1; + + struct BlockIndexEntry + { + std::atomic key; + std::atomic value; + }; + + struct BlockIndexHeader + { + size_t capacity; + std::atomic tail; + BlockIndexEntry* entries; + BlockIndexEntry** index; + BlockIndexHeader* prev; + }; + + template + inline bool insert_block_index_entry(BlockIndexEntry*& idxEntry, index_t blockStartIndex) + { + auto localBlockIndex = blockIndex.load(std::memory_order_relaxed); // We're the only writer thread, relaxed is OK + if (localBlockIndex == nullptr) { + return false; // this can happen if new_block_index failed in the constructor + } + auto newTail = (localBlockIndex->tail.load(std::memory_order_relaxed) + 1) & (localBlockIndex->capacity - 1); + idxEntry = localBlockIndex->index[newTail]; + if (idxEntry->key.load(std::memory_order_relaxed) == INVALID_BLOCK_BASE || + idxEntry->value.load(std::memory_order_relaxed) == nullptr) { + + idxEntry->key.store(blockStartIndex, std::memory_order_relaxed); + localBlockIndex->tail.store(newTail, std::memory_order_release); + return true; + } + + // No room in the old block index, try to allocate another one! + if (allocMode == CannotAlloc || !new_block_index()) { + return false; + } + localBlockIndex = blockIndex.load(std::memory_order_relaxed); + newTail = (localBlockIndex->tail.load(std::memory_order_relaxed) + 1) & (localBlockIndex->capacity - 1); + idxEntry = localBlockIndex->index[newTail]; + assert(idxEntry->key.load(std::memory_order_relaxed) == INVALID_BLOCK_BASE); + idxEntry->key.store(blockStartIndex, std::memory_order_relaxed); + localBlockIndex->tail.store(newTail, std::memory_order_release); + return true; + } + + inline void rewind_block_index_tail() + { + auto localBlockIndex = blockIndex.load(std::memory_order_relaxed); + localBlockIndex->tail.store((localBlockIndex->tail.load(std::memory_order_relaxed) - 1) & (localBlockIndex->capacity - 1), std::memory_order_relaxed); + } + + inline BlockIndexEntry* get_block_index_entry_for_index(index_t index) const + { + BlockIndexHeader* localBlockIndex; + auto idx = get_block_index_index_for_index(index, localBlockIndex); + return localBlockIndex->index[idx]; + } + + inline size_t get_block_index_index_for_index(index_t index, BlockIndexHeader*& localBlockIndex) const + { #if MCDBGQ_NOLOCKFREE_IMPLICITPRODBLOCKINDEX - debug::DebugLock lock(mutex); -#endif - index &= ~static_cast(BLOCK_SIZE - 1); - localBlockIndex = blockIndex.load(std::memory_order_acquire); - auto tail = localBlockIndex->tail.load(std::memory_order_acquire); - auto tailBase = - localBlockIndex->index[tail]->key.load(std::memory_order_relaxed); - assert(tailBase != INVALID_BLOCK_BASE); - // Note: Must use division instead of shift because the index may wrap - // around, causing a negative offset, whose negativity we want to preserve - auto offset = static_cast( - static_cast::type>(index - - tailBase) / - BLOCK_SIZE); - size_t idx = (tail + offset) & (localBlockIndex->capacity - 1); - assert(localBlockIndex->index[idx]->key.load(std::memory_order_relaxed) == - index && - localBlockIndex->index[idx]->value.load( - std::memory_order_relaxed) != nullptr); - return idx; - } - - bool new_block_index() { - auto prev = blockIndex.load(std::memory_order_relaxed); - size_t prevCapacity = prev == nullptr ? 0 : prev->capacity; - auto entryCount = prev == nullptr ? nextBlockIndexCapacity : prevCapacity; - auto raw = static_cast((Traits::malloc)( - sizeof(BlockIndexHeader) + std::alignment_of::value - - 1 + sizeof(BlockIndexEntry) * entryCount + - std::alignment_of::value - 1 + - sizeof(BlockIndexEntry*) * nextBlockIndexCapacity)); - if (raw == nullptr) { - return false; - } - - auto header = new (raw) BlockIndexHeader; - auto entries = reinterpret_cast( - details::align_for(raw + sizeof(BlockIndexHeader))); - auto index = reinterpret_cast( - details::align_for( - reinterpret_cast(entries) + - sizeof(BlockIndexEntry) * entryCount)); - if (prev != nullptr) { - auto prevTail = prev->tail.load(std::memory_order_relaxed); - auto prevPos = prevTail; - size_t i = 0; - do { - prevPos = (prevPos + 1) & (prev->capacity - 1); - index[i++] = prev->index[prevPos]; - } while (prevPos != prevTail); - assert(i == prevCapacity); - } - for (size_t i = 0; i != entryCount; ++i) { - new (entries + i) BlockIndexEntry; - entries[i].key.store(INVALID_BLOCK_BASE, std::memory_order_relaxed); - index[prevCapacity + i] = entries + i; - } - header->prev = prev; - header->entries = entries; - header->index = index; - header->capacity = nextBlockIndexCapacity; - header->tail.store((prevCapacity - 1) & (nextBlockIndexCapacity - 1), - std::memory_order_relaxed); - - blockIndex.store(header, std::memory_order_release); - - nextBlockIndexCapacity <<= 1; - - return true; - } - - private: - size_t nextBlockIndexCapacity; - std::atomic blockIndex; + debug::DebugLock lock(mutex); +#endif + index &= ~static_cast(BLOCK_SIZE - 1); + localBlockIndex = blockIndex.load(std::memory_order_acquire); + auto tail = localBlockIndex->tail.load(std::memory_order_acquire); + auto tailBase = localBlockIndex->index[tail]->key.load(std::memory_order_relaxed); + assert(tailBase != INVALID_BLOCK_BASE); + // Note: Must use division instead of shift because the index may wrap around, causing a negative + // offset, whose negativity we want to preserve + auto offset = static_cast(static_cast::type>(index - tailBase) / BLOCK_SIZE); + size_t idx = (tail + offset) & (localBlockIndex->capacity - 1); + assert(localBlockIndex->index[idx]->key.load(std::memory_order_relaxed) == index && localBlockIndex->index[idx]->value.load(std::memory_order_relaxed) != nullptr); + return idx; + } + + bool new_block_index() + { + auto prev = blockIndex.load(std::memory_order_relaxed); + size_t prevCapacity = prev == nullptr ? 0 : prev->capacity; + auto entryCount = prev == nullptr ? nextBlockIndexCapacity : prevCapacity; + auto raw = static_cast((Traits::malloc)( + sizeof(BlockIndexHeader) + + std::alignment_of::value - 1 + sizeof(BlockIndexEntry) * entryCount + + std::alignment_of::value - 1 + sizeof(BlockIndexEntry*) * nextBlockIndexCapacity)); + if (raw == nullptr) { + return false; + } + + auto header = new (raw) BlockIndexHeader; + auto entries = reinterpret_cast(details::align_for(raw + sizeof(BlockIndexHeader))); + auto index = reinterpret_cast(details::align_for(reinterpret_cast(entries) + sizeof(BlockIndexEntry) * entryCount)); + if (prev != nullptr) { + auto prevTail = prev->tail.load(std::memory_order_relaxed); + auto prevPos = prevTail; + size_t i = 0; + do { + prevPos = (prevPos + 1) & (prev->capacity - 1); + index[i++] = prev->index[prevPos]; + } while (prevPos != prevTail); + assert(i == prevCapacity); + } + for (size_t i = 0; i != entryCount; ++i) { + new (entries + i) BlockIndexEntry; + entries[i].key.store(INVALID_BLOCK_BASE, std::memory_order_relaxed); + index[prevCapacity + i] = entries + i; + } + header->prev = prev; + header->entries = entries; + header->index = index; + header->capacity = nextBlockIndexCapacity; + header->tail.store((prevCapacity - 1) & (nextBlockIndexCapacity - 1), std::memory_order_relaxed); + + blockIndex.store(header, std::memory_order_release); + + nextBlockIndexCapacity <<= 1; + + return true; + } + + private: + size_t nextBlockIndexCapacity; + std::atomic blockIndex; #ifdef MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED - public: - details::ThreadExitListener threadExitListener; - - private: + public: + details::ThreadExitListener threadExitListener; + private: #endif - + #ifdef MOODYCAMEL_QUEUE_INTERNAL_DEBUG - public: - ImplicitProducer* nextImplicitProducer; - - private: + public: + ImplicitProducer* nextImplicitProducer; + private: #endif #if MCDBGQ_NOLOCKFREE_IMPLICITPRODBLOCKINDEX - mutable debug::DebugMutex mutex; + mutable debug::DebugMutex mutex; #endif #if MCDBGQ_TRACKMEM - friend struct MemStats; -#endif - }; - - ////////////////////////////////// - // Block pool manipulation - ////////////////////////////////// - - void populate_initial_block_list(size_t blockCount) { - initialBlockPoolSize = blockCount; - if (initialBlockPoolSize == 0) { - initialBlockPool = nullptr; - return; - } - - initialBlockPool = create_array(blockCount); - if (initialBlockPool == nullptr) { - initialBlockPoolSize = 0; - } - for (size_t i = 0; i < initialBlockPoolSize; ++i) { - initialBlockPool[i].dynamicallyAllocated = false; - } - } - - inline Block* try_get_block_from_initial_pool() { - if (initialBlockPoolIndex.load(std::memory_order_relaxed) >= - initialBlockPoolSize) { - return nullptr; - } - - auto index = initialBlockPoolIndex.fetch_add(1, std::memory_order_relaxed); - - return index < initialBlockPoolSize ? (initialBlockPool + index) : nullptr; - } - - inline void add_block_to_free_list(Block* block) { + friend struct MemStats; +#endif + }; + + + ////////////////////////////////// + // Block pool manipulation + ////////////////////////////////// + + void populate_initial_block_list(size_t blockCount) + { + initialBlockPoolSize = blockCount; + if (initialBlockPoolSize == 0) { + initialBlockPool = nullptr; + return; + } + + initialBlockPool = create_array(blockCount); + if (initialBlockPool == nullptr) { + initialBlockPoolSize = 0; + } + for (size_t i = 0; i < initialBlockPoolSize; ++i) { + initialBlockPool[i].dynamicallyAllocated = false; + } + } + + inline Block* try_get_block_from_initial_pool() + { + if (initialBlockPoolIndex.load(std::memory_order_relaxed) >= initialBlockPoolSize) { + return nullptr; + } + + auto index = initialBlockPoolIndex.fetch_add(1, std::memory_order_relaxed); + + return index < initialBlockPoolSize ? (initialBlockPool + index) : nullptr; + } + + inline void add_block_to_free_list(Block* block) + { #if MCDBGQ_TRACKMEM - block->owner = nullptr; -#endif - freeList.add(block); - } - - inline void add_blocks_to_free_list(Block* block) { - while (block != nullptr) { - auto next = block->next; - add_block_to_free_list(block); - block = next; - } - } - - inline Block* try_get_block_from_free_list() { return freeList.try_get(); } - - // Gets a free block from one of the memory pools, or allocates a new one (if - // applicable) - template Block* requisition_block() { - auto block = try_get_block_from_initial_pool(); - if (block != nullptr) { - return block; - } - - block = try_get_block_from_free_list(); - if (block != nullptr) { - return block; - } - - if (canAlloc == CanAlloc) { - return create(); - } - - return nullptr; - } + block->owner = nullptr; +#endif + freeList.add(block); + } + + inline void add_blocks_to_free_list(Block* block) + { + while (block != nullptr) { + auto next = block->next; + add_block_to_free_list(block); + block = next; + } + } + + inline Block* try_get_block_from_free_list() + { + return freeList.try_get(); + } + + // Gets a free block from one of the memory pools, or allocates a new one (if applicable) + template + Block* requisition_block() + { + auto block = try_get_block_from_initial_pool(); + if (block != nullptr) { + return block; + } + + block = try_get_block_from_free_list(); + if (block != nullptr) { + return block; + } + + if (canAlloc == CanAlloc) { + return create(); + } + + return nullptr; + } + #if MCDBGQ_TRACKMEM -public: - struct MemStats { - size_t allocatedBlocks; - size_t usedBlocks; - size_t freeBlocks; - size_t ownedBlocksExplicit; - size_t ownedBlocksImplicit; - size_t implicitProducers; - size_t explicitProducers; - size_t elementsEnqueued; - size_t blockClassBytes; - size_t queueClassBytes; - size_t implicitBlockIndexBytes; - size_t explicitBlockIndexBytes; - - friend class ConcurrentQueue; - - private: - static MemStats getFor(ConcurrentQueue* q) { - MemStats stats = {0}; - - stats.elementsEnqueued = q->size_approx(); - - auto block = q->freeList.head_unsafe(); - while (block != nullptr) { - ++stats.allocatedBlocks; - ++stats.freeBlocks; - block = block->freeListNext.load(std::memory_order_relaxed); - } - - for (auto ptr = q->producerListTail.load(std::memory_order_acquire); - ptr != nullptr; ptr = ptr->next_prod()) { - bool implicit = dynamic_cast(ptr) != nullptr; - stats.implicitProducers += implicit ? 1 : 0; - stats.explicitProducers += implicit ? 0 : 1; - - if (implicit) { - auto prod = static_cast(ptr); - stats.queueClassBytes += sizeof(ImplicitProducer); - auto head = prod->headIndex.load(std::memory_order_relaxed); - auto tail = prod->tailIndex.load(std::memory_order_relaxed); - auto hash = prod->blockIndex.load(std::memory_order_relaxed); - if (hash != nullptr) { - for (size_t i = 0; i != hash->capacity; ++i) { - if (hash->index[i]->key.load(std::memory_order_relaxed) != - ImplicitProducer::INVALID_BLOCK_BASE && - hash->index[i]->value.load(std::memory_order_relaxed) != - nullptr) { - ++stats.allocatedBlocks; - ++stats.ownedBlocksImplicit; - } - } - stats.implicitBlockIndexBytes += - hash->capacity * - sizeof(typename ImplicitProducer::BlockIndexEntry); - for (; hash != nullptr; hash = hash->prev) { - stats.implicitBlockIndexBytes += - sizeof(typename ImplicitProducer::BlockIndexHeader) + - hash->capacity * - sizeof(typename ImplicitProducer::BlockIndexEntry*); - } - } - for (; details::circular_less_than(head, tail); - head += BLOCK_SIZE) { - // auto block = prod->get_block_index_entry_for_index(head); - ++stats.usedBlocks; - } - } else { - auto prod = static_cast(ptr); - stats.queueClassBytes += sizeof(ExplicitProducer); - auto tailBlock = prod->tailBlock; - bool wasNonEmpty = false; - if (tailBlock != nullptr) { - auto block = tailBlock; - do { - ++stats.allocatedBlocks; - if (!block->ConcurrentQueue::Block::template is_empty< - explicit_context>() || - wasNonEmpty) { - ++stats.usedBlocks; - wasNonEmpty = wasNonEmpty || block != tailBlock; - } - ++stats.ownedBlocksExplicit; - block = block->next; - } while (block != tailBlock); - } - auto index = prod->blockIndex.load(std::memory_order_relaxed); - while (index != nullptr) { - stats.explicitBlockIndexBytes += - sizeof(typename ExplicitProducer::BlockIndexHeader) + - index->size * - sizeof(typename ExplicitProducer::BlockIndexEntry); - index = static_cast( - index->prev); - } - } - } - - auto freeOnInitialPool = - q->initialBlockPoolIndex.load(std::memory_order_relaxed) >= - q->initialBlockPoolSize - ? 0 - : q->initialBlockPoolSize - - q->initialBlockPoolIndex.load(std::memory_order_relaxed); - stats.allocatedBlocks += freeOnInitialPool; - stats.freeBlocks += freeOnInitialPool; - - stats.blockClassBytes = sizeof(Block) * stats.allocatedBlocks; - stats.queueClassBytes += sizeof(ConcurrentQueue); - - return stats; - } - }; - - // For debugging only. Not thread-safe. - MemStats getMemStats() { return MemStats::getFor(this); } - -private: - friend struct MemStats; -#endif - - ////////////////////////////////// - // Producer list manipulation - ////////////////////////////////// - - ProducerBase* recycle_or_create_producer(bool isExplicit) { - bool recycled; - return recycle_or_create_producer(isExplicit, recycled); - } - - ProducerBase* recycle_or_create_producer(bool isExplicit, bool& recycled) { + public: + struct MemStats { + size_t allocatedBlocks; + size_t usedBlocks; + size_t freeBlocks; + size_t ownedBlocksExplicit; + size_t ownedBlocksImplicit; + size_t implicitProducers; + size_t explicitProducers; + size_t elementsEnqueued; + size_t blockClassBytes; + size_t queueClassBytes; + size_t implicitBlockIndexBytes; + size_t explicitBlockIndexBytes; + + friend class ConcurrentQueue; + + private: + static MemStats getFor(ConcurrentQueue* q) + { + MemStats stats = { 0 }; + + stats.elementsEnqueued = q->size_approx(); + + auto block = q->freeList.head_unsafe(); + while (block != nullptr) { + ++stats.allocatedBlocks; + ++stats.freeBlocks; + block = block->freeListNext.load(std::memory_order_relaxed); + } + + for (auto ptr = q->producerListTail.load(std::memory_order_acquire); ptr != nullptr; ptr = ptr->next_prod()) { + bool implicit = dynamic_cast(ptr) != nullptr; + stats.implicitProducers += implicit ? 1 : 0; + stats.explicitProducers += implicit ? 0 : 1; + + if (implicit) { + auto prod = static_cast(ptr); + stats.queueClassBytes += sizeof(ImplicitProducer); + auto head = prod->headIndex.load(std::memory_order_relaxed); + auto tail = prod->tailIndex.load(std::memory_order_relaxed); + auto hash = prod->blockIndex.load(std::memory_order_relaxed); + if (hash != nullptr) { + for (size_t i = 0; i != hash->capacity; ++i) { + if (hash->index[i]->key.load(std::memory_order_relaxed) != ImplicitProducer::INVALID_BLOCK_BASE && hash->index[i]->value.load(std::memory_order_relaxed) != nullptr) { + ++stats.allocatedBlocks; + ++stats.ownedBlocksImplicit; + } + } + stats.implicitBlockIndexBytes += hash->capacity * sizeof(typename ImplicitProducer::BlockIndexEntry); + for (; hash != nullptr; hash = hash->prev) { + stats.implicitBlockIndexBytes += sizeof(typename ImplicitProducer::BlockIndexHeader) + hash->capacity * sizeof(typename ImplicitProducer::BlockIndexEntry*); + } + } + for (; details::circular_less_than(head, tail); head += BLOCK_SIZE) { + //auto block = prod->get_block_index_entry_for_index(head); + ++stats.usedBlocks; + } + } + else { + auto prod = static_cast(ptr); + stats.queueClassBytes += sizeof(ExplicitProducer); + auto tailBlock = prod->tailBlock; + bool wasNonEmpty = false; + if (tailBlock != nullptr) { + auto block = tailBlock; + do { + ++stats.allocatedBlocks; + if (!block->ConcurrentQueue::Block::template is_empty() || wasNonEmpty) { + ++stats.usedBlocks; + wasNonEmpty = wasNonEmpty || block != tailBlock; + } + ++stats.ownedBlocksExplicit; + block = block->next; + } while (block != tailBlock); + } + auto index = prod->blockIndex.load(std::memory_order_relaxed); + while (index != nullptr) { + stats.explicitBlockIndexBytes += sizeof(typename ExplicitProducer::BlockIndexHeader) + index->size * sizeof(typename ExplicitProducer::BlockIndexEntry); + index = static_cast(index->prev); + } + } + } + + auto freeOnInitialPool = q->initialBlockPoolIndex.load(std::memory_order_relaxed) >= q->initialBlockPoolSize ? 0 : q->initialBlockPoolSize - q->initialBlockPoolIndex.load(std::memory_order_relaxed); + stats.allocatedBlocks += freeOnInitialPool; + stats.freeBlocks += freeOnInitialPool; + + stats.blockClassBytes = sizeof(Block) * stats.allocatedBlocks; + stats.queueClassBytes += sizeof(ConcurrentQueue); + + return stats; + } + }; + + // For debugging only. Not thread-safe. + MemStats getMemStats() + { + return MemStats::getFor(this); + } + private: + friend struct MemStats; +#endif + + + ////////////////////////////////// + // Producer list manipulation + ////////////////////////////////// + + ProducerBase* recycle_or_create_producer(bool isExplicit) + { + bool recycled; + return recycle_or_create_producer(isExplicit, recycled); + } + + ProducerBase* recycle_or_create_producer(bool isExplicit, bool& recycled) + { #if MCDBGQ_NOLOCKFREE_IMPLICITPRODHASH - debug::DebugLock lock(implicitProdMutex); -#endif - // Try to re-use one first - for (auto ptr = producerListTail.load(std::memory_order_acquire); - ptr != nullptr; ptr = ptr->next_prod()) { - if (ptr->inactive.load(std::memory_order_relaxed) && - ptr->isExplicit == isExplicit) { - bool expected = true; - if (ptr->inactive.compare_exchange_strong(expected, /* desired */ false, - std::memory_order_acquire, - std::memory_order_relaxed)) { - // We caught one! It's been marked as activated, the caller can have - // it - recycled = true; - return ptr; - } - } - } - - recycled = false; - return add_producer( - isExplicit ? static_cast(create(this)) - : create(this)); - } - - ProducerBase* add_producer(ProducerBase* producer) { - // Handle failed memory allocation - if (producer == nullptr) { - return nullptr; - } - - producerCount.fetch_add(1, std::memory_order_relaxed); - - // Add it to the lock-free list - auto prevTail = producerListTail.load(std::memory_order_relaxed); - do { - producer->next = prevTail; - } while (!producerListTail.compare_exchange_weak( - prevTail, producer, std::memory_order_release, - std::memory_order_relaxed)); - + debug::DebugLock lock(implicitProdMutex); +#endif + // Try to re-use one first + for (auto ptr = producerListTail.load(std::memory_order_acquire); ptr != nullptr; ptr = ptr->next_prod()) { + if (ptr->inactive.load(std::memory_order_relaxed) && ptr->isExplicit == isExplicit) { + bool expected = true; + if (ptr->inactive.compare_exchange_strong(expected, /* desired */ false, std::memory_order_acquire, std::memory_order_relaxed)) { + // We caught one! It's been marked as activated, the caller can have it + recycled = true; + return ptr; + } + } + } + + recycled = false; + return add_producer(isExplicit ? static_cast(create(this)) : create(this)); + } + + ProducerBase* add_producer(ProducerBase* producer) + { + // Handle failed memory allocation + if (producer == nullptr) { + return nullptr; + } + + producerCount.fetch_add(1, std::memory_order_relaxed); + + // Add it to the lock-free list + auto prevTail = producerListTail.load(std::memory_order_relaxed); + do { + producer->next = prevTail; + } while (!producerListTail.compare_exchange_weak(prevTail, producer, std::memory_order_release, std::memory_order_relaxed)); + #ifdef MOODYCAMEL_QUEUE_INTERNAL_DEBUG - if (producer->isExplicit) { - auto prevTailExplicit = explicitProducers.load(std::memory_order_relaxed); - do { - static_cast(producer)->nextExplicitProducer = - prevTailExplicit; - } while (!explicitProducers.compare_exchange_weak( - prevTailExplicit, static_cast(producer), - std::memory_order_release, std::memory_order_relaxed)); - } else { - auto prevTailImplicit = implicitProducers.load(std::memory_order_relaxed); - do { - static_cast(producer)->nextImplicitProducer = - prevTailImplicit; - } while (!implicitProducers.compare_exchange_weak( - prevTailImplicit, static_cast(producer), - std::memory_order_release, std::memory_order_relaxed)); - } -#endif - - return producer; - } - - void reown_producers() { - // After another instance is moved-into/swapped-with this one, all the - // producers we stole still think their parents are the other queue. - // So fix them up! - for (auto ptr = producerListTail.load(std::memory_order_relaxed); - ptr != nullptr; ptr = ptr->next_prod()) { - ptr->parent = this; - } - } - - ////////////////////////////////// - // Implicit producer hash - ////////////////////////////////// - - struct ImplicitProducerKVP { - std::atomic key; - ImplicitProducer* value; // No need for atomicity since it's only read by - // the thread that sets it in the first place - - ImplicitProducerKVP() : value(nullptr) {} - - ImplicitProducerKVP(ImplicitProducerKVP&& other) MOODYCAMEL_NOEXCEPT { - key.store(other.key.load(std::memory_order_relaxed), - std::memory_order_relaxed); - value = other.value; - } - - inline ImplicitProducerKVP& - operator=(ImplicitProducerKVP&& other) MOODYCAMEL_NOEXCEPT { - swap(other); - return *this; - } - - inline void swap(ImplicitProducerKVP& other) MOODYCAMEL_NOEXCEPT { - if (this != &other) { - details::swap_relaxed(key, other.key); - std::swap(value, other.value); - } - } - }; - - template - friend void - moodycamel::swap(typename ConcurrentQueue::ImplicitProducerKVP&, - typename ConcurrentQueue::ImplicitProducerKVP&) - MOODYCAMEL_NOEXCEPT; - - struct ImplicitProducerHash { - size_t capacity; - ImplicitProducerKVP* entries; - ImplicitProducerHash* prev; - }; - - inline void populate_initial_implicit_producer_hash() { - if (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0) - return; - - implicitProducerHashCount.store(0, std::memory_order_relaxed); - auto hash = &initialImplicitProducerHash; - hash->capacity = INITIAL_IMPLICIT_PRODUCER_HASH_SIZE; - hash->entries = &initialImplicitProducerHashEntries[0]; - for (size_t i = 0; i != INITIAL_IMPLICIT_PRODUCER_HASH_SIZE; ++i) { - initialImplicitProducerHashEntries[i].key.store( - details::invalid_thread_id, std::memory_order_relaxed); - } - hash->prev = nullptr; - implicitProducerHash.store(hash, std::memory_order_relaxed); - } - - void swap_implicit_producer_hashes(ConcurrentQueue& other) { - if (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0) - return; - - // Swap (assumes our implicit producer hash is initialized) - initialImplicitProducerHashEntries.swap( - other.initialImplicitProducerHashEntries); - initialImplicitProducerHash.entries = - &initialImplicitProducerHashEntries[0]; - other.initialImplicitProducerHash.entries = - &other.initialImplicitProducerHashEntries[0]; - - details::swap_relaxed(implicitProducerHashCount, - other.implicitProducerHashCount); - - details::swap_relaxed(implicitProducerHash, other.implicitProducerHash); - if (implicitProducerHash.load(std::memory_order_relaxed) == - &other.initialImplicitProducerHash) { - implicitProducerHash.store(&initialImplicitProducerHash, - std::memory_order_relaxed); - } else { - ImplicitProducerHash* hash; - for (hash = implicitProducerHash.load(std::memory_order_relaxed); - hash->prev != &other.initialImplicitProducerHash; - hash = hash->prev) { - continue; - } - hash->prev = &initialImplicitProducerHash; - } - if (other.implicitProducerHash.load(std::memory_order_relaxed) == - &initialImplicitProducerHash) { - other.implicitProducerHash.store(&other.initialImplicitProducerHash, - std::memory_order_relaxed); - } else { - ImplicitProducerHash* hash; - for (hash = other.implicitProducerHash.load(std::memory_order_relaxed); - hash->prev != &initialImplicitProducerHash; hash = hash->prev) { - continue; - } - hash->prev = &other.initialImplicitProducerHash; - } - } - - // Only fails (returns nullptr) if memory allocation fails - ImplicitProducer* get_or_add_implicit_producer() { -// Note that since the data is essentially thread-local (key is thread ID), -// there's a reduced need for fences (memory ordering is already consistent -// for any individual thread), except for the current table itself. - -// Start by looking for the thread ID in the current and all previous hash -// tables. If it's not found, it must not be in there yet, since this same -// thread would have added it previously to one of the tables that we traversed. - -// Code and algorithm adapted from -// http://preshing.com/20130605/the-worlds-simplest-lock-free-hash-table - + if (producer->isExplicit) { + auto prevTailExplicit = explicitProducers.load(std::memory_order_relaxed); + do { + static_cast(producer)->nextExplicitProducer = prevTailExplicit; + } while (!explicitProducers.compare_exchange_weak(prevTailExplicit, static_cast(producer), std::memory_order_release, std::memory_order_relaxed)); + } + else { + auto prevTailImplicit = implicitProducers.load(std::memory_order_relaxed); + do { + static_cast(producer)->nextImplicitProducer = prevTailImplicit; + } while (!implicitProducers.compare_exchange_weak(prevTailImplicit, static_cast(producer), std::memory_order_release, std::memory_order_relaxed)); + } +#endif + + return producer; + } + + void reown_producers() + { + // After another instance is moved-into/swapped-with this one, all the + // producers we stole still think their parents are the other queue. + // So fix them up! + for (auto ptr = producerListTail.load(std::memory_order_relaxed); ptr != nullptr; ptr = ptr->next_prod()) { + ptr->parent = this; + } + } + + + ////////////////////////////////// + // Implicit producer hash + ////////////////////////////////// + + struct ImplicitProducerKVP + { + std::atomic key; + ImplicitProducer* value; // No need for atomicity since it's only read by the thread that sets it in the first place + + ImplicitProducerKVP() : value(nullptr) { } + + ImplicitProducerKVP(ImplicitProducerKVP&& other) MOODYCAMEL_NOEXCEPT + { + key.store(other.key.load(std::memory_order_relaxed), std::memory_order_relaxed); + value = other.value; + } + + inline ImplicitProducerKVP& operator=(ImplicitProducerKVP&& other) MOODYCAMEL_NOEXCEPT + { + swap(other); + return *this; + } + + inline void swap(ImplicitProducerKVP& other) MOODYCAMEL_NOEXCEPT + { + if (this != &other) { + details::swap_relaxed(key, other.key); + std::swap(value, other.value); + } + } + }; + + template + friend void moodycamel::swap(typename ConcurrentQueue::ImplicitProducerKVP&, typename ConcurrentQueue::ImplicitProducerKVP&) MOODYCAMEL_NOEXCEPT; + + struct ImplicitProducerHash + { + size_t capacity; + ImplicitProducerKVP* entries; + ImplicitProducerHash* prev; + }; + + inline void populate_initial_implicit_producer_hash() + { + if (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0) return; + + implicitProducerHashCount.store(0, std::memory_order_relaxed); + auto hash = &initialImplicitProducerHash; + hash->capacity = INITIAL_IMPLICIT_PRODUCER_HASH_SIZE; + hash->entries = &initialImplicitProducerHashEntries[0]; + for (size_t i = 0; i != INITIAL_IMPLICIT_PRODUCER_HASH_SIZE; ++i) { + initialImplicitProducerHashEntries[i].key.store(details::invalid_thread_id, std::memory_order_relaxed); + } + hash->prev = nullptr; + implicitProducerHash.store(hash, std::memory_order_relaxed); + } + + void swap_implicit_producer_hashes(ConcurrentQueue& other) + { + if (INITIAL_IMPLICIT_PRODUCER_HASH_SIZE == 0) return; + + // Swap (assumes our implicit producer hash is initialized) + initialImplicitProducerHashEntries.swap(other.initialImplicitProducerHashEntries); + initialImplicitProducerHash.entries = &initialImplicitProducerHashEntries[0]; + other.initialImplicitProducerHash.entries = &other.initialImplicitProducerHashEntries[0]; + + details::swap_relaxed(implicitProducerHashCount, other.implicitProducerHashCount); + + details::swap_relaxed(implicitProducerHash, other.implicitProducerHash); + if (implicitProducerHash.load(std::memory_order_relaxed) == &other.initialImplicitProducerHash) { + implicitProducerHash.store(&initialImplicitProducerHash, std::memory_order_relaxed); + } + else { + ImplicitProducerHash* hash; + for (hash = implicitProducerHash.load(std::memory_order_relaxed); hash->prev != &other.initialImplicitProducerHash; hash = hash->prev) { + continue; + } + hash->prev = &initialImplicitProducerHash; + } + if (other.implicitProducerHash.load(std::memory_order_relaxed) == &initialImplicitProducerHash) { + other.implicitProducerHash.store(&other.initialImplicitProducerHash, std::memory_order_relaxed); + } + else { + ImplicitProducerHash* hash; + for (hash = other.implicitProducerHash.load(std::memory_order_relaxed); hash->prev != &initialImplicitProducerHash; hash = hash->prev) { + continue; + } + hash->prev = &other.initialImplicitProducerHash; + } + } + + // Only fails (returns nullptr) if memory allocation fails + ImplicitProducer* get_or_add_implicit_producer() + { + // Note that since the data is essentially thread-local (key is thread ID), + // there's a reduced need for fences (memory ordering is already consistent + // for any individual thread), except for the current table itself. + + // Start by looking for the thread ID in the current and all previous hash tables. + // If it's not found, it must not be in there yet, since this same thread would + // have added it previously to one of the tables that we traversed. + + // Code and algorithm adapted from http://preshing.com/20130605/the-worlds-simplest-lock-free-hash-table + #if MCDBGQ_NOLOCKFREE_IMPLICITPRODHASH - debug::DebugLock lock(implicitProdMutex); -#endif - - auto id = details::thread_id(); - auto hashedId = details::hash_thread_id(id); - - auto mainHash = implicitProducerHash.load(std::memory_order_acquire); - for (auto hash = mainHash; hash != nullptr; hash = hash->prev) { - // Look for the id in this hash - auto index = hashedId; - while (true) { // Not an infinite loop because at least one slot is free - // in the hash table - index &= hash->capacity - 1; - - auto probedKey = - hash->entries[index].key.load(std::memory_order_relaxed); - if (probedKey == id) { - // Found it! If we had to search several hashes deep, though, we - // should lazily add it to the current main hash table to avoid the - // extended search next time. Note there's guaranteed to be room in - // the current hash table since every subsequent table implicitly - // reserves space for all previous tables (there's only one - // implicitProducerHashCount). - auto value = hash->entries[index].value; - if (hash != mainHash) { - index = hashedId; - while (true) { - index &= mainHash->capacity - 1; - probedKey = - mainHash->entries[index].key.load(std::memory_order_relaxed); - auto empty = details::invalid_thread_id; + debug::DebugLock lock(implicitProdMutex); +#endif + + auto id = details::thread_id(); + auto hashedId = details::hash_thread_id(id); + + auto mainHash = implicitProducerHash.load(std::memory_order_acquire); + for (auto hash = mainHash; hash != nullptr; hash = hash->prev) { + // Look for the id in this hash + auto index = hashedId; + while (true) { // Not an infinite loop because at least one slot is free in the hash table + index &= hash->capacity - 1; + + auto probedKey = hash->entries[index].key.load(std::memory_order_relaxed); + if (probedKey == id) { + // Found it! If we had to search several hashes deep, though, we should lazily add it + // to the current main hash table to avoid the extended search next time. + // Note there's guaranteed to be room in the current hash table since every subsequent + // table implicitly reserves space for all previous tables (there's only one + // implicitProducerHashCount). + auto value = hash->entries[index].value; + if (hash != mainHash) { + index = hashedId; + while (true) { + index &= mainHash->capacity - 1; + probedKey = mainHash->entries[index].key.load(std::memory_order_relaxed); + auto empty = details::invalid_thread_id; #ifdef MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED - auto reusable = details::invalid_thread_id2; - if ((probedKey == empty && - mainHash->entries[index].key.compare_exchange_strong( - empty, id, std::memory_order_relaxed, - std::memory_order_relaxed)) || - (probedKey == reusable && - mainHash->entries[index].key.compare_exchange_strong( - reusable, id, std::memory_order_acquire, - std::memory_order_acquire))) { + auto reusable = details::invalid_thread_id2; + if ((probedKey == empty && mainHash->entries[index].key.compare_exchange_strong(empty, id, std::memory_order_relaxed, std::memory_order_relaxed)) || + (probedKey == reusable && mainHash->entries[index].key.compare_exchange_strong(reusable, id, std::memory_order_acquire, std::memory_order_acquire))) { #else - if ((probedKey == empty && - mainHash->entries[index].key.compare_exchange_strong( - empty, id, std::memory_order_relaxed, - std::memory_order_relaxed))) { -#endif - mainHash->entries[index].value = value; - break; - } - ++index; - } - } - - return value; - } - if (probedKey == details::invalid_thread_id) { - break; // Not in this hash table - } - ++index; - } - } - - // Insert! - auto newCount = - 1 + implicitProducerHashCount.fetch_add(1, std::memory_order_relaxed); - while (true) { - if (newCount >= (mainHash->capacity >> 1) && - !implicitProducerHashResizeInProgress.test_and_set( - std::memory_order_acquire)) { - // We've acquired the resize lock, try to allocate a bigger hash table. - // Note the acquire fence synchronizes with the release fence at the end - // of this block, and hence when we reload implicitProducerHash it must - // be the most recent version (it only gets changed within this locked - // block). - mainHash = implicitProducerHash.load(std::memory_order_acquire); - if (newCount >= (mainHash->capacity >> 1)) { - auto newCapacity = mainHash->capacity << 1; - while (newCount >= (newCapacity >> 1)) { - newCapacity <<= 1; - } - auto raw = static_cast( - (Traits::malloc)(sizeof(ImplicitProducerHash) + - std::alignment_of::value - - 1 + sizeof(ImplicitProducerKVP) * newCapacity)); - if (raw == nullptr) { - // Allocation failed - implicitProducerHashCount.fetch_sub(1, std::memory_order_relaxed); - implicitProducerHashResizeInProgress.clear( - std::memory_order_relaxed); - return nullptr; - } - - auto newHash = new (raw) ImplicitProducerHash; - newHash->capacity = newCapacity; - newHash->entries = reinterpret_cast( - details::align_for( - raw + sizeof(ImplicitProducerHash))); - for (size_t i = 0; i != newCapacity; ++i) { - new (newHash->entries + i) ImplicitProducerKVP; - newHash->entries[i].key.store(details::invalid_thread_id, - std::memory_order_relaxed); - } - newHash->prev = mainHash; - implicitProducerHash.store(newHash, std::memory_order_release); - implicitProducerHashResizeInProgress.clear(std::memory_order_release); - mainHash = newHash; - } else { - implicitProducerHashResizeInProgress.clear(std::memory_order_release); - } - } - - // If it's < three-quarters full, add to the old one anyway so that we - // don't have to wait for the next table to finish being allocated by - // another thread (and if we just finished allocating above, the condition - // will always be true) - if (newCount < (mainHash->capacity >> 1) + (mainHash->capacity >> 2)) { - bool recycled; - auto producer = static_cast( - recycle_or_create_producer(false, recycled)); - if (producer == nullptr) { - implicitProducerHashCount.fetch_sub(1, std::memory_order_relaxed); - return nullptr; - } - if (recycled) { - implicitProducerHashCount.fetch_sub(1, std::memory_order_relaxed); - } - + if ((probedKey == empty && mainHash->entries[index].key.compare_exchange_strong(empty, id, std::memory_order_relaxed, std::memory_order_relaxed))) { +#endif + mainHash->entries[index].value = value; + break; + } + ++index; + } + } + + return value; + } + if (probedKey == details::invalid_thread_id) { + break; // Not in this hash table + } + ++index; + } + } + + // Insert! + auto newCount = 1 + implicitProducerHashCount.fetch_add(1, std::memory_order_relaxed); + while (true) { + if (newCount >= (mainHash->capacity >> 1) && !implicitProducerHashResizeInProgress.test_and_set(std::memory_order_acquire)) { + // We've acquired the resize lock, try to allocate a bigger hash table. + // Note the acquire fence synchronizes with the release fence at the end of this block, and hence when + // we reload implicitProducerHash it must be the most recent version (it only gets changed within this + // locked block). + mainHash = implicitProducerHash.load(std::memory_order_acquire); + if (newCount >= (mainHash->capacity >> 1)) { + auto newCapacity = mainHash->capacity << 1; + while (newCount >= (newCapacity >> 1)) { + newCapacity <<= 1; + } + auto raw = static_cast((Traits::malloc)(sizeof(ImplicitProducerHash) + std::alignment_of::value - 1 + sizeof(ImplicitProducerKVP) * newCapacity)); + if (raw == nullptr) { + // Allocation failed + implicitProducerHashCount.fetch_sub(1, std::memory_order_relaxed); + implicitProducerHashResizeInProgress.clear(std::memory_order_relaxed); + return nullptr; + } + + auto newHash = new (raw) ImplicitProducerHash; + newHash->capacity = newCapacity; + newHash->entries = reinterpret_cast(details::align_for(raw + sizeof(ImplicitProducerHash))); + for (size_t i = 0; i != newCapacity; ++i) { + new (newHash->entries + i) ImplicitProducerKVP; + newHash->entries[i].key.store(details::invalid_thread_id, std::memory_order_relaxed); + } + newHash->prev = mainHash; + implicitProducerHash.store(newHash, std::memory_order_release); + implicitProducerHashResizeInProgress.clear(std::memory_order_release); + mainHash = newHash; + } + else { + implicitProducerHashResizeInProgress.clear(std::memory_order_release); + } + } + + // If it's < three-quarters full, add to the old one anyway so that we don't have to wait for the next table + // to finish being allocated by another thread (and if we just finished allocating above, the condition will + // always be true) + if (newCount < (mainHash->capacity >> 1) + (mainHash->capacity >> 2)) { + bool recycled; + auto producer = static_cast(recycle_or_create_producer(false, recycled)); + if (producer == nullptr) { + implicitProducerHashCount.fetch_sub(1, std::memory_order_relaxed); + return nullptr; + } + if (recycled) { + implicitProducerHashCount.fetch_sub(1, std::memory_order_relaxed); + } + #ifdef MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED - producer->threadExitListener.callback = - &ConcurrentQueue::implicit_producer_thread_exited_callback; - producer->threadExitListener.userData = producer; - details::ThreadExitNotifier::subscribe(&producer->threadExitListener); -#endif - - auto index = hashedId; - while (true) { - index &= mainHash->capacity - 1; - auto probedKey = - mainHash->entries[index].key.load(std::memory_order_relaxed); - - auto empty = details::invalid_thread_id; + producer->threadExitListener.callback = &ConcurrentQueue::implicit_producer_thread_exited_callback; + producer->threadExitListener.userData = producer; + details::ThreadExitNotifier::subscribe(&producer->threadExitListener); +#endif + + auto index = hashedId; + while (true) { + index &= mainHash->capacity - 1; + auto probedKey = mainHash->entries[index].key.load(std::memory_order_relaxed); + + auto empty = details::invalid_thread_id; #ifdef MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED - auto reusable = details::invalid_thread_id2; - if ((probedKey == empty && - mainHash->entries[index].key.compare_exchange_strong( - empty, id, std::memory_order_relaxed, - std::memory_order_relaxed)) || - (probedKey == reusable && - mainHash->entries[index].key.compare_exchange_strong( - reusable, id, std::memory_order_acquire, - std::memory_order_acquire))) { + auto reusable = details::invalid_thread_id2; + if ((probedKey == empty && mainHash->entries[index].key.compare_exchange_strong(empty, id, std::memory_order_relaxed, std::memory_order_relaxed)) || + (probedKey == reusable && mainHash->entries[index].key.compare_exchange_strong(reusable, id, std::memory_order_acquire, std::memory_order_acquire))) { #else - if ((probedKey == empty && - mainHash->entries[index].key.compare_exchange_strong( - empty, id, std::memory_order_relaxed, - std::memory_order_relaxed))) { -#endif - mainHash->entries[index].value = producer; - break; - } - ++index; - } - return producer; - } - - // Hmm, the old hash is quite full and somebody else is busy allocating a - // new one. We need to wait for the allocating thread to finish (if it - // succeeds, we add, if not, we try to allocate ourselves). - mainHash = implicitProducerHash.load(std::memory_order_acquire); - } - } // namespace moodycamel - + if ((probedKey == empty && mainHash->entries[index].key.compare_exchange_strong(empty, id, std::memory_order_relaxed, std::memory_order_relaxed))) { +#endif + mainHash->entries[index].value = producer; + break; + } + ++index; + } + return producer; + } + + // Hmm, the old hash is quite full and somebody else is busy allocating a new one. + // We need to wait for the allocating thread to finish (if it succeeds, we add, if not, + // we try to allocate ourselves). + mainHash = implicitProducerHash.load(std::memory_order_acquire); + } + } + #ifdef MOODYCAMEL_CPP11_THREAD_LOCAL_SUPPORTED - void implicit_producer_thread_exited(ImplicitProducer* producer) { - // Remove from thread exit listeners - details::ThreadExitNotifier::unsubscribe(&producer->threadExitListener); - -// Remove from hash + void implicit_producer_thread_exited(ImplicitProducer* producer) + { + // Remove from thread exit listeners + details::ThreadExitNotifier::unsubscribe(&producer->threadExitListener); + + // Remove from hash #if MCDBGQ_NOLOCKFREE_IMPLICITPRODHASH - debug::DebugLock lock(implicitProdMutex); -#endif - auto hash = implicitProducerHash.load(std::memory_order_acquire); - assert(hash != nullptr); // The thread exit listener is only registered if - // we were added to a hash in the first place - auto id = details::thread_id(); - auto hashedId = details::hash_thread_id(id); - details::thread_id_t probedKey; - - // We need to traverse all the hashes just in case other threads aren't on - // the current one yet and are trying to add an entry thinking there's a - // free slot (because they reused a producer) - for (; hash != nullptr; hash = hash->prev) { - auto index = hashedId; - do { - index &= hash->capacity - 1; - probedKey = hash->entries[index].key.load(std::memory_order_relaxed); - if (probedKey == id) { - hash->entries[index].key.store(details::invalid_thread_id2, - std::memory_order_release); - break; - } - ++index; - } while (probedKey != details::invalid_thread_id); // Can happen if the - // hash has changed but - // we weren't put back - // in it yet, or if we - // weren't added to - // this hash in the - // first place - } - - // Mark the queue as being recyclable - producer->inactive.store(true, std::memory_order_release); - } - - static void implicit_producer_thread_exited_callback(void* userData) { - auto producer = static_cast(userData); - auto queue = producer->parent; - queue->implicit_producer_thread_exited(producer); - } -#endif - - ////////////////////////////////// - // Utility functions - ////////////////////////////////// - - template static inline U* create_array(size_t count) { - assert(count > 0); - auto p = static_cast((Traits::malloc)(sizeof(U) * count)); - if (p == nullptr) { - return nullptr; - } - - for (size_t i = 0; i != count; ++i) { - new (p + i) U(); - } - return p; - } - - template static inline void destroy_array(U* p, size_t count) { - if (p != nullptr) { - assert(count > 0); - for (size_t i = count; i != 0;) { - (p + --i)->~U(); - } - (Traits::free)(p); - } - } - - template static inline U* create() { - auto p = (Traits::malloc)(sizeof(U)); - return p != nullptr ? new (p) U : nullptr; - } - - template static inline U* create(A1&& a1) { - auto p = (Traits::malloc)(sizeof(U)); - return p != nullptr ? new (p) U(std::forward(a1)) : nullptr; - } - - template static inline void destroy(U* p) { - if (p != nullptr) { - p->~U(); - } - (Traits::free)(p); - } + debug::DebugLock lock(implicitProdMutex); +#endif + auto hash = implicitProducerHash.load(std::memory_order_acquire); + assert(hash != nullptr); // The thread exit listener is only registered if we were added to a hash in the first place + auto id = details::thread_id(); + auto hashedId = details::hash_thread_id(id); + details::thread_id_t probedKey; + + // We need to traverse all the hashes just in case other threads aren't on the current one yet and are + // trying to add an entry thinking there's a free slot (because they reused a producer) + for (; hash != nullptr; hash = hash->prev) { + auto index = hashedId; + do { + index &= hash->capacity - 1; + probedKey = hash->entries[index].key.load(std::memory_order_relaxed); + if (probedKey == id) { + hash->entries[index].key.store(details::invalid_thread_id2, std::memory_order_release); + break; + } + ++index; + } while (probedKey != details::invalid_thread_id); // Can happen if the hash has changed but we weren't put back in it yet, or if we weren't added to this hash in the first place + } + + // Mark the queue as being recyclable + producer->inactive.store(true, std::memory_order_release); + } + + static void implicit_producer_thread_exited_callback(void* userData) + { + auto producer = static_cast(userData); + auto queue = producer->parent; + queue->implicit_producer_thread_exited(producer); + } +#endif + + ////////////////////////////////// + // Utility functions + ////////////////////////////////// + + template + static inline U* create_array(size_t count) + { + assert(count > 0); + auto p = static_cast((Traits::malloc)(sizeof(U) * count)); + if (p == nullptr) { + return nullptr; + } + + for (size_t i = 0; i != count; ++i) { + new (p + i) U(); + } + return p; + } + + template + static inline void destroy_array(U* p, size_t count) + { + if (p != nullptr) { + assert(count > 0); + for (size_t i = count; i != 0; ) { + (p + --i)->~U(); + } + (Traits::free)(p); + } + } + + template + static inline U* create() + { + auto p = (Traits::malloc)(sizeof(U)); + return p != nullptr ? new (p) U : nullptr; + } + + template + static inline U* create(A1&& a1) + { + auto p = (Traits::malloc)(sizeof(U)); + return p != nullptr ? new (p) U(std::forward(a1)) : nullptr; + } + + template + static inline void destroy(U* p) + { + if (p != nullptr) { + p->~U(); + } + (Traits::free)(p); + } private: - std::atomic producerListTail; - std::atomic producerCount; - - std::atomic initialBlockPoolIndex; - Block* initialBlockPool; - size_t initialBlockPoolSize; - + std::atomic producerListTail; + std::atomic producerCount; + + std::atomic initialBlockPoolIndex; + Block* initialBlockPool; + size_t initialBlockPoolSize; + #if !MCDBGQ_USEDEBUGFREELIST - FreeList freeList; + FreeList freeList; #else - debug::DebugFreeList freeList; -#endif - - std::atomic implicitProducerHash; - std::atomic - implicitProducerHashCount; // Number of slots logically used - ImplicitProducerHash initialImplicitProducerHash; - std::array - initialImplicitProducerHashEntries; - std::atomic_flag implicitProducerHashResizeInProgress; - - std::atomic nextExplicitConsumerId; - std::atomic globalExplicitConsumerOffset; - + debug::DebugFreeList freeList; +#endif + + std::atomic implicitProducerHash; + std::atomic implicitProducerHashCount; // Number of slots logically used + ImplicitProducerHash initialImplicitProducerHash; + std::array initialImplicitProducerHashEntries; + std::atomic_flag implicitProducerHashResizeInProgress; + + std::atomic nextExplicitConsumerId; + std::atomic globalExplicitConsumerOffset; + #if MCDBGQ_NOLOCKFREE_IMPLICITPRODHASH - debug::DebugMutex implicitProdMutex; + debug::DebugMutex implicitProdMutex; #endif - + #ifdef MOODYCAMEL_QUEUE_INTERNAL_DEBUG - std::atomic explicitProducers; - std::atomic implicitProducers; + std::atomic explicitProducers; + std::atomic implicitProducers; #endif }; -template + +template ProducerToken::ProducerToken(ConcurrentQueue& queue) - : producer(queue.recycle_or_create_producer(true)) { - if (producer != nullptr) { - producer->token = this; - } + : producer(queue.recycle_or_create_producer(true)) +{ + if (producer != nullptr) { + producer->token = this; + } } -template +template ProducerToken::ProducerToken(BlockingConcurrentQueue& queue) - : producer(reinterpret_cast*>(&queue) - ->recycle_or_create_producer(true)) { - if (producer != nullptr) { - producer->token = this; - } + : producer(reinterpret_cast*>(&queue)->recycle_or_create_producer(true)) +{ + if (producer != nullptr) { + producer->token = this; + } } -template +template ConsumerToken::ConsumerToken(ConcurrentQueue& queue) - : itemsConsumedFromCurrent(0), currentProducer(nullptr), - desiredProducer(nullptr) { - initialOffset = - queue.nextExplicitConsumerId.fetch_add(1, std::memory_order_release); - lastKnownGlobalOffset = -1; + : itemsConsumedFromCurrent(0), currentProducer(nullptr), desiredProducer(nullptr) +{ + initialOffset = queue.nextExplicitConsumerId.fetch_add(1, std::memory_order_release); + lastKnownGlobalOffset = -1; } -template +template ConsumerToken::ConsumerToken(BlockingConcurrentQueue& queue) - : itemsConsumedFromCurrent(0), currentProducer(nullptr), - desiredProducer(nullptr) { - initialOffset = - reinterpret_cast*>(&queue) - ->nextExplicitConsumerId.fetch_add(1, std::memory_order_release); - lastKnownGlobalOffset = -1; + : itemsConsumedFromCurrent(0), currentProducer(nullptr), desiredProducer(nullptr) +{ + initialOffset = reinterpret_cast*>(&queue)->nextExplicitConsumerId.fetch_add(1, std::memory_order_release); + lastKnownGlobalOffset = -1; } -template -inline void swap(ConcurrentQueue& a, - ConcurrentQueue& b) MOODYCAMEL_NOEXCEPT { - a.swap(b); +template +inline void swap(ConcurrentQueue& a, ConcurrentQueue& b) MOODYCAMEL_NOEXCEPT +{ + a.swap(b); } -inline void swap(ProducerToken& a, ProducerToken& b) MOODYCAMEL_NOEXCEPT { - a.swap(b); +inline void swap(ProducerToken& a, ProducerToken& b) MOODYCAMEL_NOEXCEPT +{ + a.swap(b); } -inline void swap(ConsumerToken& a, ConsumerToken& b) MOODYCAMEL_NOEXCEPT { - a.swap(b); +inline void swap(ConsumerToken& a, ConsumerToken& b) MOODYCAMEL_NOEXCEPT +{ + a.swap(b); } -template -inline void swap(typename ConcurrentQueue::ImplicitProducerKVP& a, - typename ConcurrentQueue::ImplicitProducerKVP& b) - MOODYCAMEL_NOEXCEPT { - a.swap(b); +template +inline void swap(typename ConcurrentQueue::ImplicitProducerKVP& a, typename ConcurrentQueue::ImplicitProducerKVP& b) MOODYCAMEL_NOEXCEPT +{ + a.swap(b); } -} // namespace moodycamel +} #if defined(__GNUC__) #pragma GCC diagnostic pop diff --git a/src/SalmonQuantify.cpp b/src/SalmonQuantify.cpp index feac995f5..029460308 100644 --- a/src/SalmonQuantify.cpp +++ b/src/SalmonQuantify.cpp @@ -1975,21 +1975,19 @@ void processReadLibrary( // generic lambda. /* auto processFunctor = [&](size_t i, auto& parserPtr, auto* index) { - if (salmonOpts.qmFileName != "" and i == 0) { - rapmap::utils::writeSAMHeader(*index, - salmonOpts.qmLog); - } - auto threadFun = [&, i]() -> void { - processReadsQuasi( - parserPtr.get(), readExp, rl, structureVec[i], - numObservedFragments, numAssignedFragments, numValidHits, - upperBoundHits, index, transcripts, - fmCalc, clusterForest, fragLengthDist, observedBiasParams[i], - salmonOpts, coverageThresh, iomutex, initialRound, - burnedIn, writeToCache); - }; - threads.emplace_back(threadFun); - }; + if (salmonOpts.qmFileName != "" and i == 0) { + rapmap::utils::writeSAMHeader(*index, salmonOpts.qmLog); + } + auto threadFun = [&, i]() -> void { + processReadsQuasi(parserPtr.get(), readExp, rl, structureVec[i], + numObservedFragments, numAssignedFragments, numValidHits, + upperBoundHits, index, transcripts, + fmCalc, clusterForest, fragLengthDist, observedBiasParams[i], + salmonOpts, coverageThresh, iomutex, initialRound, + burnedIn, writeToCache); + }; + threads.emplace_back(threadFun); + }; */ ProcessFunctor processFunctor(readExp, rl, structureVec, From 1cb07c41bbd3a09249e79be5fad2ec78af1edd6d Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Tue, 24 Jul 2018 12:15:34 -0400 Subject: [PATCH 25/37] Transitioning to our k-mer class where possible @k3yavi : can you please look at the changes I made in AlevinKmer.hpp and comment on the NOTE? --- include/AlevinKmer.hpp | 15 +++++++++++---- src/SalmonAlevin.cpp | 3 +-- src/SalmonQuantify.cpp | 9 ++------- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/include/AlevinKmer.hpp b/include/AlevinKmer.hpp index 3b856d32a..9c3aecc39 100644 --- a/include/AlevinKmer.hpp +++ b/include/AlevinKmer.hpp @@ -1,14 +1,14 @@ #ifndef __ALEVIN_KMER_HPP__ #define __ALEVIN_KMER_HPP__ -#include "jellyfish/mer_dna.hpp" +#include "rapmap/Kmer.hpp" //code taken from //https://raw.githubusercontent.com/COMBINE-lab/pufferfish/a51c41308142cdd0186724b0ca2bf773f5882072/include/CanonicalKmer.hpp namespace alevin { namespace kmer { - using Mer = jellyfish::mer_dna_ns::mer_base_static; + using Mer = combinelib::kmers::Kmer<32, 2>; // NO_MATCH => two k-mers k1, and k2 are distinct such that k1 != k2 and rc(k1) // != k2 @@ -17,7 +17,7 @@ namespace alevin { /** - * This class wraps a pair of jellifish k-mers + * This class wraps a kmer class * for efficient umi handling */ class AlvKmer { @@ -39,6 +39,11 @@ namespace alevin { static inline int k() { return Mer::k(); } inline bool fromStr(const std::string& s) { + return umi_.fromCharsSafe(s); + // NOTE : @Avi -- what happens below if s is of + // the appropriate length, but contains an 'N' + // character? + /* auto k = Mer::k(); if (s.length() < k) { return false; @@ -47,6 +52,7 @@ namespace alevin { umi_.shift_right(s[i]); } return true; + */ } inline void fromNum(uint64_t w) { @@ -67,7 +73,8 @@ namespace alevin { } inline std::string to_str() const { - std::string s = umi_.to_str(); + //std::string s = umi_.to_str(); + std::string s = umi_.toStr(); std::reverse(s.begin(), s.end()); return s; } diff --git a/src/SalmonAlevin.cpp b/src/SalmonAlevin.cpp index 2c29b5334..cef82a3e9 100644 --- a/src/SalmonAlevin.cpp +++ b/src/SalmonAlevin.cpp @@ -137,7 +137,6 @@ namespace alevin{ using TranscriptID = uint32_t; using TranscriptIDVector = std::vector; using KmerIDMap = std::vector; - using my_mer = jellyfish::mer_dna_ns::mer_base_static; constexpr uint32_t miniBatchSize{5000}; @@ -805,7 +804,7 @@ void processReadsQuasi( bool isUmiIdxOk = umiIdx.fromStr(umi); if(not isUmiIdxOk){ - salmonOpts.jointLog->error("umi indexing of jellyfish failing.\n" + salmonOpts.jointLog->error("UMI indexing failed (perhaps reads were shorter than UMI + barcode?).\n" "Please report on github"); exit(1); } diff --git a/src/SalmonQuantify.cpp b/src/SalmonQuantify.cpp index 029460308..8dcb15bb6 100644 --- a/src/SalmonQuantify.cpp +++ b/src/SalmonQuantify.cpp @@ -47,9 +47,6 @@ #include #include -// Jellyfish 2 include -#include "jellyfish/mer_dna.hpp" - // Boost Includes #include #include @@ -133,7 +130,6 @@ using single_parser = fastx_parser::FastxParser; using TranscriptID = uint32_t; using TranscriptIDVector = std::vector; using KmerIDMap = std::vector; -using my_mer = jellyfish::mer_dna_ns::mer_base_static; constexpr uint32_t miniBatchSize{5000}; @@ -1429,9 +1425,8 @@ void processReadsQuasi( // SINGLE END -// To use the parser in the following, we get "jobs" until none is -// available. A job behaves like a pointer to the type -// jellyfish::sequence_list (see whole_sequence_parser.hpp). +// To use the parser in the following, we get ReadGroups until none is +// available. template void processReadsQuasi( single_parser* parser, ReadExperimentT& readExp, ReadLibrary& rl, From a34d96f3382fa719aa4893c08bc6e143b5dc0ca3 Mon Sep 17 00:00:00 2001 From: patrickvdb Date: Thu, 26 Jul 2018 15:48:50 +0200 Subject: [PATCH 26/37] Update alevin.rst --- doc/source/alevin.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/alevin.rst b/doc/source/alevin.rst index db8e088f3..33518fa7f 100644 --- a/doc/source/alevin.rst +++ b/doc/source/alevin.rst @@ -1,7 +1,7 @@ Alevin ================ -Aleivn is a tool --- integrated with the salmon software --- that introduces a family of algorithms for quantification and analysis of 3' tagged-end single-cell sequencing data. Currently alevin supports the following two major droplet based single-cell protocols: +Alevin is a tool --- integrated with the salmon software --- that introduces a family of algorithms for quantification and analysis of 3' tagged-end single-cell sequencing data. Currently alevin supports the following two major droplet based single-cell protocols: 1. Drop-seq 2. 10x-Chromium v1/2 From 41334ad170dd49f8ce6952f4e482036d5d3aa668 Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Thu, 26 Jul 2018 18:41:18 -0400 Subject: [PATCH 27/37] [CI SKIP] work on making version bump eaiser --- CMakeLists.txt | 24 ++++++++++++++++++++---- current_version.txt | 3 +++ doc/source/conf.py | 4 ++-- include/SalmonConfig.hpp | 4 ++-- scripts/bump_version.sh | 8 ++++++++ 5 files changed, 35 insertions(+), 8 deletions(-) create mode 100644 current_version.txt create mode 100644 scripts/bump_version.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 8219f078f..9751a6d96 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,10 +4,26 @@ enable_testing() project (Salmon) -set(CPACK_PACKAGE_VERSION "0.11.0") -set(CPACK_PACKAGE_VERSION_MAJOR "0") -set(CPACK_PACKAGE_VERSION_MINOR "11") -set(CPACK_PACKAGE_VERSION_PATCH "0") +# auto-populate version: +# from https://stackoverflow.com/questions/47066115/cmake-get-version-from-multi-line-text-file +file(READ "current_version.txt" ver) + +string(REGEX MATCH "VERSION_MAJOR ([0-9]*)" _ ${ver}) +set(ver_major ${CMAKE_MATCH_1}) + +string(REGEX MATCH "VERSION_MINOR ([0-9]*)" _ ${ver}) +set(ver_minor ${CMAKE_MATCH_1}) + +string(REGEX MATCH "VERSION_PATCH ([0-9]*)" _ ${ver}) +set(ver_patch ${CMAKE_MATCH_1}) + +set(CPACK_PACKAGE_VERSION_MAJOR ${ver_major}) +set(CPACK_PACKAGE_VERSION_MINOR ${ver_minor}) +set(CPACK_PACKAGE_VERSION_PATCH ${ver_patch}) + +set(CPACK_PACKAGE_VERSION "${ver_major}.${ver_minor}.${ver_patch}") +message("version: ${CPACK_PACKAGE_VERSION}") + set(PROJECT_VERSION ${CPACK_PACKAGE_VERSION}) set(CPACK_GENERATOR "TGZ") set(CPACK_SOURCE_GENERATOR "TGZ") diff --git a/current_version.txt b/current_version.txt new file mode 100644 index 000000000..1015d4eb5 --- /dev/null +++ b/current_version.txt @@ -0,0 +1,3 @@ +VERSION_MAJOR 0 +VERSION_MINOR 11 +VERSION_PATCH 1 diff --git a/doc/source/conf.py b/doc/source/conf.py index 41609d2e8..405dd9ff2 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -55,9 +55,9 @@ # built documents. # # The short X.Y version. -version = '0.8.1' +version = '0.11' # The full version, including alpha/beta/rc tags. -release = '0.8.1' +release = '0.11.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/include/SalmonConfig.hpp b/include/SalmonConfig.hpp index 4c468b8af..01a9d798d 100644 --- a/include/SalmonConfig.hpp +++ b/include/SalmonConfig.hpp @@ -27,8 +27,8 @@ namespace salmon { constexpr char majorVersion[] = "0"; constexpr char minorVersion[] = "11"; -constexpr char patchVersion[] = "0"; -constexpr char version[] = "0.11.0"; +constexpr char patchVersion[] = "1"; +constexpr char version[] = "0.11.1"; constexpr uint32_t indexVersion = 2; constexpr char requiredQuasiIndexVersion[] = "q5"; } // namespace salmon diff --git a/scripts/bump_version.sh b/scripts/bump_version.sh new file mode 100644 index 000000000..6ea69dfe0 --- /dev/null +++ b/scripts/bump_version.sh @@ -0,0 +1,8 @@ + +major_v=`../build/src/salmon -v | cut -d ' ' -f 2 | cut -d '.' -f 1` +minor_v=`../build/src/salmon -v | cut -d ' ' -f 2 | cut -d '.' -f 2` +patch_v=`../build/src/salmon -v | cut -d ' ' -f 2 | cut -d '.' -f 3` + +echo "VERSION : ${major_v}.${minor_v}.${patch_v}" + +awk -v majv=${major_v} -v minv=${minor_v} -v patchv=${patch_v} '{ if ($0 ~ /ENV SALMON_VERSION/) { print "ENV SALMON_VERSION " majv"."minv"."patchv; } else { print $0; }}' ../docker/Dockerfile > ../docker/Dockerfile.new From d0cf01eb5c744535ce0d7ced3ab45a85b2840b35 Mon Sep 17 00:00:00 2001 From: k3yavi Date: Thu, 26 Jul 2018 20:53:48 -0400 Subject: [PATCH 28/37] fixing kmer issue; still have to fix Alevin issue --- include/AlevinKmer.hpp | 92 ------------------------------------------ include/Dedup.hpp | 1 - include/GZipWriter.hpp | 1 - src/AlevinUtils.cpp | 4 +- src/Dedup.cpp | 11 +++-- src/GZipWriter.cpp | 11 +++-- src/SalmonAlevin.cpp | 47 ++++++++++++--------- 7 files changed, 44 insertions(+), 123 deletions(-) delete mode 100644 include/AlevinKmer.hpp diff --git a/include/AlevinKmer.hpp b/include/AlevinKmer.hpp deleted file mode 100644 index 9c3aecc39..000000000 --- a/include/AlevinKmer.hpp +++ /dev/null @@ -1,92 +0,0 @@ -#ifndef __ALEVIN_KMER_HPP__ -#define __ALEVIN_KMER_HPP__ - -#include "rapmap/Kmer.hpp" - -//code taken from -//https://raw.githubusercontent.com/COMBINE-lab/pufferfish/a51c41308142cdd0186724b0ca2bf773f5882072/include/CanonicalKmer.hpp - -namespace alevin { - namespace kmer { - using Mer = combinelib::kmers::Kmer<32, 2>; - - // NO_MATCH => two k-mers k1, and k2 are distinct such that k1 != k2 and rc(k1) - // != k2 - // IDENTITY_MATCH => k1 = k2 - enum class KmerMatchType : uint8_t { NO_MATCH = 0, IDENTITY_MATCH }; - - - /** - * This class wraps a kmer class - * for efficient umi handling - */ - class AlvKmer { - private: - Mer umi_; - - public: - AlvKmer() = default; - AlvKmer(AlvKmer&& other) = default; - AlvKmer(AlvKmer& other) = default; - AlvKmer(const AlvKmer& other) = default; - AlvKmer& operator=(AlvKmer& other) = default; - - AlvKmer(const size_t& umi_length){ - umi_.k(umi_length); - } - - static inline void k(int kIn) { Mer::k(kIn); } - static inline int k() { return Mer::k(); } - - inline bool fromStr(const std::string& s) { - return umi_.fromCharsSafe(s); - // NOTE : @Avi -- what happens below if s is of - // the appropriate length, but contains an 'N' - // character? - /* - auto k = Mer::k(); - if (s.length() < k) { - return false; - } - for (size_t i = 0; i < k; ++i) { - umi_.shift_right(s[i]); - } - return true; - */ - } - - inline void fromNum(uint64_t w) { - umi_.word__(0) = w; - } - - inline const Mer& umi() const { return umi_; } - - inline uint64_t umiWord() const { return umi_.word(0); } - - inline KmerMatchType isEquivalent(const Mer& m) const { - return m.word(0) == umiWord() - ? KmerMatchType::IDENTITY_MATCH : KmerMatchType::NO_MATCH; - } - - inline KmerMatchType isEquivalent(uint64_t m) const { - return m == umiWord() ? KmerMatchType::IDENTITY_MATCH : KmerMatchType::NO_MATCH; - } - - inline std::string to_str() const { - //std::string s = umi_.to_str(); - std::string s = umi_.toStr(); - std::reverse(s.begin(), s.end()); - return s; - } - - bool operator==(const AlvKmer& rhs) const { - return this->umi_ == rhs.umi_; - } - bool operator!=(const AlvKmer& rhs) const { - return !this->operator==(rhs); - } - }; - } -} - -#endif // __ALEVIN_KMER_HPP__ diff --git a/include/Dedup.hpp b/include/Dedup.hpp index 8a5c12119..06d6c5943 100644 --- a/include/Dedup.hpp +++ b/include/Dedup.hpp @@ -7,7 +7,6 @@ #include "SalmonOpts.hpp" #include "CollapsedEMOptimizer.hpp" #include "GZipWriter.hpp" -#include "AlevinKmer.hpp" #include "RapMapUtils.hpp" #include "AlevinUtils.hpp" diff --git a/include/GZipWriter.hpp b/include/GZipWriter.hpp index 4c00930f1..c83158a1d 100644 --- a/include/GZipWriter.hpp +++ b/include/GZipWriter.hpp @@ -14,7 +14,6 @@ #include "SalmonOpts.hpp" #include "SalmonSpinLock.hpp" #include "AlevinOpts.hpp" -#include "AlevinKmer.hpp" class GZipWriter { public: diff --git a/src/AlevinUtils.cpp b/src/AlevinUtils.cpp index d4e02c91a..311ec7922 100644 --- a/src/AlevinUtils.cpp +++ b/src/AlevinUtils.cpp @@ -44,8 +44,8 @@ namespace alevin { bool extractUMI(std::string& read, apt::DropSeq& pt, std::string& umi){ - std::cout<<"Incorrect call for umi extract"; - exit(0); + umi = read.substr(pt.barcodeLength, pt.umiLength); + return true; } template <> bool extractUMI(std::string& read, diff --git a/src/Dedup.cpp b/src/Dedup.cpp index 822254c35..59656aacc 100644 --- a/src/Dedup.cpp +++ b/src/Dedup.cpp @@ -162,11 +162,14 @@ uint32_t dedupReads( // making a vector umi sequences std::vector> umis; - alevin::kmer::AlvKmer jellyObj(umiLength); - + combinelib::kmers::Kmer<32, 2> umiObj; + umiObj.k(umiLength); + for(auto& umi: visitList){ - jellyObj.fromNum(umi); - std::string umiseq = jellyObj.to_str(); + umiObj.word__(0) = umi; + std::string umiseq = umiObj.toStr(); + std::reverse(umiseq.begin(), umiseq.end()); + umis.emplace_back(std::make_pair(umi, umiseq)); if (umiseq.size() != umiLength){ std::cout << "Size mismatch from Jelly Object\n" diff --git a/src/GZipWriter.cpp b/src/GZipWriter.cpp index 83db1f75a..f6b08d460 100644 --- a/src/GZipWriter.cpp +++ b/src/GZipWriter.cpp @@ -158,7 +158,9 @@ bool GZipWriter::writeBFH(boost::filesystem::path& outDir, equivFile << b << '\n'; } - alevin::kmer::AlvKmer jellyObj(umiLength); + combinelib::kmers::Kmer<32, 2> umiObj; + umiObj.k(umiLength); + for (auto& eq : eqVec) { uint64_t count = eq.second.count; // for each transcript in this class @@ -177,9 +179,12 @@ bool GZipWriter::writeBFH(boost::filesystem::path& outDir, equivFile << "\t" << bc << "\t" << ugroup.size(); for (auto umiIt : ugroup){ auto umi = umiIt.first; - jellyObj.fromNum(umi); + umiObj.word__(0) = umi; auto count = umiIt.second; - equivFile << "\t" << jellyObj.to_str() << "\t" << count; + + std::string s = umiObj.toStr(); + std::reverse(s.begin(), s.end()); + equivFile << "\t" << s << "\t" << count; } } equivFile << "\n"; diff --git a/src/SalmonAlevin.cpp b/src/SalmonAlevin.cpp index cef82a3e9..d5cf07fb0 100644 --- a/src/SalmonAlevin.cpp +++ b/src/SalmonAlevin.cpp @@ -122,7 +122,6 @@ #include "PairAlignmentFormatter.hpp" #include "SingleAlignmentFormatter.hpp" #include "RapMapUtils.hpp" -#include "AlevinKmer.hpp" namespace alevin{ @@ -616,6 +615,7 @@ void processReadsQuasi( std::atomic& numAssignedFragments, std::atomic& validHits, std::atomic& upperBoundHits, std::atomic& smallSeqs, + std::atomic& nSeqs, RapMapIndexT* qidx, std::vector& transcripts, ForgettingMassCalculator& fmCalc, ClusterForest& clusterForest, FragmentLengthDistribution& fragLengthDist, BiasParams& observedBiasParams, @@ -800,22 +800,23 @@ void processReadsQuasi( smallSeqs += 1; } else{ - alevin::kmer::AlvKmer umiIdx(umiLength); - bool isUmiIdxOk = umiIdx.fromStr(umi); - - if(not isUmiIdxOk){ - salmonOpts.jointLog->error("UMI indexing failed (perhaps reads were shorter than UMI + barcode?).\n" - "Please report on github"); - exit(1); - } - - jointHitGroup.setUMI(umiIdx.umiWord()); + combinelib::kmers::Kmer<32, 2> umiIdx; + umiIdx.k(umiLength); + bool isUmiIdxOk = umiIdx.fromChars(umi); lh = false; - rh = tooShortRight ? false : hitCollector(rp.second.seq, saSearcher, rightHCInfo); - rapmap::hit_manager::hitsToMappingsSimple(*qidx, mc, - MateStatus::PAIRED_END_RIGHT, - rightHCInfo, rightHits); + if(isUmiIdxOk){ + jointHitGroup.setUMI(umiIdx.word(0)); + + rh = tooShortRight ? false : hitCollector(rp.second.seq, saSearcher, rightHCInfo); + rapmap::hit_manager::hitsToMappingsSimple(*qidx, mc, + MateStatus::PAIRED_END_RIGHT, + rightHCInfo, rightHits); + } + else{ + rh = false; + nSeqs += 1; + } } } } @@ -1158,6 +1159,7 @@ void processReadLibrary( numAssignedFragments, // total number of assigned reads std::atomic& upperBoundHits, // upper bound on # of mapped frags std::atomic& smallSeqs, + std::atomic& nSeqs, bool initialRound, std::atomic& burnedIn, ForgettingMassCalculator& fmCalc, FragmentLengthDistribution& fragLengthDist, @@ -1222,7 +1224,7 @@ void processReadLibrary( processReadsQuasi>>( pairedParserPtr.get(), readExp, rl, structureVec[i], numObservedFragments, numAssignedFragments, numValidHits, - upperBoundHits, smallSeqs, sidx->quasiIndexPerfectHash64(), transcripts, + upperBoundHits, smallSeqs, nSeqs, sidx->quasiIndexPerfectHash64(), transcripts, fmCalc, clusterForest, fragLengthDist, observedBiasParams[i], salmonOpts, iomutex, initialRound, burnedIn, writeToCache, alevinOpts, barcodeMap, trBcs/*, uniqueFLDs[i]*/); @@ -1236,7 +1238,7 @@ void processReadLibrary( processReadsQuasi>>( pairedParserPtr.get(), readExp, rl, structureVec[i], numObservedFragments, numAssignedFragments, numValidHits, - upperBoundHits, smallSeqs, sidx->quasiIndex64(), transcripts, fmCalc, + upperBoundHits, smallSeqs, nSeqs, sidx->quasiIndex64(), transcripts, fmCalc, clusterForest, fragLengthDist, observedBiasParams[i], salmonOpts, iomutex, initialRound, burnedIn, writeToCache, alevinOpts, barcodeMap, trBcs/*, uniqueFLDs[i]*/); @@ -1252,7 +1254,7 @@ void processReadLibrary( processReadsQuasi>>( pairedParserPtr.get(), readExp, rl, structureVec[i], numObservedFragments, numAssignedFragments, numValidHits, - upperBoundHits, smallSeqs, sidx->quasiIndexPerfectHash32(), transcripts, + upperBoundHits, smallSeqs, nSeqs, sidx->quasiIndexPerfectHash32(), transcripts, fmCalc, clusterForest, fragLengthDist, observedBiasParams[i], salmonOpts, iomutex, initialRound, burnedIn, writeToCache, alevinOpts, barcodeMap, trBcs/*, uniqueFLDs[i]*/); @@ -1266,7 +1268,7 @@ void processReadLibrary( processReadsQuasi>>( pairedParserPtr.get(), readExp, rl, structureVec[i], numObservedFragments, numAssignedFragments, numValidHits, - upperBoundHits, smallSeqs, sidx->quasiIndex32(), transcripts, fmCalc, + upperBoundHits, smallSeqs, nSeqs, sidx->quasiIndex32(), transcripts, fmCalc, clusterForest, fragLengthDist, observedBiasParams[i], salmonOpts, iomutex, initialRound, burnedIn, writeToCache, alevinOpts, barcodeMap, trBcs/*, uniqueFLDs[i]*/); @@ -1389,6 +1391,7 @@ void quantifyLibrary(ReadExperimentT& experiment, bool greedyChain, // the data). std::atomic numObservedFragments{0}; std::atomic smallSeqs{0}; + std::atomic nSeqs{0}; uint64_t prevNumObservedFragments{0}; // The *total* number of fragments assigned so far (over all passes through // the data). @@ -1434,7 +1437,7 @@ void quantifyLibrary(ReadExperimentT& experiment, bool greedyChain, processReadLibrary(experiment, rl, sidx, transcripts, clusterForest, numObservedFragments, totalAssignedFragments, - upperBoundHits, smallSeqs, initialRound, burnedIn, fmCalc, + upperBoundHits, smallSeqs, nSeqs, initialRound, burnedIn, fmCalc, fragLengthDist, salmonOpts, greedyChain, ioMutex, numQuantThreads, groupVec, writeToCache, @@ -1541,6 +1544,10 @@ void quantifyLibrary(ReadExperimentT& experiment, bool greedyChain, jointLog->warn("Found {} reads with CB+UMI length smaller than expected." "Please report on github if this number is too large", smallSeqs); } + if (nSeqs > 100) { + jointLog->warn("Found {} reads with `N` in the UMI sequence and ignored the reads " + "Please report on github if this number is too large", nSeqs); + } //+++++++++++++++++++++++++++++++++++++++ jointLog->info("Mapping rate = {}\%\n", experiment.effectiveMappingRate() * 100.0); From 8cd465f85497bc9353c7c2e432eeeea09f57d328 Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Thu, 26 Jul 2018 21:35:52 -0400 Subject: [PATCH 29/37] [CI SKIP] improve bump_version.sh --- docker/Dockerfile | 2 +- scripts/bump_version.sh | 21 +++++++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 9b3aeba61..c7d206966 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -6,7 +6,7 @@ MAINTAINER salmon.maintainer@gmail.com ENV PACKAGES git gcc make g++ cmake libboost-all-dev liblzma-dev libbz2-dev \ ca-certificates zlib1g-dev curl unzip autoconf -ENV SALMON_VERSION 0.11.0 +ENV SALMON_VERSION 0.11.1 # salmon binary will be installed in /home/salmon/bin/salmon diff --git a/scripts/bump_version.sh b/scripts/bump_version.sh index 6ea69dfe0..b0eaf52bd 100644 --- a/scripts/bump_version.sh +++ b/scripts/bump_version.sh @@ -1,8 +1,21 @@ +#!/usr/bin/env bash -major_v=`../build/src/salmon -v | cut -d ' ' -f 2 | cut -d '.' -f 1` -minor_v=`../build/src/salmon -v | cut -d ' ' -f 2 | cut -d '.' -f 2` -patch_v=`../build/src/salmon -v | cut -d ' ' -f 2 | cut -d '.' -f 3` +HERE="$( cd "$(dirname "$0")" ; pwd -P )" + +major_v=`${HERE}/../build/src/salmon -v | cut -d ' ' -f 2 | cut -d '.' -f 1` +minor_v=`${HERE}/../build/src/salmon -v | cut -d ' ' -f 2 | cut -d '.' -f 2` +patch_v=`${HERE}/../build/src/salmon -v | cut -d ' ' -f 2 | cut -d '.' -f 3` echo "VERSION : ${major_v}.${minor_v}.${patch_v}" -awk -v majv=${major_v} -v minv=${minor_v} -v patchv=${patch_v} '{ if ($0 ~ /ENV SALMON_VERSION/) { print "ENV SALMON_VERSION " majv"."minv"."patchv; } else { print $0; }}' ../docker/Dockerfile > ../docker/Dockerfile.new +# update docker file +awk -v majv=${major_v} -v minv=${minor_v} -v patchv=${patch_v} '{ if ($0 ~ /ENV SALMON_VERSION/) { print "ENV SALMON_VERSION " majv"."minv"."patchv; } else { print $0; }}' \ + ${HERE}/../docker/Dockerfile > ${HERE}/../docker/Dockerfile.new && mv ${HERE}/../docker/Dockerfile.new ${HERE}/../docker/Dockerfile + +# update version file (which feeds cmake) +echo -e "VERSION_MAJOR ${major_v}\nVERSION_MINOR ${minor_v}\nVERSION_PATCH ${patch_v}" > ${HERE}/../current_version.txt + +# update conf.py +awk -v majv=${major_v} -v minv=${minor_v} -v patchv=${patch_v} \ + '{ if ($0 ~ /version = /) { print "version = '\''" majv"."minv"'\''"; } else if ($0 ~ /release = /) { print "release = '\''" majv"."minv"."patchv"'\''"; } else { print $0; }}' \ + ${HERE}/../doc/source/conf.py > ${HERE}/../doc/source/conf.py.new && mv ${HERE}/../doc/source/conf.py.new ${HERE}/../doc/source/conf.py From e79b781f3ad2df53e37fc5a13dbb80d6f5735c67 Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Thu, 26 Jul 2018 22:01:48 -0400 Subject: [PATCH 30/37] factor out Alevin UMI k-mer type --- include/AlevinTypes.hpp | 15 +++++++++++++++ include/SingleCellProtocols.hpp | 5 ++++- src/Dedup.cpp | 4 ++-- src/GZipWriter.cpp | 4 ++-- src/SalmonAlevin.cpp | 4 ++-- 5 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 include/AlevinTypes.hpp diff --git a/include/AlevinTypes.hpp b/include/AlevinTypes.hpp new file mode 100644 index 000000000..1069282bb --- /dev/null +++ b/include/AlevinTypes.hpp @@ -0,0 +1,15 @@ +#ifndef __ALEVIN_TYPES_HPP__ +#define __ALEVIN_TYPES_HPP__ + +#include "rapmap/Kmer.hpp" + +namespace alevin { +namespace types { + + using AlevinUMIKmer = combinelib::kmers::Kmer<32,2>; + +} +} + +#endif//__ALEVIN_TYPES_HPP__ + diff --git a/include/SingleCellProtocols.hpp b/include/SingleCellProtocols.hpp index c930909b1..eb1250a3b 100644 --- a/include/SingleCellProtocols.hpp +++ b/include/SingleCellProtocols.hpp @@ -4,6 +4,7 @@ #include #include "AlevinOpts.hpp" +#include "AlevinTypes.hpp" namespace alevin{ namespace protocols { @@ -17,7 +18,9 @@ namespace alevin{ barcodeLength(barcodeLength_), umiLength(umiLength_), end(end_), - maxValue(maxValue_){} + maxValue(maxValue_){ + alevin::types::AlevinUMIKmer::k(umiLength); + } uint32_t barcodeLength, umiLength, maxValue; BarcodeEnd end; }; diff --git a/src/Dedup.cpp b/src/Dedup.cpp index 59656aacc..8822c9b67 100644 --- a/src/Dedup.cpp +++ b/src/Dedup.cpp @@ -1,4 +1,5 @@ #include "Dedup.hpp" +#include "AlevinTypes.hpp" // idea of deduplication of read in *each and every* eqclass is from //Ntranos, Vasilis, et al. "Fast and accurate single-cell RNA-seq analysis by clustering of transcript-compatibility counts." Genome biology 17.1 (2016): 112 @@ -162,8 +163,7 @@ uint32_t dedupReads( // making a vector umi sequences std::vector> umis; - combinelib::kmers::Kmer<32, 2> umiObj; - umiObj.k(umiLength); + alevin::types::AlevinUMIKmer umiObj; for(auto& umi: visitList){ umiObj.word__(0) = umi; diff --git a/src/GZipWriter.cpp b/src/GZipWriter.cpp index f6b08d460..1d472f84b 100644 --- a/src/GZipWriter.cpp +++ b/src/GZipWriter.cpp @@ -5,6 +5,7 @@ #include "cereal/archives/json.hpp" #include "AlignmentLibrary.hpp" +#include "AlevinTypes.hpp" #include "DistributionUtils.hpp" #include "GZipWriter.hpp" #include "ReadExperiment.hpp" @@ -158,8 +159,7 @@ bool GZipWriter::writeBFH(boost::filesystem::path& outDir, equivFile << b << '\n'; } - combinelib::kmers::Kmer<32, 2> umiObj; - umiObj.k(umiLength); + alevin::types::AlevinUMIKmer umiObj; for (auto& eq : eqVec) { uint64_t count = eq.second.count; diff --git a/src/SalmonAlevin.cpp b/src/SalmonAlevin.cpp index d5cf07fb0..b06e5857f 100644 --- a/src/SalmonAlevin.cpp +++ b/src/SalmonAlevin.cpp @@ -800,8 +800,8 @@ void processReadsQuasi( smallSeqs += 1; } else{ - combinelib::kmers::Kmer<32, 2> umiIdx; - umiIdx.k(umiLength); + alevin::types::AlevinUMIKmer umiIdx; + bool isUmiIdxOk = umiIdx.fromChars(umi); lh = false; From 2c28206738d75c0ec3ef11b29362d5f0d1e29959 Mon Sep 17 00:00:00 2001 From: Rob Patro Date: Thu, 26 Jul 2018 23:43:20 -0400 Subject: [PATCH 31/37] some cleaning --- include/ReadExperiment.hpp | 3 +-- include/SalmonIndex.hpp | 4 ++-- include/SalmonIndexVersionInfo.hpp | 2 +- src/Alevin.cpp | 2 +- src/BuildSalmonIndex.cpp | 33 ++++++++---------------------- src/CMakeLists.txt | 4 +++- src/SalmonQuantify.cpp | 4 ++-- 7 files changed, 19 insertions(+), 33 deletions(-) diff --git a/include/ReadExperiment.hpp b/include/ReadExperiment.hpp index b56af0b56..bc415105c 100644 --- a/include/ReadExperiment.hpp +++ b/include/ReadExperiment.hpp @@ -156,8 +156,7 @@ class ReadExperiment { } break; case SalmonIndexType::FMD: - infostr << "Error: This version of salmon " << versionPath.string() - << " does not support the FMD index mode."; + infostr << "Error: This version of salmon does not support the FMD index mode."; throw std::invalid_argument(infostr.str()); break; } diff --git a/include/SalmonIndex.hpp b/include/SalmonIndex.hpp index c64bad7e0..850c0e604 100644 --- a/include/SalmonIndex.hpp +++ b/include/SalmonIndex.hpp @@ -53,7 +53,7 @@ class SalmonIndex { // Load the appropriate index type if (indexType == SalmonIndexType::FMD) { fmt::MemoryWriter infostr; - infostr << "Error: This version of salmon does not support FMD indexing"; + infostr << "Error: This version of salmon does not support FMD indexing."; throw std::invalid_argument(infostr.str()); } else { loadQuasiIndex_(indexDir); @@ -69,7 +69,7 @@ class SalmonIndex { case SalmonIndexType::QUASI: return buildQuasiIndex_(indexDir, argVec, k); case SalmonIndexType::FMD: - logger_->error("This version of salmon does not support FMD indexing"); + logger_->error("This version of salmon does not support FMD indexing."); return false; default: logger_->warn("Unexpected index type; cannot build"); diff --git a/include/SalmonIndexVersionInfo.hpp b/include/SalmonIndexVersionInfo.hpp index d758bbdb4..e60226d5c 100644 --- a/include/SalmonIndexVersionInfo.hpp +++ b/include/SalmonIndexVersionInfo.hpp @@ -14,7 +14,7 @@ class SalmonIndexVersionInfo { */ SalmonIndexVersionInfo() : indexVersion_(0), hasAuxKmerIndex_(false), auxKmerLength_(0), - indexType_(SalmonIndexType::FMD) {} + indexType_(SalmonIndexType::QUASI) {} SalmonIndexVersionInfo(uint32_t indexVersionIn, bool hasAuxKmerIndexIn, uint32_t auxKmerLengthIn, SalmonIndexType indexTypeIn) diff --git a/src/Alevin.cpp b/src/Alevin.cpp index 73cf5ca48..7973661ee 100644 --- a/src/Alevin.cpp +++ b/src/Alevin.cpp @@ -841,7 +841,7 @@ int salmonBarcoding(int argc, char* argv[]) { auto alevinDevsOpt = pogen.getAlevinDevsOptions(); po::options_description all("alevin options"); - all.add(inputOpt).add(alevinBasicOpt).add(alevinDevsOpt).add(basicOpt).add(mapSpecOpt).add(advancedOpt)/*.add(fmdOpt)*/.add(testingOpt).add(hiddenOpt).add(deprecatedOpt); + all.add(inputOpt).add(alevinBasicOpt).add(alevinDevsOpt).add(basicOpt).add(mapSpecOpt).add(advancedOpt).add(testingOpt).add(hiddenOpt).add(deprecatedOpt); po::options_description visible("alevin options"); visible.add(inputOpt).add(alevinBasicOpt).add(basicOpt); diff --git a/src/BuildSalmonIndex.cpp b/src/BuildSalmonIndex.cpp index 597cb6bf9..17dc93701 100644 --- a/src/BuildSalmonIndex.cpp +++ b/src/BuildSalmonIndex.cpp @@ -51,7 +51,7 @@ int salmonIndex(int argc, char* argv[]) { bool useStreamingParser = true; - string indexTypeStr = "fmd"; + string indexTypeStr = "quasi"; uint32_t saSampInterval = 1; uint32_t auxKmerLen = 0; uint32_t numThreads{2}; @@ -92,14 +92,7 @@ int salmonIndex(int argc, char* argv[]) { "take longer to construct")( "type", po::value(&indexTypeStr)->default_value("quasi")->required(), - "The type of index to build; options are \"fmd\" and \"quasi\" " - "\"quasi\" is recommended, and \"fmd\" may be removed in the future")( - "sasamp,s", - po::value(&saSampInterval)->default_value(1)->required(), - "The interval at which the suffix array should be sampled. " - "Smaller values are faster, but produce a larger index. " - "The default should be OK, unless your transcriptome is huge. " - "This value should be a power of 2."); + "The type of index to build; the only option is \"quasi\" in this version of salmon."); po::variables_map vm; int ret = 0; @@ -119,26 +112,19 @@ Creates a salmon index. } po::notify(vm); - if (!(indexTypeStr == "quasi" or indexTypeStr == "fmd")) { + if (indexTypeStr == "fmd") { fmt::MemoryWriter errWriter; - errWriter << "Error: The index type must be either " - "\"fmd\" or \"quasi\", but " - << indexTypeStr - << ", was " - "provided."; + errWriter << "Error: FMD indexing is not supported in this version of salmon."; throw(std::logic_error(errWriter.str())); } - bool useQuasi = (indexTypeStr == "quasi"); - - uint32_t sasamp = vm["sasamp"].as(); - if (!isPowerOfTwo(sasamp) and !useQuasi) { + if (indexTypeStr != "quasi") { fmt::MemoryWriter errWriter; - errWriter << "Error: The suffix array sampling interval must be " - "a power of 2. The value provided, " - << sasamp << ", is not."; + errWriter << "Error: If explicitly provided, the index type must be \"quasi\"." + << "You passed [" << indexTypeStr << "], but this is not supported."; throw(std::logic_error(errWriter.str())); } + bool useQuasi = (indexTypeStr == "quasi"); string transcriptFile = vm["transcripts"].as(); bfs::path indexDirectory(vm["index"].as()); @@ -178,8 +164,7 @@ Creates a salmon index. fmt::MemoryWriter infostr; bfs::path outputPrefix; - std::unique_ptr> argVec( - new std::vector); + std::unique_ptr> argVec(new std::vector); fmt::MemoryWriter optWriter; std::unique_ptr sidx = nullptr; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9f6c3b3f3..f891ccc47 100755 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -348,5 +348,7 @@ install( include(InstallRequiredSystemLibraries) add_test( NAME unit_tests COMMAND ${CMAKE_COMMAND} -DTOPLEVEL_DIR=${CMAKE_INSTALL_PREFIX} -P ${GAT_SOURCE_DIR}/cmake/UnitTests.cmake ) -#add_test( NAME salmon_read_test_fmd COMMAND ${CMAKE_COMMAND} -DTOPLEVEL_DIR=${GAT_SOURCE_DIR} -P ${GAT_SOURCE_DIR}/cmake/TestSalmonFMD.cmake ) add_test( NAME salmon_read_test_quasi COMMAND ${CMAKE_COMMAND} -DTOPLEVEL_DIR=${GAT_SOURCE_DIR} -P ${GAT_SOURCE_DIR}/cmake/TestSalmonQuasi.cmake ) + +# Remove this test since we are removing support for the FMD index. +# add_test( NAME salmon_read_test_fmd COMMAND ${CMAKE_COMMAND} -DTOPLEVEL_DIR=${GAT_SOURCE_DIR} -P ${GAT_SOURCE_DIR}/cmake/TestSalmonFMD.cmake ) diff --git a/src/SalmonQuantify.cpp b/src/SalmonQuantify.cpp index 8dcb15bb6..fefabf3b4 100644 --- a/src/SalmonQuantify.cpp +++ b/src/SalmonQuantify.cpp @@ -2399,10 +2399,10 @@ int salmonQuantify(int argc, char* argv[]) { auto deprecatedOpt = pogen.getDeprecatedOptions(sopt); po::options_description all("salmon quant options"); - all.add(inputOpt).add(basicOpt).add(mapSpecOpt).add(advancedOpt)./*add(fmdOpt).*/add(testingOpt).add(hiddenOpt).add(deprecatedOpt); + all.add(inputOpt).add(basicOpt).add(mapSpecOpt).add(advancedOpt).add(testingOpt).add(hiddenOpt).add(deprecatedOpt); po::options_description visible("salmon quant options"); - visible.add(inputOpt).add(basicOpt).add(mapSpecOpt).add(advancedOpt)/*.add(fmdOpt)*/; + visible.add(inputOpt).add(basicOpt).add(mapSpecOpt).add(advancedOpt); po::variables_map vm; try { From 1969e5db52532dac60a24c41a0bafcc5bb857a7f Mon Sep 17 00:00:00 2001 From: k3yavi Date: Fri, 27 Jul 2018 03:29:28 -0400 Subject: [PATCH 32/37] resolving multiple bugs --- include/SingleCellProtocols.hpp | 2 +- src/Alevin.cpp | 50 +++++++++++++++++++++++--------- src/SalmonAlevin.cpp | 8 ++--- tests/alevin_test_data.tar.gz | Bin 8385831 -> 8384164 bytes tests/basic_alevin_test.sh | 6 ++-- 5 files changed, 44 insertions(+), 22 deletions(-) diff --git a/include/SingleCellProtocols.hpp b/include/SingleCellProtocols.hpp index eb1250a3b..45c7f99fd 100644 --- a/include/SingleCellProtocols.hpp +++ b/include/SingleCellProtocols.hpp @@ -55,7 +55,7 @@ namespace alevin{ //dummy class struct Custom : Rule{ - Custom() : Rule(0,0,BarcodeEnd::THREE,0){} + Custom() : Rule(0,0,BarcodeEnd::FIVE,0){} }; } } diff --git a/src/Alevin.cpp b/src/Alevin.cpp index 73cf5ca48..df9374775 100644 --- a/src/Alevin.cpp +++ b/src/Alevin.cpp @@ -382,7 +382,7 @@ void sampleTrueBarcodes(const std::vector& freqCounter, threshold = topxBarcodes; if(aopt.dumpfeatures){ - auto frequencyFileName = aopt.outputDirectory / "frequency.txt"; + auto frequencyFileName = aopt.outputDirectory / "raw_cb_frequency.txt"; std::ofstream freqFile; freqFile.open(frequencyFileName.string()); for (auto i:sortedIdx){ @@ -644,7 +644,7 @@ void processBarcodes(std::vector& barcodeFiles, numParsingThreads, miniBatchSize)); singleParserPtr->start(); - densityCalculator(singleParserPtr.get(), aopt, + densityCalculator(singleParserPtr.get(), aopt, freqCounter, usedNumBarcodes, totNumBarcodes); singleParserPtr->stop(); @@ -692,32 +692,54 @@ void processBarcodes(std::vector& barcodeFiles, uint32_t mmBcCounts{0}, mmBcReadCount{0}; std::unordered_set softMapWhiteBcSet; - for(auto& softMapIt: barcodeSoftMap){ + for(auto& softMapIt: barcodeSoftMap ){ + auto indexIt = freqCounter.find(softMapIt.first); + bool indexOk = indexIt != freqCounter.end(); + if ( not indexOk){ + aopt.jointLog->error("Error: index not find in freq Counter\n" + "Please Report the issue on github"); + exit(1); + } + + uint32_t numReads; + numReads = *indexIt; + std::vector>& trBcVec = softMapIt.second; - if (trBcVec.size() > 1){ + if (not aopt.noSoftMap and trBcVec.size() > 1){ mmBcCounts += 1; - uint32_t numReads; - - auto indexIt = freqCounter.find(softMapIt.first); - bool indexOk = indexIt != freqCounter.end(); - if ( not indexOk){ - aopt.jointLog->error("Error: index not find in freq Counter\n" - "Please Report the issue on github"); - exit(1); - } - numReads = *indexIt; + for(std::pair whtBc : trBcVec){ softMapWhiteBcSet.insert(whtBc.first); } mmBcReadCount += numReads; } + // NOTE: Have to update the ambiguity resolution if (aopt.noSoftMap){ while(trBcVec.size() != 1){ trBcVec.pop_back(); } trBcVec.front().second = 1.0; } + + std::string trBc = trBcVec.front().first; + freqCounter[trBc] += numReads; + freqCounter.erase(softMapIt.first); + } + + if(aopt.dumpfeatures){ + auto frequencyFileName = aopt.outputDirectory / "filtered_cb_frequency.txt"; + std::ofstream freqFile; + freqFile.open(frequencyFileName.string()); + for(auto it = freqCounter.begin(); it != freqCounter.end(); ++it) { + auto trBc = it.key(); + auto trIt = trueBarcodes.find(trBc); + if ( trIt != trueBarcodes.end() ) { + freqFile << trBc << "\t" + << it.value() << "\n"; + } + } + freqFile.close(); } if (not aopt.noSoftMap){ diff --git a/src/SalmonAlevin.cpp b/src/SalmonAlevin.cpp index b06e5857f..3153de06f 100644 --- a/src/SalmonAlevin.cpp +++ b/src/SalmonAlevin.cpp @@ -800,8 +800,8 @@ void processReadsQuasi( smallSeqs += 1; } else{ - alevin::types::AlevinUMIKmer umiIdx; - + combinelib::kmers::Kmer<32, 2> umiIdx; + umiIdx.k(umiLength); bool isUmiIdxOk = umiIdx.fromChars(umi); lh = false; @@ -1541,11 +1541,11 @@ void quantifyLibrary(ReadExperimentT& experiment, bool greedyChain, } if (smallSeqs > 100) { - jointLog->warn("Found {} reads with CB+UMI length smaller than expected." + jointLog->warn("Found {} reads with CB+UMI length smaller than expected.\n" "Please report on github if this number is too large", smallSeqs); } if (nSeqs > 100) { - jointLog->warn("Found {} reads with `N` in the UMI sequence and ignored the reads " + jointLog->warn("Found {} reads with `N` in the UMI sequence and ignored the reads.\n" "Please report on github if this number is too large", nSeqs); } //+++++++++++++++++++++++++++++++++++++++ diff --git a/tests/alevin_test_data.tar.gz b/tests/alevin_test_data.tar.gz index 8eacade8e70279b41df5d6496bdc5bfd99094943..18460f8df6edadee7f5d74c7c54cdc0ba93456d9 100644 GIT binary patch delta 8070074 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⪼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 z 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 z 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 z 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

6at8i!bl}DtmT?w?i3ezg20^@KStYzy6tz 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

oMHz!A}p?W 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

rKoIZz|WB1NpP+28%R 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%0DQ9X2#_%IDa^wIMRahi}W@Kak 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 !KzTB!S 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

#HVj-yM@Sq1xG!e0^ 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%0AT* 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Ðy(L_adjVHZu&hbOH|e=*WjE4A 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晜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

hK0(yRz?2Q5(e=m6S!5$plgXg3r!xDoC4{SA_ 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≦hiyc@90J7+_RDMh3^10(t&f4 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 z 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 z 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