How to use OpenVX extension for NPU/GPU to accelerate machine vision applications

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

How to use OpenVX extension for NPU/GPU to accelerate machine vision applications

How to use OpenVX extension for NPU/GPU to accelerate machine vision applications

This guide is about how to use EVIS to create user nodes and kernels in OpenVX to implement image processing on NPU(i.MX8MP)/GPU(i.MX8QM). Take gaussian filter as an example. It is tested on i.MX8QM and i.MX8MP.

User Node Creation from User Kernel

1. Define a user node

Register a user kernel by its ID or name

For example,

#define VX_KERNEL_NAME_GAUSSIAN "com.nxp.extension.gaussian"
#define VX_KERNEL_ENUM_GAUSSIAN 100

Get the kernel reference by the ID or name

For example,

vx_kernel kernel = vxGetKernelByName(context, VX_KERNEL_NAME_GAUSSIAN);

vx_kernel kernel = vxGetKernelByEnum(context, VX_KERNEL_ENUM_GAUSSIAN );

Create a user node

vx_node node = vxCreateGenericNode(graph, kernel);

Set input/output node parameters

For example,

vx_status status = vxSetParameterByIndex(node, index++, (vx_reference)in_image);
status |= vxSetParameterByIndex(node, index++, (vx_reference)out_image);

2. Create InputValidator/OutputValidator functions for the node

The validators are only used for graph verification.

For example,

static vx_status VX_CALLBACK vxGaussianInputValidator(vx_node node, vx_uint32 index)

static vx_status VX_CALLBACK vxGaussianOutputValidator(vx_node node, vx_uint32 index, vx_meta_format metaObj)

ToDo:

a. InputValidator:

  • Get the reference to the parameter object  

vx_parameter paramObj = NULL;
vx_image imgObj = NULL;

paramObj=vxGetParameterByIndex(node, index);

vxQueryParameter(paramObj, VX_PARAMETER_REF, &imgObj, sizeof(vx_image));

  • Check meta-data restriction

vxQueryImage(imgObj, VX_IMAGE_FORMAT, &imgFmt, sizeof(imgFmt));

  • Check consistency with other parameters

if (VX_DF_IMAGE_U8==imgFmt) status = VX_SUCCESS;
else status = VX_ERROR_INVALID_VALUE;

b. OutputValidator

  • Set the meta_format object with expected meta-data for the output

status |= vxSetMetaFormatAttribute(metaObj, VX_IMAGE_FORMAT, &imgFmt, sizeof(imgFmt));
status |= vxSetMetaFormatAttribute(metaObj, VX_IMAGE_WIDTH, &width, sizeof(width));
status |= vxSetMetaFormatAttribute(metaObj, VX_IMAGE_HEIGHT, &height, sizeof(height));

3. Create Initializer function for the node.

The initializer is used to specify workdim, global work size and local work size for the user kernel. These parameters are similiar to that in OpenCL.

For example,

                                                                                   /* workdim, globel offset, globel scale, local size, globel size */
vx_kernel_execution_parameters_t shaderParam = {2,               {0, 0, 0},        {0, 0, 0},        {0, 0, 0},   {0, 0, 0}};

vx_status VX_CALLBACK vxGaussianInitializer(vx_node nodObj, const vx_reference *paramObj, vx_uint32 paraNum)

Set attribute to the node

vxSetNodeAttribute(nodObj, VX_NODE_ATTRIBUTE_KERNEL_EXECUTION_PARAMETERS, &shaderParam, sizeof(vx_kernel_execution_parameters_t));

Note: The links below are guides about OpenCL on GPU, which are helpful to understand OpenVX implemented on GPU/NPU.

4. Create Deinitializer function for the node (Optional)

It is used to de-allocate memory allocated at initializer.

User Kernel on NPU/GPU Creation

1. Create description of a user kernel

For example,

vx_kernel_description_t vxGaussianKernelVXCInfo =
{
VX_KERNEL_ENUM_GAUSSIAN,
VX_KERNEL_NAME_GAUSSIAN,
nullptr,
vxGaussianKernelParam,
(sizeof(vxGaussianKernelParam)/sizeof(vxGaussianKernelParam[0])),
vxGaussianValidator,
nullptr,
nullptr,
vxGaussianInitializer,
nullptr
};

