stuck on task pack design
This commit is contained in:
@@ -62,7 +62,7 @@ namespace StgSharp.Mathematics
|
||||
* we allow each wrap to contain either 3 or 4 threads, providing flexibility while maintaining efficiency.
|
||||
*/
|
||||
|
||||
internal static class MatrixParallel
|
||||
internal static partial class MatrixParallel
|
||||
{
|
||||
|
||||
private static Thread[] _threads;
|
||||
@@ -214,48 +214,28 @@ namespace StgSharp.Mathematics
|
||||
|
||||
private static unsafe void ExecuteTaskPackage(MatrixParallelTaskPackage* p)
|
||||
{
|
||||
MatrixKernel* left = p->left, right = p->left, result = p->result;
|
||||
MatrixKernel* left = p->Left, right = p->Left, result = p->Result;
|
||||
ref MatrixParallelEnumeration leftParam = ref p->LeftEnum, rightParam = ref p->RightEnum, resultParam = ref p->ResultEnum;
|
||||
int count = p->count;
|
||||
ScalarDataPacket* scalar = p->scalerPacket;
|
||||
switch (p->ComputeMode)
|
||||
{
|
||||
case 0:
|
||||
delegate*<MatrixKernel*, MatrixKernel*, void> op_0 = (delegate*<MatrixKernel*, MatrixKernel*, void>)p->executionHandle;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
op_0(left, result);
|
||||
left += p->leftStride;
|
||||
result += p->resultStride;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
delegate*<MatrixKernel*, MatrixKernel*, ScalarDataPacket*, void> op_1 = (delegate*<MatrixKernel*, MatrixKernel*, ScalarDataPacket*, void>)p->executionHandle;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
op_1(left, result, scalar);
|
||||
left += p->leftStride;
|
||||
result += p->resultStride;
|
||||
}
|
||||
case 1: // Unary operation
|
||||
for (int i = 0; i < length; i++) { }
|
||||
break;
|
||||
case 2:
|
||||
delegate*<MatrixKernel*, MatrixKernel*, MatrixKernel*, void> op_2 = (delegate*<MatrixKernel*, MatrixKernel*, MatrixKernel*, void>)p->executionHandle;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
op_2(left, right, result);
|
||||
right += p->rightStride;
|
||||
left += p->leftStride;
|
||||
result += p->resultStride;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
delegate*<MatrixKernel*, MatrixKernel*, MatrixKernel*, ScalarDataPacket*, void> op_3 = (delegate*<MatrixKernel*, MatrixKernel*, MatrixKernel*, ScalarDataPacket*, void>)p->executionHandle;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
op_3(left, right, result, scalar);
|
||||
right += p->rightStride;
|
||||
left += p->leftStride;
|
||||
result += p->resultStride;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
break;
|
||||
case -1:
|
||||
break;
|
||||
case -2:
|
||||
break;
|
||||
case -3:
|
||||
break;
|
||||
case -4:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user