MCPcopy Create free account
hub / github.com/NVIDIA/cuda-samples / merge

Function merge

cpp/0_Introduction/mergeSort/mergeSort_host.cpp:180–206  ·  view source on GitHub ↗

/////////////////////////////////////////////////////////////////////////// Merge step 3: merge elementary intervals (each interval is <= SAMPLE_STRIDE) ///////////////////////////////////////////////////////////////////////////

Source from the content-addressed store, hash-verified

178// Merge step 3: merge elementary intervals (each interval is <= SAMPLE_STRIDE)
179////////////////////////////////////////////////////////////////////////////////
180static void merge(uint *dstKey,
181 uint *dstVal,
182 uint *srcAKey,
183 uint *srcAVal,
184 uint *srcBKey,
185 uint *srcBVal,
186 uint lenA,
187 uint lenB,
188 uint sortDir)
189{
190 checkOrder(srcAKey, lenA, sortDir);
191 checkOrder(srcBKey, lenB, sortDir);
192
193 for (uint i = 0; i < lenA; i++) {
194 uint dstPos = binarySearchExclusive(srcAKey[i], srcBKey, lenB, sortDir) + i;
195 assert(dstPos < lenA + lenB);
196 dstKey[dstPos] = srcAKey[i];
197 dstVal[dstPos] = srcAVal[i];
198 }
199
200 for (uint i = 0; i < lenB; i++) {
201 uint dstPos = binarySearchInclusive(srcBKey[i], srcAKey, lenA, sortDir) + i;
202 assert(dstPos < lenA + lenB);
203 dstKey[dstPos] = srcBKey[i];
204 dstVal[dstPos] = srcBVal[i];
205 }
206}
207
208static void mergeElementaryIntervals(uint *dstKey,
209 uint *dstVal,

Callers 1

mergeElementaryIntervalsFunction · 0.85

Calls 3

checkOrderFunction · 0.85
binarySearchExclusiveFunction · 0.85
binarySearchInclusiveFunction · 0.85

Tested by

no test coverage detected