some scheduler changes and stuff
This commit is contained in:
@@ -505,6 +505,12 @@ void mergeElementaryIntervals(
|
|||||||
limitsB,
|
limitsB,
|
||||||
stride,
|
stride,
|
||||||
N);
|
N);
|
||||||
|
if (lastSegmentElements <= stride)
|
||||||
|
foreach (i = 0 ... lastSegmentElements)
|
||||||
|
{
|
||||||
|
dstKey[N-lastSegmentElements+i] = srcKey[N-lastSegmentElements+i];
|
||||||
|
dstVal[N-lastSegmentElements+i] = srcVal[N-lastSegmentElements+i];
|
||||||
|
}
|
||||||
sync;
|
sync;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -580,8 +586,6 @@ void mergeSort(
|
|||||||
#if 1
|
#if 1
|
||||||
for (uniform int stride = 2*programCount; stride < N; stride <<= 1)
|
for (uniform int stride = 2*programCount; stride < N; stride <<= 1)
|
||||||
{
|
{
|
||||||
const uniform int lastSegmentElements = N % (2 * stride);
|
|
||||||
|
|
||||||
// cpu: 30 gpu: 112 M/s
|
// cpu: 30 gpu: 112 M/s
|
||||||
{
|
{
|
||||||
#if 1
|
#if 1
|
||||||
@@ -602,15 +606,6 @@ void mergeSort(
|
|||||||
mergeElementaryIntervals(oKey, oVal, iKey, iVal, limitsA, limitsB, stride, N);
|
mergeElementaryIntervals(oKey, oVal, iKey, iVal, limitsA, limitsB, stride, N);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lastSegmentElements <= stride)
|
|
||||||
foreach (i = 0 ... lastSegmentElements)
|
|
||||||
{
|
|
||||||
oKey[N-lastSegmentElements+i] = iKey[N-lastSegmentElements+i];
|
|
||||||
oVal[N-lastSegmentElements+i] = iVal[N-lastSegmentElements+i];
|
|
||||||
}
|
|
||||||
memory_barrier();
|
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
uniform Key_t * uniform tmpKey = iKey;
|
uniform Key_t * uniform tmpKey = iKey;
|
||||||
iKey = oKey;
|
iKey = oKey;
|
||||||
|
|||||||
@@ -962,7 +962,7 @@ InitTaskSystem() {
|
|||||||
|
|
||||||
inline void
|
inline void
|
||||||
TaskGroup::Launch(int baseIndex, int count) {
|
TaskGroup::Launch(int baseIndex, int count) {
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for schedule(guided)
|
||||||
for(int i = 0; i < count; i++) {
|
for(int i = 0; i < count; i++) {
|
||||||
TaskInfo *ti = GetTaskInfo(baseIndex + i);
|
TaskInfo *ti = GetTaskInfo(baseIndex + i);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user