diff --git a/Lesson_Materials/Advanced_Data_Flow/index.html b/Lesson_Materials/Advanced_Data_Flow/index.html index bc97e445..65fc6e08 100644 --- a/Lesson_Materials/Advanced_Data_Flow/index.html +++ b/Lesson_Materials/Advanced_Data_Flow/index.html @@ -48,8 +48,7 @@
- - +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
@@ -213,7 +212,7 @@
- ![SYCL](../common-revealjs/images/uninitialized_buffer.png "SYCL") + ![SYCL](../common-revealjs/images/uninitialized_buffer.svg "SYCL")
* Here we have an example of using these techniques: diff --git a/Lesson_Materials/Asynchronous_Execution/index.html b/Lesson_Materials/Asynchronous_Execution/index.html index 99cc2026..d8505c65 100644 --- a/Lesson_Materials/Asynchronous_Execution/index.html +++ b/Lesson_Materials/Asynchronous_Execution/index.html @@ -48,7 +48,7 @@
- +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
diff --git a/Lesson_Materials/Coalesced_Global_Memory/index.html b/Lesson_Materials/Coalesced_Global_Memory/index.html index ae261ab0..58ff069a 100644 --- a/Lesson_Materials/Coalesced_Global_Memory/index.html +++ b/Lesson_Materials/Coalesced_Global_Memory/index.html @@ -48,8 +48,7 @@
- - +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
diff --git a/Lesson_Materials/Data_Parallelism/index.html b/Lesson_Materials/Data_Parallelism/index.html index 2f2e571e..3b79e91f 100644 --- a/Lesson_Materials/Data_Parallelism/index.html +++ b/Lesson_Materials/Data_Parallelism/index.html @@ -48,7 +48,7 @@
- +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
diff --git a/Lesson_Materials/Data_and_Dependencies/index.html b/Lesson_Materials/Data_and_Dependencies/index.html index 9b99c571..3763d734 100644 --- a/Lesson_Materials/Data_and_Dependencies/index.html +++ b/Lesson_Materials/Data_and_Dependencies/index.html @@ -48,7 +48,7 @@
- +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
@@ -94,7 +94,7 @@
- ![SYCL](../common-revealjs/images/data_dependency.png "SYCL") + ![SYCL](../common-revealjs/images/data_dependency.svg "SYCL")
* Kernel A first writes to the data @@ -111,7 +111,7 @@
- ![SYCL](../common-revealjs/images/data_movement.png "SYCL") + ![SYCL](../common-revealjs/images/data_movement.svg "SYCL")
* Here both kernel functions are enqueued to the same device, in this case a GPU @@ -128,7 +128,7 @@
- ![SYCL](../common-revealjs/images/data_flow.png "SYCL") + ![SYCL](../common-revealjs/images/data_flow.svg "SYCL")
* Combining kernel function dependencies and the data movement dependencies we have a final data flow graph @@ -406,7 +406,7 @@
- ![SYCL](../common-revealjs/images/concurrent_data_flow.png "SYCL") + ![SYCL](../common-revealjs/images/concurrent_data_flow.svg "SYCL")
* If two kernels are accessing different buffers then there is no dependency between them @@ -562,7 +562,7 @@ Code_Exercises/Data_and_Dependencies/source
- ![SYCL](../common-revealjs/images/diamond_data_flow.png "SYCL") + ![SYCL](../common-revealjs/images/diamond_data_flow.svg "SYCL")
Put together what you've seen here to create the above diamond data flow graph in either buffer/accessor or USM data management models diff --git a/Lesson_Materials/Device_Discovery/index.html b/Lesson_Materials/Device_Discovery/index.html index 0995e690..98897533 100644 --- a/Lesson_Materials/Device_Discovery/index.html +++ b/Lesson_Materials/Device_Discovery/index.html @@ -48,7 +48,7 @@
- +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
diff --git a/Lesson_Materials/Enqueueing_a_Kernel/index.html b/Lesson_Materials/Enqueueing_a_Kernel/index.html index 0358d70a..95bf14f9 100644 --- a/Lesson_Materials/Enqueueing_a_Kernel/index.html +++ b/Lesson_Materials/Enqueueing_a_Kernel/index.html @@ -48,7 +48,7 @@
- +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
@@ -99,7 +99,7 @@
- ![SYCL](../common-revealjs/images/command_group.png "SYCL") + ![SYCL](../common-revealjs/images/command_group.svg "SYCL")
@@ -119,7 +119,7 @@
- ![SYCL](../common-revealjs/images/composing_a_command_group.png "SYCL") + ![SYCL](../common-revealjs/images/composing_a_command_group.svg "SYCL")
* Command groups are composed by calling the `submit` member function on a `queue`. @@ -202,7 +202,7 @@ #### Scheduling
- ![SYCL](../common-revealjs/images/scheduling.png "SYCL") + ![SYCL](../common-revealjs/images/scheduling.svg "SYCL")
* Once `submit` has created a command group it will submit it to the scheduler. @@ -217,7 +217,7 @@
- ![SYCL](../common-revealjs/images/common_scheduler.png "SYCL") + ![SYCL](../common-revealjs/images/common_scheduler.svg "SYCL")
diff --git a/Lesson_Materials/Fast_Track/index.html b/Lesson_Materials/Fast_Track/index.html index 13c6e8fb..dedcb815 100644 --- a/Lesson_Materials/Fast_Track/index.html +++ b/Lesson_Materials/Fast_Track/index.html @@ -48,8 +48,7 @@
- - +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
@@ -207,7 +206,7 @@
- ![SYCL](../common-revealjs/images/out_of_order_execution.png "SYCL") + ![SYCL](../common-revealjs/images/out_of_order_execution.svg "SYCL")
* Commands are submitted to devices in SYCL by means of a Queue @@ -223,7 +222,7 @@
- ![SYCL](../common-revealjs/images/in_order_execution.png "SYCL") + ![SYCL](../common-revealjs/images/in_order_execution.svg "SYCL")
* SYCL `queue`s can be configured to be in-order. @@ -604,7 +603,7 @@
- ![SYCL](../common-revealjs/images/image_convolution_data_flow.png "SYCL") + ![SYCL](../common-revealjs/images/image_convolution_data_flow.svg "SYCL")
* The kernel must read from the input image data and writes to the output image data. diff --git a/Lesson_Materials/Handling_Errors/index.html b/Lesson_Materials/Handling_Errors/index.html index cd8aa91d..ecdff340 100644 --- a/Lesson_Materials/Handling_Errors/index.html +++ b/Lesson_Materials/Handling_Errors/index.html @@ -48,7 +48,7 @@
- +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
diff --git a/Lesson_Materials/Image_Convolution/index.html b/Lesson_Materials/Image_Convolution/index.html index d58f4cf9..8a48ce3a 100644 --- a/Lesson_Materials/Image_Convolution/index.html +++ b/Lesson_Materials/Image_Convolution/index.html @@ -48,8 +48,7 @@
- - +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
@@ -135,7 +134,7 @@
- ![SYCL](../common-revealjs/images/image_convolution_data_flow.png "SYCL") + ![SYCL](../common-revealjs/images/image_convolution_data_flow.svg "SYCL")
* We have a single kernel function. diff --git a/Lesson_Materials/In_Order_Queue/index.html b/Lesson_Materials/In_Order_Queue/index.html index 40962184..3dbe4d77 100644 --- a/Lesson_Materials/In_Order_Queue/index.html +++ b/Lesson_Materials/In_Order_Queue/index.html @@ -48,8 +48,7 @@
- - +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
@@ -70,7 +69,7 @@
- ![SYCL](../common-revealjs/images/out_of_order_execution.png "SYCL") + ![SYCL](../common-revealjs/images/out_of_order_execution.svg "SYCL")
* SYCL `queue`s are by default out-of-order. @@ -85,7 +84,7 @@
- ![SYCL](../common-revealjs/images/in_order_execution.png "SYCL") + ![SYCL](../common-revealjs/images/in_order_execution.svg "SYCL")
* SYCL `queue`s can be configured to be in-order. @@ -224,7 +223,7 @@ Code_Exercises/In_Order_Queue/source_vector_add.cpp
- ![SYCL](../common-revealjs/images/in_order_diamond_data_flow.png "SYCL") + ![SYCL](../common-revealjs/images/in_order_diamond_data_flow.svg "SYCL")
Take the diamond data flow graph we implemented in the last exercise and convert it to use an in-order `queue`. diff --git a/Lesson_Materials/Introduction_to_USM/index.html b/Lesson_Materials/Introduction_to_USM/index.html index 6941e339..f5526a31 100644 --- a/Lesson_Materials/Introduction_to_USM/index.html +++ b/Lesson_Materials/Introduction_to_USM/index.html @@ -48,7 +48,7 @@
- +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
@@ -86,7 +86,7 @@
- ![SYCL](../common-revealjs/images/unified_virtual_address_space.png "SYCL") + ![SYCL](../common-revealjs/images/unified_virtual_address_space.svg "SYCL")
* USM memory allocations return pointers which are consistent between the host application and kernel functions on a device @@ -102,7 +102,7 @@
- ![SYCL](../common-revealjs/images/pointer_based_structures.png "SYCL") + ![SYCL](../common-revealjs/images/pointer_based_structures.svg "SYCL")
* Data is moved between the host and device(s) in a span of memory in bytes rather than a buffer of a specific type @@ -118,7 +118,7 @@
- ![SYCL](../common-revealjs/images/explicit_data_movement.png "SYCL") + ![SYCL](../common-revealjs/images/explicit_data_movement.svg "SYCL")
* Memory is allocated and data is moved using explicit routines @@ -134,7 +134,7 @@
- ![SYCL](../common-revealjs/images/shared_memory.png "SYCL") + ![SYCL](../common-revealjs/images/shared_memory.svg "SYCL")
* Some platforms will support variants of USM where memory allocations share the same memory region between the host and device(s) @@ -162,10 +162,18 @@ #### USM variants
- USM has four variants which a platform can support with varying levels of support + USM has four variants which a platform can support with varying levels of support. + Only Explicit USM is guraranteed to be available, with the others optional.
- ![SYCL](../common-revealjs/images/usm_variants.png "SYCL") +| | Explicit USM | Restricted USM | Concurrent USM | System USM | +|------------------------|--------------|----------------|----------------|------------| +| Consistent pointers | ✓ | ✓ | ✓ | ✓ | +| Pointers in structures | ✓ | ✓ | ✓ | ✓ | +| Explicit data movement | ✓ | ✓ | ✓ | ✓ | +| Shared allocations | ✗ | ✓ | ✓ | ✓ | +| Concurrent access | ✗ | ✗ | ✓ | ✓ | +| System allocations | ✗ | ✗ | ✗ | ✓ |
diff --git a/Lesson_Materials/Local_Memory_Tiling/index.html b/Lesson_Materials/Local_Memory_Tiling/index.html index 2b166857..c58aad52 100644 --- a/Lesson_Materials/Local_Memory_Tiling/index.html +++ b/Lesson_Materials/Local_Memory_Tiling/index.html @@ -48,8 +48,7 @@
- - +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
diff --git a/Lesson_Materials/Managing_Data/index.html b/Lesson_Materials/Managing_Data/index.html index 83eb6bd1..90a4dd59 100644 --- a/Lesson_Materials/Managing_Data/index.html +++ b/Lesson_Materials/Managing_Data/index.html @@ -48,7 +48,7 @@
- +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
@@ -103,12 +103,17 @@
- #### USM Allocation Types +#### USM Allocation Types
- * There are different ways USM memory can be allocated: host, device and shared. - ![SYCL](../common-revealjs/images/Figure6-1bookUSMtypes.png "SYCL") - (from book) +* There are different ways USM memory can be allocated: host, device and shared. +
+
+| Type | Description | Access host | Access device | Nominal location | +|--------|---------------------------------|----------------|----------------|----------------------| +| device | device global allocations | ✗ | ✓ | device | +| host | host allocations | ✓ | ✓ | host | +| shared | Allocations shared between both | ✓ | ✓ | migrates as required |
@@ -297,16 +302,6 @@ buffer goes out of scope.
- -
-
- #### Accessor class -
-
- ![Accessor Types](../common-revealjs/images/accessor-types.png "Accessor Types") -
-
-
#### Accessor class @@ -333,6 +328,8 @@
* There are many ways to construct an `accessor`. + * Accessors are complicated templates with many template arguments, + representing the data type, dimensionality, access mode etc. * The `accessor` class supports CTAD so it's not necessary to specify all of the template arguments. * The most common way to construct an `accessor` is from @@ -469,8 +466,8 @@ diff --git a/Lesson_Materials/Matrix_Transpose/index.html b/Lesson_Materials/Matrix_Transpose/index.html index 8eb235a9..c26c9f40 100644 --- a/Lesson_Materials/Matrix_Transpose/index.html +++ b/Lesson_Materials/Matrix_Transpose/index.html @@ -48,8 +48,7 @@
- - +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
diff --git a/Lesson_Materials/More_SYCL_Features/index.html b/Lesson_Materials/More_SYCL_Features/index.html index 93915a31..42ba6e38 100644 --- a/Lesson_Materials/More_SYCL_Features/index.html +++ b/Lesson_Materials/More_SYCL_Features/index.html @@ -54,8 +54,7 @@
- - +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
diff --git a/Lesson_Materials/Multiple_Devices/index.html b/Lesson_Materials/Multiple_Devices/index.html index f8ac0633..278d5631 100644 --- a/Lesson_Materials/Multiple_Devices/index.html +++ b/Lesson_Materials/Multiple_Devices/index.html @@ -48,8 +48,7 @@
- - +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
@@ -258,7 +257,7 @@
- ![SYCL](../common-revealjs/images/moving_data_between_devices.png "SYCL") + ![SYCL](../common-revealjs/images/moving_data_between_devices.svg "SYCL")
* If a `buffer` is accessed by kernel functions in two different devices commands are enqueued to automatically move the data to the devices it is being accessed on. diff --git a/Lesson_Materials/Using_USM/index.html b/Lesson_Materials/Using_USM/index.html index 5bbe5b2b..f255a10a 100644 --- a/Lesson_Materials/Using_USM/index.html +++ b/Lesson_Materials/Using_USM/index.html @@ -48,7 +48,7 @@
- +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
@@ -81,8 +81,11 @@ #### USM Allocation Types
- ![SYCL](../common-revealjs/images/Figure6-1bookUSMtypes.png "SYCL") - (from book) +| Type | Description | Access host | Access device | Nominal location | +|--------|---------------------------------|----------------|----------------|----------------------| +| device | device global allocations | ✗ | ✓ | device | +| host | host allocations | ✓ | ✓ | host | +| shared | Allocations shared between both | ✓ | ✓ | migrates as required |
diff --git a/Lesson_Materials/Vectors/index.html b/Lesson_Materials/Vectors/index.html index 290f0286..d64caecb 100644 --- a/Lesson_Materials/Vectors/index.html +++ b/Lesson_Materials/Vectors/index.html @@ -48,8 +48,7 @@
- - +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
@@ -71,7 +70,7 @@ #### Vector instructions
- ![SYCL](../common-revealjs/images/scalar_and_vector_instructions.png "SYCL") + ![SYCL](../common-revealjs/images/scalar_and_vector_instructions.svg "SYCL")
* Data parallel devices such as GPUs, SIMD CPUs and other accelerators are vector processors. @@ -99,7 +98,7 @@
- ![SYCL](../common-revealjs/images/horizontal_vectorization.png "SYCL") + ![SYCL](../common-revealjs/images/horizontal_vectorization.svg "SYCL")
* Horizontal (or auto-) vectorization is done automatically by the compiler. @@ -114,7 +113,7 @@
- ![SYCL](../common-revealjs/images/vertical_vectorization.png "SYCL") + ![SYCL](../common-revealjs/images/vertical_vectorization.svg "SYCL")
* Vertical (or explicit) vectorization is done by using vector types explicitly. diff --git a/Lesson_Materials/What_is_SYCL/index.html b/Lesson_Materials/What_is_SYCL/index.html index 531ce5c5..2ff4e8a5 100644 --- a/Lesson_Materials/What_is_SYCL/index.html +++ b/Lesson_Materials/What_is_SYCL/index.html @@ -48,7 +48,7 @@
- +
SYCL and the SYCL logo are trademarks of the Khronos Group Inc.
@@ -151,16 +151,14 @@ SYCL is a single source, high-level ***standard C++*** programming model, that can target a range of heterogeneous platforms
-
- ![SYCL](../common-revealjs/images/code_comparison.png "SYCL-Comparison") -
-
+
* SYCL allows you to write standard C++ - * SYCL 2020 is based on C++17 - * Unlike the other implementations shown on the left there are: - * No language extensions - * No pragmas - * No attributes + * SYCL 2020 is based on C++17 + * It has no: + * pragmas + * language extensions + * attributes (though some implementations may have optional + attributes for extension features)