#pragma OPENCL EXTENSION cl_khr_fp64: enable
#define ValAt(B,X,Y) (B)[(X) + (Y)*W]
__kernel void CalcTick(__global double* B, __global double* BRes, int W)
{
int X = get_global_id(0);
int Y = get_global_id(1);
int c = 1;
double sum = ValAt(B, X,Y);
if (X != 0) { c++; sum += ValAt(B, X-1,Y-0); }
if (Y != 0) { c++; sum += ValAt(B, X-0,Y-1); }
if (X != W-1) { c++; sum += ValAt(B, X+1,Y+0); }
if (Y != W-1) { c++; sum += ValAt(B, X+0,Y+1); }
ValAt(BRes, X,Y) = sum / c;
}
OpenCLABCBase.ConstQueue`1[System.Double[,]]
========================================
OpenCLABCBase.BufferCommandQueue
Logging state change of cl_event[482579504]
1 | 00:00:00.0005743 | Retained when: Created for BackgroundWork, executing blocking enq of OpenCLABCBase_implementation______.BufferCommandWriteArray2AutoSize`1[System.Double], ev_l2 = [], after waiting on:
1 | 00:00:00.0508939 | State changed when: Status of user ev set[it's True] to COMPLETE
------------------------------
========================================
OpenCLABCBase.ConstQueue`1[System.Int32]
Logging state change of cl_event[482579504]
1 | 00:00:00.0005743 | Retained when: Created for BackgroundWork, executing blocking enq of OpenCLABCBase_implementation______.BufferCommandWriteArray2AutoSize`1[System.Double], ev_l2 = [], after waiting on:
1 | 00:00:00.0508939 | State changed when: Status of user ev set[it's True] to COMPLETE
0 | 00:00:01.0739697 | Released when: last ev of CLTask, together with evs: cl_event[482579504]
------------------------------
========================================
OpenCLABCBase.ConstQueue`1[System.Int32]
Logging state change of cl_event[482579504]
1 | 00:00:00.0005743 | Retained when: Created for BackgroundWork, executing blocking enq of OpenCLABCBase_implementation______.BufferCommandWriteArray2AutoSize`1[System.Double], ev_l2 = [], after waiting on:
1 | 00:00:00.0508939 | State changed when: Status of user ev set[it's True] to COMPLETE
0 | 00:00:01.0739697 | Released when: last ev of CLTask, together with evs: cl_event[482579504]
------------------------------
========================================
OpenCLABCBase.ConstQueue`1[System.Int32]
Logging state change of cl_event[482579504]
1 | 00:00:00.0005743 | Retained when: Created for BackgroundWork, executing blocking enq of OpenCLABCBase_implementation______.BufferCommandWriteArray2AutoSize`1[System.Double], ev_l2 = [], after waiting on:
1 | 00:00:00.0508939 | State changed when: Status of user ev set[it's True] to COMPLETE
0 | 00:00:01.0739697 | Released when: last ev of CLTask, together with evs: cl_event[482579504]
------------------------------
Logging state change of cl_event[482591072]
1 | 00:00:03.2240561 | Retained when: Enq by OpenCLABCBase_implementation______.KernelCommandExec2, waiting on []
2 | 00:00:03.2251483 | Retained when: Tracking state change
2 | 00:00:03.2291303 | State changed when: Set to COMPLETE
1 | 00:00:03.2293602 | Released when: Finished tracking state change
------------------------------
========================================
OpenCLABCBase.ConstQueue`1[System.Int32]
Logging state change of cl_event[482579504]
1 | 00:00:00.0005743 | Retained when: Created for BackgroundWork, executing blocking enq of OpenCLABCBase_implementation______.BufferCommandWriteArray2AutoSize`1[System.Double], ev_l2 = [], after waiting on:
1 | 00:00:00.0508939 | State changed when: Status of user ev set[it's True] to COMPLETE
0 | 00:00:01.0739697 | Released when: last ev of CLTask, together with evs: cl_event[482579504]
------------------------------
Logging state change of cl_event[482591072]
1 | 00:00:03.2240561 | Retained when: Enq by OpenCLABCBase_implementation______.KernelCommandExec2, waiting on []
2 | 00:00:03.2251483 | Retained when: Tracking state change
2 | 00:00:03.2291303 | State changed when: Set to COMPLETE
1 | 00:00:03.2293602 | Released when: Finished tracking state change
------------------------------
========================================
OpenCLABCBase.KernelCommandQueue
Logging state change of cl_event[482579504]
1 | 00:00:00.0005743 | Retained when: Created for BackgroundWork, executing blocking enq of OpenCLABCBase_implementation______.BufferCommandWriteArray2AutoSize`1[System.Double], ev_l2 = [], after waiting on:
1 | 00:00:00.0508939 | State changed when: Status of user ev set[it's True] to COMPLETE
0 | 00:00:01.0739697 | Released when: last ev of CLTask, together with evs: cl_event[482579504]
------------------------------
Logging state change of cl_event[482591072]
1 | 00:00:03.2240561 | Retained when: Enq by OpenCLABCBase_implementation______.KernelCommandExec2, waiting on []
2 | 00:00:03.2251483 | Retained when: Tracking state change
2 | 00:00:03.2291303 | State changed when: Set to COMPLETE
1 | 00:00:03.2293602 | Released when: Finished tracking state change
------------------------------
Logging state change of cl_event[482591344]
1 | 00:00:05.3136505 | Retained when: Created for abortability of EventList.Combine of: cl_event[482591072]
1 | 00:00:05.3140855 | State changed when: Status of user ev set[it's True] to COMPLETE
------------------------------
Logging state change of cl_event[482591712]
1 | 00:00:05.3167510 | Retained when: Enq by OpenCLABCBase_implementation______.KernelCommandExec2, waiting on [cl_event[482591072] cl_event[482591344]]
2 | 00:00:05.3167625 | Retained when: Tracking state change
2 | 00:00:05.3175886 | State changed when: Set to COMPLETE
1 | 00:00:05.3175941 | Released when: Finished tracking state change
------------------------------
========================================
Необработанное исключение: System.AccessViolationException: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.
в OpenCL.cl.z_EnqueueMarkerWithWaitList_ovr_0(cl_command_queue command_queue, UInt32 num_events_in_wait_list, cl_event& event_wait_list, cl_event& event)
в OpenCL.cl.EnqueueMarkerWithWaitList(cl_command_queue command_queue, UInt32 num_events_in_wait_list, cl_event[] event_wait_list, cl_event& event) в C:\Users\Миша\Downloads\Симуляция тепла\OpenCL.pas:строка 5319
в OpenCLABCBase.EventList.ToMarker(cl_context c, cl_device_id dvc, cl_command_queue& cq, Boolean expect_smart_status_err) в C:\Users\Миша\Downloads\Симуляция тепла\OpenCLABCBase.pas:строка 2072
в OpenCLABCBase.EventList.AttachCallback(Action work, CLTaskBase tsk, cl_context c, cl_device_id dvc, cl_command_queue& cq, String reason, Boolean save_err) в C:\Users\Миша\Downloads\Симуляция тепла\OpenCLABCBase.pas:строка 2137
в OpenCLABCBase.CommandQueue`1.Invoke(CLTaskBase tsk, Context c, cl_device_id main_dvc, Boolean need_ptr_qr, cl_command_queue& cq, EventList prev_ev) в C:\Users\Миша\Downloads\Симуляция тепла\OpenCLABCBase.pas:строка 2931
в OpenCLABCBase.CommandQueue`1.InvokeBase(CLTaskBase tsk, Context c, cl_device_id main_dvc, Boolean need_ptr_qr, cl_command_queue& cq, EventList prev_ev) в C:\Users\Миша\Downloads\Симуляция тепла\OpenCLABCBase.pas:строка 2935
в OpenCLABCBase_implementation______.CLTaskResLess..ctor(CommandQueueBase q, Context c) в C:\Users\Миша\Downloads\Симуляция тепла\OpenCLABCBase.pas:строка 4609
в OpenCLABCBase.Context.BeginInvoke(CommandQueueBase q) в C:\Users\Миша\Downloads\Симуляция тепла\OpenCLABCBase.pas:строка 4715
в OpenCLABCBase.Context.SyncInvoke(CommandQueueBase q) в C:\Users\Миша\Downloads\Симуляция тепла\OpenCLABCBase.pas:строка 4719
в 2DTest.Program.$Main() в C:\Users\Миша\Downloads\Симуляция тепла\2DTest.pas:строка 27
в 2DTest.Program.Main()