2. Register the new kernel

For example,

static vx_kernel_description_t* kernels[] =
{
&vxGaussianKernelVXCInfo,
};

3. Write kernel source implemented on NPU/GPU

For example,

char vxcKernelSource[] =
{
"#include \ \n\
\n\
\n\
__kernel void gaussian\n\
( \n\
__read_only image2d_t in_image, \n\
__write_only image2d_t out_image \n\
) \n\
{ \n\
int2 coord = (int2)(get_global_id(0), get_global_id(1)); \n\
int2 coord_out = coord; \n\
vxc_uchar16 lineA, lineB, lineC, out;\n\
int2 coord_in1 = coord + (int2)(-1, -1);\n\
VXC_OP4(img_load, lineA, in_image, coord_in1, 0, VXC_MODIFIER(0, 15, 0, VXC_RM_TowardZero, 0));\n\
int2 coord_in2 = coord + (int2)(-1, 0);\n\
VXC_OP4(img_load, lineB, in_image, coord_in2, 0, VXC_MODIFIER(0, 15, 0, VXC_RM_TowardZero, 0));\n\
int2 coord_in3 = coord + (int2)(-1, 1);\n\
VXC_OP4(img_load, lineC, in_image, coord_in3, 0, VXC_MODIFIER(0, 15, 0, VXC_RM_TowardZero, 0));\n\
int info = VXC_MODIFIER_FILTER(0, 13, 0, VXC_FM_Guassian, 0);\n\
VXC_OP4(filter, out, lineA, lineB, lineC, info); ;\n\
VXC_OP4_NoDest(img_store, out_image, coord_out, out, VXC_MODIFIER(0, 13, 0, VXC_RM_TowardZero, 0)); \n\
}\n\
"
};

Note: the source is written by EVIS instructions with less latency. But the EVIS instructions are limited. These fucntions defination can be found in "cl_viv_vx_ext.h" located at "/usr/include/CL/cl_viv_vx_ext.h".

Read back the processed data by GPU/NPU to check if the operations are correct.

For example,

status = vxCopyImagePatch(vx_out_image, &rect, 0, &addressing, data2, VX_READ_ONLY, VX_MEMORY_TYPE_HOST);

4. Build the NPU/GPU source code runtime

For example,

programObj = vxCreateProgramWithSource(ContextVX, 1, programSrc, &programLen);
vxBuildProgram(programObj, "-cl-viv-vx-extension");

5. Add kernel to the program

For example,

...

kernelObj = vxAddKernelInProgram(programObj,
kernels[i]->name,
kernels[i]->enumeration,
kernels[i]->numParams,
kernels[i]->validate,
kernels[i]->initialize,
kernels[i]->deinitialize
);

...

