VLOADN(3clc)
πΈ VLOADN πΈ
okay bestie, come sit with me, we're doing vloadn from the OpenCL Manual, section 3clc, and honestly? it's giving vector vibes π
β¨ NAME β¨
vloadn β read vectors from a pointer to memory π«Ά
gentypen vloadn(size_t offset, const __global gentype *p);
gentypen vloadn(size_t offset, const __local gentype *p);
gentypen vloadn(size_t offset, const __constant gentype *p);
gentypen vloadn(size_t offset, const __private gentype *p);
π DESCRIPTION π
so basically it returns sizeof (gentypen) bytes of data, read straight from the address (p + (offset * n)). iconic, no notes β¨
and listen, the address you compute as (p + (offset * n)) has to be aligned, and the alignment depends on your gentype, so pay attention bestie:
- 8-bit aligned if
gentypeischaroruchar - 16-bit aligned if
gentypeisshortorushort - 32-bit aligned if
gentypeisint,uint, orfloat - 64-bit aligned if
gentypeislongorulong
and if the half extension is enabled, the address computed as (p + (offset * n)) must be 16-bit aligned πΈ
π NOTES π
the Vector Data Load and Store Functions let you read and write vector types from a pointer to memory. that's the whole gig, and they ate π
the generic type gentype is there to stand in for the built-in data types: char, uchar, short, ushort, int, uint, long, ulong, float, or double.
the generic type name gentypen means n-element vectors of gentype elements. that suffix n also shows up in the function names (like vloadn, vstoren, etc.), where n = 2, 3, 4, 8, or 16.
π¨ undefined behaviour alert, fr fr β the results of vector data load and store functions are undefined if the address being read from or written to is not correctly aligned. don't do it. just don't π
the pointer argument p can be a pointer to global(3clc), local(3clc), or private(3clc) memory for store functions. and for load functions, the pointer argument p can be a pointer to __global, __local, constant(3clc), or __private memory.
when it's extended by the cl_khr_fp16(3clc) extension, the generic type gentypen gets extended to include half, half2, half3, half4, half8, and half16. slay π
and one more thing, iykyk: vload3 and vload_half3 read the x, y, z components from address (p + (offset * 3)) into a 3-component vector. three components, three vibes, periodt π
β SPECIFICATION β
OpenCL Specification[1]
π SEE ALSO π
π AUTHORS π
The Khronos Group
π¦ COPYRIGHT π¦
Copyright Β© 2007-2011 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the "Materials"), to deal in the Materials without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Materials, and to permit persons to whom the Materials are furnished to do so, subject to the following condition: the copyright notice and this permission notice shall be included in all copies or substantial portions of the Materials.
π NOTES π (yes there's another one, the manual said so)
- OpenCL Specification β page 267, section 6.12.7 - Vector Data Load and Store Functions
okay that's the whole page, you're officially fluent in vloadn now, main character energy achieved πβ¨
this lil manual moment was brought to you by The Khronos Group, from the OpenCL Manual, dated 01/14/2021 β mwah, take care of her π«Ά
π¦ where this page comes from
- ubuntu jammy: opencl-1.2-man-doc 1.0~svn33624-5 Β· other
- ubuntu noble: opencl-1.2-man-doc 1.0~svn33624-5 Β· other
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms