Visible to Intel only — GUID: GUID-B7F976B2-BCE7-415C-90C2-8CF8E789D4D6
Get Started
Before You Begin
Set Up a Project
Collecting Results
Investigating Results
Testing for Regressions
Use Cases
Suppressions Support
API Support
Troubleshooting
User Interface Reference
Problem Type Reference
Command Line Interface Support
MPI Applications Support
Appendix
Notices and Disclaimers
Context Menus: Project Navigator
Context Menus: Sources Window Panes
Context Menus: Summary Window Panes
Dialog Box: Corresponding inspxe-cl Command Options
Dialog Box: Create a Project
Dialog Box: Create Suppression
Dialog Box: Custom Analysis
Dialog Box: Delete Suppressions
Dialog Box: Export Result
Dialog Box: Merge States
Dialog Box: Options-Debugger
Dialog Box: Options-General
Dialog Box: Options-Result Location
Dialog Box: Options-State Management
Dialog Box: Problem Report
Dialog Box: Project Properties-Binary/Symbol Search
Dialog Box: Project Properties-Source Search
Dialog Box: Project Properties-Suppressions
Dialog Box: Project Properties-Target
Dialog Box: Refine Source File Set
Dialog Box: Select Stack Frame(s)
Dialog Box: View Stack
Hot Keys
Pane: Analysis Type-Custom
Pane: Analysis Type-Memory Errors
Pane: Analysis Type-Threading Errors
Pane: Application Output
Pane: Code and Stack
Pane: Code Locations
Pane: Collection Log
Pane: Collector Messages
Pane: Compare Results
Pane: Filters
Pane: Import Result
Pane: Launch Application
Pane: Problems
Pane: Project Navigator
Pane: Timeline
Toolbar: Command
Toolbar: Intel Inspector
Toolbar: Navigation
Window: Collection Log
Window: Compare Results
Window: Import Result
Window: Sources
Window: Summary After Analysis Is Complete
Window: Summary During Analysis
Asynchronous Buffer
Cross-thread Stack Access
Data Race
Deadlock
Host Pointer Used on Device
Incorrect memcpy Call
Invalid Deallocation
Invalid Kernel Argument
Possible Correction Strategies
Invalid Kernel Argument Size
Invalid Memory Access
Invalid Partial Memory Access
Lock Hierarchy Violation
Memory Growth
Memory Leak
Memory Not Deallocated
Mismatched Allocation/Deallocation
Mismatched Queue
Missing Allocation
Non-Host Pointer
Pointer from Different Device
Thread Exit Information
Thread Start Information
Unhandled Application Exception
Uninitialized Memory Access
Uninitialized Partial Memory Access
appdebug
app-working-dir
archive-name
baseline-result
collect
collect-with
command
convert-suppression-file
create-breakpoints
create-suppression-file
<span class='option'>csv-delimiter</span>
debug-this
executable-of-interest
export
filter
finalize
format
help
include-snippets
include-sources
import
knob
knob-list
merge-states
module-filter
module-filter-mode
no-auto-finalize
no-summary
option-file
quiet
report
report-all
report-output
result-dir
return-app-exitcode
search-dir
sort-asc
sort-desc
suppression-file
user-data-dir
verbose
version
Visible to Intel only — GUID: GUID-B7F976B2-BCE7-415C-90C2-8CF8E789D4D6
Invalid Kernel Argument
Occurs when a null or an invalid pointer is passed to a kernel via buffer or queue.
ID |
Code Location |
Description |
---|---|---|
1 |
Allocation site |
Represents a source location of a pointer with no registered allocation operations or a deleted pointer. |
cl::sycl::buffer<InputT, 1> inputBuf(inputPtr, size); queue.submit([&](cl::sycl::handler &cgh) { auto inputAcc = inputBuf.template get_access<cl::sycl::access::mode::read>(cgh); cgh.parallel_for<class my_task>(cl::sycl::range<1> { size }, [=](cl::sycl::id<1> idx) { outputPtr[0] += some_function(inputAcc[idx]); } }
A kernel argument is invalid if it contains:
- Stuff pointer - the memory was not allocated for this pointer. The pointer is not initialized.
DPC++ Example
int* inputPtr; // Memory not allocated
- Released pointer - the memory was released before passing the pointer to a kernel.
DPC++ Example
Int* inputPtr = new int[N]; for(int i=0; i<N; i++) inputPtr[I] = …; delete[] inputPtr; cl::sycl::buffer<InputT, 1> inputBuf(inputPtr, size);
- Null pointer
DPC++ Example
int* inputPtr = nullptr; cl::sycl::buffer<InputT, 1> inputBuf(inputPtr, size);
NOTE:A null pointer is considered invalid only if it is passed with CL_MEM_USE_HOST_PTR; and CL_MEM_COPY_HOST_PTR; flags. - Uninitialized buffer - the memory was allocated, but the data was not passed to a buffer.
DPC++ Example
int* inputPtr = new int[N]; cl::sycl::buffer<InputT, 1> inputBuf(inputPtr, size); // The array is not filled in with values
Possible Correction Strategies
Depending on the type of invalid kernel argument, use the following correction hints:
- For a stuff pointer, allocate memory.
- For a released pointer, make sure to use the release command after kernel execution.
- For a null pointer:
- If you are going to reuse this pointer on GPU, allocate memory for the pointer.
- If you are not going to reuse this pointer on GPU, remove the CL_MEM_USE_HOST_PTR; and CL_MEM_COPY_HOST_PTR; flags.
- For an uninitialized buffer, make sure to initialize values in the buffer.
Parent topic: Problem Type Reference