for(vx_uint32 j=0; j < kernels[i]->numParams; j++)
{
status = vxAddParameterToKernel(kernelObj,
j,
kernels[i]->parameters[j].direction,
kernels[i]->parameters[j].data_type,
kernels[i]->parameters[j].state
);

6. Finalize the kernel creation

For example,

status = vxFinalizeKernel(kernelObj);

Exercise

The example is attached. You can build and test it on i.MX8QM or i.MX8MP.

Results on i.MX8QM:

pastedImage_1.png

References:

Khronosdotorg/resources.md at master · KhronosGroup/Khronosdotorg · GitHub 

Further Reading:

OpenVX Vision Image Extension API Introduction - Basic API

OpenVX Vision Image Extension API Introduction - DP Dot Products

添付
%3CLINGO-SUB%20id%3D%22lingo-sub-1113429%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ENPU%2FGPU%E7%94%A8%E3%81%AEOpenVX%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BD%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%83%9E%E3%82%B7%E3%83%B3%E3%83%BB%E3%83%93%E3%82%B8%E3%83%A7%E3%83%B3%E3%83%BB%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E9%AB%98%E9%80%9F%E5%8C%96%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1113429%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E3%81%93%E3%81%AE%E3%82%AC%E3%82%A4%E3%83%89%E3%81%A7%E3%81%AF%E3%80%81EVIS%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%3CA%20href%3D%22https%3A%2F%2Fwww.khronos.org%2Fopenvx%2F%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3EOpenVX%3C%2FA%3E%E3%81%A7%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%BB%E3%83%8E%E3%83%BC%E3%83%89%E3%81%A8%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%80%81NPU%EF%BC%88i.MX8MP%EF%BC%89%2FGPU%EF%BC%88i.MX8QM%EF%BC%89%E3%81%A7%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E8%AA%AC%E6%98%8E%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E4%BE%8B%E3%81%A8%E3%81%97%E3%81%A6%E3%82%AC%E3%82%A6%E3%82%B9%E3%83%BB%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%BC%E3%82%92%E5%8F%96%E3%82%8A%E4%B8%8A%E3%81%92%E3%81%BE%E3%81%99%E3%80%82%E3%83%86%E3%82%B9%E3%83%88%E3%81%AFi.MX8QM%E3%81%A8i.MX8MP%E3%81%A7%E8%A1%8C%E3%81%84%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2022px%3B%22%3E%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%BB%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%81%8B%E3%82%89%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%BB%E3%83%8E%E3%83%BC%E3%83%89%E3%82%92%E4%BD%9C%E6%88%90%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E1.%20%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8E%E3%83%BC%E3%83%89%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2022px%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3EID%E3%81%BE%E3%81%9F%E3%81%AF%E5%90%8D%E5%89%8D%E3%81%A7%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%BB%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%82%92%E7%99%BB%E9%8C%B2%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E4%BE%8B%E3%81%88%E3%81%B0%3C%2FSPAN%3E%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3E%23define%20VX_KERNEL_NAME_GAUSSIAN%20%22com.nxp.extension.gaussian%22%3CBR%20%2F%3E%23define%20VX_KERNEL_ENUM_GAUSSIAN%20100%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3EID%E3%81%BE%E3%81%9F%E3%81%AF%E5%90%8D%E5%89%8D%E3%81%A7%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%81%B8%E3%81%AE%E5%8F%82%E7%85%A7%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E4%BE%8B%E3%81%88%E3%81%B0%3C%2FSPAN%3E%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3Evx_kernel%20kernel%20%3D%20vxGetKernelByName(context%2C%20VX_KERNEL_NAME_GAUSSIAN)%3B%3C%2FP%3E%3CP%3Evx_kernel%20kernel%20%3D%20vxGetKernelByEnum(context%2C%20%3CSPAN%20style%3D%22background-color%3A%20%23f6f6f6%3B%22%3EVX_KERNEL_ENUM_GAUSSIAN%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FSPAN%3E)%3B%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8E%E3%83%BC%E3%83%89%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%3C%2FSPAN%3E%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3Evx_node%20node%20%3D%20vxCreateGenericNode(graph%2C%20kernel)%3B%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2022px%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E5%85%A5%E5%8A%9B%2F%E5%87%BA%E5%8A%9B%E3%83%8E%E3%83%BC%E3%83%89%E3%83%BB%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E4%BE%8B%E3%81%88%E3%81%B0%3C%2FSPAN%3E%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3Evx_status%20status%20%3D%20vxSetParameterByIndex(node%2C%20index%2B%2B%2C%20(vx_reference)in_image)%3B%3CBR%20%2F%3E%20status%20%7C%3D%20vxSetParameterByIndex(node%2C%20index%2B%2B%2C%20(vx_reference)out_image)%3B%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E2.%20%E3%83%8E%E3%83%BC%E3%83%89%E7%94%A8%E3%81%AEInputValidator%2FOutputValidator%E9%96%A2%E6%95%B0%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AF%E3%82%B0%E3%83%A9%E3%83%95%E6%A4%9C%E8%A8%BC%E3%81%AB%E3%81%AE%E3%81%BF%E4%BD%BF%E7%94%A8%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E4%BE%8B%E3%81%88%E3%81%B0%3C%2FSPAN%3E%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3Estatic%20vx_status%20VX_CALLBACK%20vxGaussianInputValidator(vx_node%20node%2C%20vx_uint32%20index)%3C%2FP%3E%3CP%3Estatic%20vx_status%20VX_CALLBACK%20vxGaussianOutputValidator(vx_node%20node%2C%20vx_uint32%20index%2C%20vx_meta_format%20metaObj)%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3EToDo%3A%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3Ea.%20InputValidator%3A%3C%2FSPAN%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%83%BB%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%B8%E3%81%AE%E5%8F%82%E7%85%A7%E3%82%92%E5%8F%96%E5%BE%97%3C%2FSPAN%3E%3C%2FLI%3E%3C%2FUL%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3Evx_parameter%20paramObj%20%3D%20NULL%3B%3CBR%20%2F%3E%20vx_image%20imgObj%20%3D%20NULL%3B%3C%2FP%3E%3CP%3EparamObj%3DvxGetParameterByIndex(node%2C%20index)%3B%3C%2FP%3E%3CP%3EvxQueryParameter(paramObj%2C%20VX_PARAMETER_REF%2C%20%26amp%3BimgObj%2C%20sizeof(vx_image))%3B%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CUL%3E%3CLI%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E5%88%B6%E9%99%90%E3%82%92%E7%A2%BA%E8%AA%8D%3C%2FSPAN%3E%3C%2FLI%3E%3C%2FUL%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3EvxQueryImage(imgObj%2C%20VX_IMAGE_FORMAT%2C%20%26amp%3BimgFmt%2C%20sizeof(imgFmt))%3B%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CUL%3E%3CLI%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E4%BB%96%E3%81%AE%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%81%A8%E3%81%AE%E6%95%B4%E5%90%88%E6%80%A7%E3%82%92%E7%A2%BA%E8%AA%8D%3C%2FSPAN%3E%3C%2FLI%3E%3C%2FUL%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3Eif%20(VX_DF_IMAGE_U8%3D%3DimgFmt)%20status%20%3D%20VX_SUCCESS%3B%3CBR%20%2F%3E%20else%20status%20%3D%20VX_ERROR_INVALID_VALUE%3B%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3Eb.%20OutputValidator%3C%2FSPAN%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E5%87%BA%E5%8A%9B%E3%81%A7%E6%83%B3%E5%AE%9A%E3%81%95%E3%82%8C%E3%82%8B%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92meta_format%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AB%E8%A8%AD%E5%AE%9A%3C%2FSPAN%3E%3C%2FLI%3E%3C%2FUL%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3Estatus%20%7C%3D%20vxSetMetaFormatAttribute(metaObj%2C%20VX_IMAGE_FORMAT%2C%20%26amp%3BimgFmt%2C%20sizeof(imgFmt))%3B%3CBR%20%2F%3E%20status%20%7C%3D%20vxSetMetaFormatAttribute(metaObj%2C%20VX_IMAGE_WIDTH%2C%20%26amp%3Bwidth%2C%20sizeof(width))%3B%3CBR%20%2F%3E%20status%20%7C%3D%20vxSetMetaFormatAttribute(metaObj%2C%20VX_IMAGE_HEIGHT%2C%20%26amp%3Bheight%2C%20sizeof(height))%3B%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2022px%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E3.%20%E3%83%8E%E3%83%BC%E3%83%89%E3%81%AEInitializer%E9%96%A2%E6%95%B0%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E3%82%A4%E3%83%8B%E3%82%B7%E3%83%A3%E3%83%A9%E3%82%A4%E3%82%B6%E3%81%AF%E3%80%81%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%81%AE%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%87%E3%82%A3%E3%83%A0%E3%80%81%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%AB%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B5%E3%82%A4%E3%82%BA%E3%80%81%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B5%E3%82%A4%E3%82%BA%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E4%BD%BF%E7%94%A8%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%82%8C%E3%82%89%E3%81%AE%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%81%AF%20OpenCL%20%E3%81%AE%E3%82%82%E3%81%AE%E3%81%A8%E4%BC%BC%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E4%BE%8B%E3%81%88%E3%81%B0%3C%2FSPAN%3E%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%2F*%20workdim%2C%20globel%20offset%2C%20globel%20scale%2C%20local%20size%2C%20globel%20size%20*%2F%3CBR%20%2F%3E%20vx_kernel_execution_parameters_t%20shaderParam%20%3D%20%7B2%2C%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%7B0%2C%200%2C%200%7D%2C%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7B0%2C%200%2C%200%7D%2C%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7B0%2C%200%2C%200%7D%2C%26nbsp%3B%20%26nbsp%3B%7B0%2C%200%2C%200%7D%7D%3B%3C%2FP%3E%3CP%3Evx_status%20VX_CALLBACK%20vxGaussianInitializer(vx_node%20nodObj%2C%20const%20vx_reference%20*paramObj%2C%20vx_uint32%20paraNum)%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E3%83%8E%E3%83%BC%E3%83%89%E3%81%AB%E5%B1%9E%E6%80%A7%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%99%3C%2FSPAN%3E%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3EvxSetNodeAttribute(nodObj%2C%20VX_NODE_ATTRIBUTE_KERNEL_EXECUTION_PARAMETERS%2C%20%26amp%3BshaderParam%2C%20sizeof(vx_kernel_execution_parameters_t))%3B%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E6%B3%A8%EF%BC%9A%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%AF%E3%80%81GPU%E4%B8%8A%E3%81%AEOpenCL%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E3%82%AC%E3%82%A4%E3%83%89%E3%81%A7%E3%81%99%E3%81%8C%E3%80%81GPU%2FNPU%E3%81%AB%E5%AE%9F%E8%A3%85%E3%81%95%E3%82%8C%E3%81%9FOpenVX%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B%E3%81%86%E3%81%88%E3%81%A7%E5%BD%B9%E7%AB%8B%E3%81%A1%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%3CA%20href%3D%22https%3A%2F%2Fjorudolph.wordpress.com%2F2012%2F02%2F03%2Fopencl-work-item-ids-globalgrouplocal%2F%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3EOpenCL%20%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%A2%E3%82%A4%E3%83%86%E3%83%A0%20ID%3A%20%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%AB%2F%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%2F%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%3C%2FA%3E%3C%2FSPAN%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%3CA%20href%3D%22http%3A%2F%2Fasu-cs.donntu.org%2Fsites%2Fdefault%2Ffiles%2Fimages%2Fdoc%2Fopencl.programming.guide.pdf%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3EOpenCL%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%AC%E3%82%A4%E3%83%89%3C%2FA%3E%3C%2FSPAN%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%3CA%20href%3D%22https%3A%2F%2Fwww.khronos.org%2Fopencl%2Fresources%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3EOpenCL%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%3C%2FA%3E%3C%2FSPAN%3E%3C%2FLI%3E%3CLI%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%3CA%20href%3D%22https%3A%2F%2Fleonardoaraujosantos.gitbooks.io%2Fopencl%2Fcontent%2Fchapter1.html%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3EOpenCL%E3%81%AE%E7%B4%B9%E4%BB%8B%3C%2FA%3E%3C%2FSPAN%3E%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2022px%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E4.%20%E3%83%8E%E3%83%BC%E3%83%89%E3%81%AEDeinitializer%E9%96%A2%E6%95%B0%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%BE%E3%81%99%EF%BC%88%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%EF%BC%89%E3%80%82%3C%2FSPAN%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E5%88%9D%E6%9C%9F%E5%8C%96%E3%81%AE%E9%9A%9B%E3%81%AB%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%81%9F%E3%83%A1%E3%83%A2%E3%83%AA%E3%82%92%E8%A7%A3%E6%94%BE%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E4%BD%BF%E7%94%A8%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2022px%3B%22%3ENPU%2FGPU%E3%81%A7%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%BB%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2022px%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E1.%20%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%BB%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%81%AE%E8%A8%98%E8%BF%B0%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E4%BE%8B%E3%81%88%E3%81%B0%3C%2FSPAN%3E%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3Evx_kernel_description_t%20vxGaussianKernelVXCInfo%20%3D%3CBR%20%2F%3E%7B%3CBR%20%2F%3E%20VX_KERNEL_ENUM_GAUSSIAN%2C%3CBR%20%2F%3E%20VX_KERNEL_NAME_GAUSSIAN%2C%3CBR%20%2F%3E%20nullptr%2C%3CBR%20%2F%3E%20vxGaussianKernelParam%2C%3CBR%20%2F%3E%20(sizeof(vxGaussianKernelParam)%2Fsizeof(vxGaussianKernelParam%5B0%5D))%2C%3CBR%20%2F%3E%20vxGaussianValidator%2C%3CBR%20%2F%3E%20nullptr%2C%3CBR%20%2F%3E%20nullptr%2C%3CBR%20%2F%3E%20vxGaussianInitializer%2C%3CBR%20%2F%3E%20nullptr%3CBR%20%2F%3E%7D%3B%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E2.%20%E6%96%B0%E3%81%97%E3%81%84%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%82%92%E7%99%BB%E9%8C%B2%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E4%BE%8B%E3%81%88%E3%81%B0%3C%2FSPAN%3E%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3Estatic%20vx_kernel_description_t*%20kernels%5B%5D%20%3D%3CBR%20%2F%3E%7B%3CBR%20%2F%3E%20%26amp%3BvxGaussianKernelVXCInfo%2C%3CBR%20%2F%3E%7D%3B%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2022px%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E3.%20NPU%2FGPU%E4%B8%8A%E3%81%AB%E5%AE%9F%E8%A3%85%E3%81%95%E3%82%8C%E3%82%8B%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%83%BB%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E4%BE%8B%E3%81%88%E3%81%B0%3C%2FSPAN%3E%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3Echar%20vxcKernelSource%5B%5D%20%3D%3CBR%20%2F%3E%7B%3CBR%20%2F%3E%22%23include%20%5C%20%5Cn%5C%3CBR%20%2F%3E%5Cn%5C%3CBR%20%2F%3E%5Cn%5C%3CBR%20%2F%3E__kernel%20void%20gaussian%5Cn%5C%3CBR%20%2F%3E%20(%20%5Cn%5C%3CBR%20%2F%3E%20__read_only%20image2d_t%20in_image%2C%20%5Cn%5C%3CBR%20%2F%3E%20__write_only%20image2d_t%20out_image%20%5Cn%5C%3CBR%20%2F%3E%20)%20%5Cn%5C%3CBR%20%2F%3E%7B%20%5Cn%5C%3CBR%20%2F%3E%20int2%20coord%20%3D%20(int2)(get_global_id(0)%2C%20get_global_id(1))%3B%20%5Cn%5C%3CBR%20%2F%3E%20int2%20coord_out%20%3D%20coord%3B%20%5Cn%5C%3CBR%20%2F%3E%20vxc_uchar16%20lineA%2C%20lineB%2C%20lineC%2C%20out%3B%5Cn%5C%3CBR%20%2F%3E%20int2%20coord_in1%20%3D%20coord%20%2B%20(int2)(-1%2C%20-1)%3B%5Cn%5C%3CBR%20%2F%3E%20VXC_OP4(img_load%2C%20lineA%2C%20in_image%2C%20coord_in1%2C%200%2C%20VXC_MODIFIER(0%2C%2015%2C%200%2C%20VXC_RM_TowardZero%2C%200))%3B%5Cn%5C%3CBR%20%2F%3E%20int2%20coord_in2%20%3D%20coord%20%2B%20(int2)(-1%2C%200)%3B%5Cn%5C%3CBR%20%2F%3E%20VXC_OP4(img_load%2C%20lineB%2C%20in_image%2C%20coord_in2%2C%200%2C%20VXC_MODIFIER(0%2C%2015%2C%200%2C%20VXC_RM_TowardZero%2C%200))%3B%5Cn%5C%3CBR%20%2F%3E%20int2%20coord_in3%20%3D%20coord%20%2B%20(int2)(-1%2C%201)%3B%5Cn%5C%3CBR%20%2F%3E%20VXC_OP4(img_load%2C%20lineC%2C%20in_image%2C%20coord_in3%2C%200%2C%20VXC_MODIFIER(0%2C%2015%2C%200%2C%20VXC_RM_TowardZero%2C%200))%3B%5Cn%5C%3CBR%20%2F%3E%20int%20info%20%3D%20VXC_MODIFIER_FILTER(0%2C%2013%2C%200%2C%20VXC_FM_Guassian%2C%200)%3B%5Cn%5C%3CBR%20%2F%3E%20VXC_OP4(filter%2C%20out%2C%20lineA%2C%20lineB%2C%20lineC%2C%20info)%3B%20%3B%5Cn%5C%3CBR%20%2F%3E%20VXC_OP4_NoDest(img_store%2C%20out_image%2C%20coord_out%2C%20out%2C%20VXC_MODIFIER(0%2C%2013%2C%200%2C%20VXC_RM_TowardZero%2C%200))%3B%20%5Cn%5C%3CBR%20%2F%3E%7D%5Cn%5C%3CBR%20%2F%3E%22%3CBR%20%2F%3E%7D%3B%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E6%B3%A8%EF%BC%9A%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%AF%E3%83%AC%E3%82%A4%E3%83%86%E3%83%B3%E3%82%B7%E3%81%AE%E5%B0%91%E3%81%AA%E3%81%84EVIS%E5%91%BD%E4%BB%A4%E3%81%A7%E6%9B%B8%E3%81%8B%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E3%81%9F%E3%81%A0%E3%81%97%E3%80%81EVIS%E3%81%AE%E5%91%BD%E4%BB%A4%E3%81%AB%E3%81%AF%E5%88%B6%E7%B4%84%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%82%8C%E3%82%89%E3%81%AE%E9%96%A2%E6%95%B0%E3%81%AE%E5%AE%9A%E7%BE%A9%E3%81%AF%3CSPAN%20style%3D%22background-color%3A%20%23f6f6f6%3B%22%3E%E3%80%8Ccl_viv_vx_ext.h%E3%80%8D%E3%81%AB%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E5%A0%B4%E6%89%80%E3%81%AF%E3%80%8C%2Fusr%2Finclude%2FCL%2Fcl_viv_vx_ext.h%E3%80%8D%E3%81%A7%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3EGPU%2FNPU%E3%81%A7%E5%87%A6%E7%90%86%E3%81%95%E3%82%8C%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E8%AA%AD%E3%81%BF%E6%88%BB%E3%81%97%E3%80%81%E5%87%A6%E7%90%86%E3%81%8C%E6%AD%A3%E3%81%97%E3%81%8F%E8%A1%8C%E3%82%8F%E3%82%8C%E3%81%9F%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E4%BE%8B%E3%81%88%E3%81%B0%3C%2FSPAN%3E%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3Estatus%20%3D%20vxCopyImagePatch(vx_out_image%E3%80%81%26amp%3Brect%E3%80%810%E3%80%81%26amp%3Baddressing%E3%80%81data2%E3%80%81VX_READ_ONLY%E3%80%81VX_MEMORY_TYPE_HOST)%3B%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2022px%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E4.%20NPU%2FGPU%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%AE%9F%E8%A1%8C%E6%99%82%E3%81%AB%E3%83%93%E3%83%AB%E3%83%89%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E4%BE%8B%E3%81%88%E3%81%B0%3C%2FSPAN%3E%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3EprogramObj%20%3D%20vxCreateProgramWithSource(ContextVX%2C%201%2C%20programSrc%2C%20%26amp%3BprogramLen)%3B%3CBR%20%2F%3E%20vxBuildProgram(programObj%2C%20%22-cl-viv-vx-extension%22)%3B%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2022px%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E5.%20%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%82%92%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AB%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E4%BE%8B%E3%81%88%E3%81%B0%3C%2FSPAN%3E%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3E...%3C%2FP%3E%3CP%3EkernelObj%20%3D%20vxAddKernelInProgram(programObj%2C%3CBR%20%2F%3E%20kernels%5Bi%5D-%26gt%3Bname%2C%3CBR%20%2F%3E%20kernels%5Bi%5D-%26gt%3Benumeration%2C%3CBR%20%2F%3E%20kernels%5Bi%5D-%26gt%3BnumParams%2C%3CBR%20%2F%3E%20kernels%5Bi%5D-%26gt%3Bvalidate%2C%3CBR%20%2F%3E%20kernels%5Bi%5D-%26gt%3Binitialize%2C%3CBR%20%2F%3E%20kernels%5Bi%5D-%26gt%3Bdeinitialize%3CBR%20%2F%3E%20)%3B%3C%2FP%3E%3CP%3E...%3C%2FP%3E%3CP%3Efor(vx_uint32%20j%3D0%3B%20j%20%26lt%3B%20kernels%5Bi%5D-%26gt%3BnumParams%3B%20j%2B%2B)%3CBR%20%2F%3E%20%7B%3CBR%20%2F%3E%20status%20%3D%20vxAddParameterToKernel(kernelObj%2C%3CBR%20%2F%3E%20j%2C%3CBR%20%2F%3E%20kernels%5Bi%5D-%26gt%3Bparameters%5Bj%5D.direction%2C%3CBR%20%2F%3E%20kernels%5Bi%5D-%26gt%3Bparameters%5Bj%5D.data_type%2C%3CBR%20%2F%3E%20kernels%5Bi%5D-%26gt%3Bparameters%5Bj%5D.state%3CBR%20%2F%3E%20)%3B%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E6.%20%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90%E3%82%92%E5%AE%8C%E4%BA%86%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E4%BE%8B%E3%81%88%E3%81%B0%3C%2FP%3E%3CBLOCKQUOTE%20class%3D%22jive_macro_quote%20jive-quote%20jive_text_macro%22%3E%3CP%3Estatus%20%3D%20vxFinalizeKernel(kernelObj)%3B%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2022px%3B%22%3E%E9%81%8B%E5%8B%95%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E4%BE%8B%E3%81%8C%E6%B7%BB%E4%BB%98%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82i.MX8QM%20%E3%81%BE%E3%81%9F%E3%81%AF%20i.MX8MP%20%E3%81%A7%E3%83%93%E3%83%AB%E3%83%89%E3%81%97%E3%81%A6%E3%83%86%E3%82%B9%E3%83%88%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3Ei.MX8QM%E3%81%A7%E3%81%AE%E7%B5%90%E6%9E%9C%EF%BC%9A%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_1.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_1.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F99069i6F02CBC2BC07C830%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_1.png%22%20alt%3D%22pastedImage_1.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E5%8F%82%E8%80%83%E6%83%85%E5%A0%B1%EF%BC%9A%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%3CA%20class%3D%22link-titled%22%20href%3D%22https%3A%2F%2Fgithub.com%2FKhronosGroup%2FKhronosdotorg%2Fblob%2Fmaster%2Fapi%2Fopenvx%2Fresources.md%22%20title%3D%22https%3A%2F%2Fgithub.com%2FKhronosGroup%2FKhronosdotorg%2Fblob%2Fmaster%2Fapi%2Fopenvx%2Fresources.md%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3EKhronosdotorg%2Fresources.md%20at%20master%20%C2%B7%20KhronosGroup%2FKhronosdotorg%20%C2%B7%20GitHub%3C%2FA%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE%3A%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%3CA%20_jive_internal%3D%22true%22%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Fdocs%2FDOC-345680%22%20target%3D%22_blank%22%3EOpenVX%20Vision%20Image%20Extension%20API%20%E3%81%AE%E7%B4%B9%E4%BB%8B%20-%20%E5%9F%BA%E6%9C%AC%20API%3C%2FA%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2015px%3B%22%3E%3CA%20_jive_internal%3D%22true%22%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Fdocs%2FDOC-345681%22%20target%3D%22_blank%22%3EOpenVX%20Vision%20Image%20Extension%20API%20%E3%81%AE%E7%B4%B9%E4%BB%8B%20-%20DP%20Dot%20Products%3C%2FA%3E%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1113429%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3Ei.MX%208%E3%83%95%E3%82%A1%E3%83%9F%E3%83%AA%20%7C%20i.MX%208QuadMax%E2%80%AF(8QM)%20%7C%208QuadPlus%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3Ei.MX%208M%20%7C%20i.MX%208M%20Mini%20%7C%20i.MX%208M%20Nano%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
評価なし
バージョン履歴
最終更新日:
‎02-13-2020 02:59 AM
更新者: