Skip to content

[Request help] Can't add new parameters to the kernel generated by 6x16-aarch64-neonfp16arith-cortex-a75.S.in #11098

@WeiMa01

Description

@WeiMa01

We try to add 3 parameters to the 6x16-aarch64-neonfp16arith-cortex-a75.S.in script, and then the f16-gemm-6x16-minmax-asm-aarch64-neonfp16arith-cortex-a75.S kernel can be modified.
There are 3 parameters:

  • size_t index,
  • size_t tile,
  • void* w_head

And we do some modification in the code:

  • add new function (xnn_compute_gemm_fp16) in operator-run.c refer xnn_compute_gemm function,
  • add bool flag(is_fp16_kernel) in reshape_fully_connected_nc function in fully-connected-nc.c, if the flag is true, we will set
    fully_connected_op->compute[0].task_2d_tile_2d = (pthreadpool_task_2d_tile_2d_t) xnn_compute_gemm_fp16;

Then, we pass the index, tile, w_head parameters by the xnn_compute_gemm_fp16 function to f16-gemm-6x16-minmax-asm-aarch64-neonfp16arith-cortex-a75.S kernel

  • In the assembly kernel, we load the parameters as following code:
    LDR x8, [sp, 8] //load index
    MOV x28, x8
    LDR x8, [sp, 16] //load tile
    MOV x19, x8
    LDR x8, [sp, 24] //load w_head
    MOV x21, x8
  • Also, we tried the LDP instruction, but the results are same.

With the above modifications, we cannot get the correct values ​​of the 3 parameters, and we guess that there may be something missing.
So we ask for help, thank you very much for your time

cc @digantdesai @mcr229 @cbilgin

Metadata

Metadata

Assignees

Labels

module: xnnpackIssues related to xnnpack delegation and the code under backends/xnnpack/triagedThis issue has been looked at a team member, and triaged and prioritized into an appropriate module

Type

No type

Projects

Status

To triage

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions