| 
 | 1 | +find_package(OpenCL REQUIRED)  | 
 | 2 | +find_package(Python3 REQUIRED)  | 
1 | 3 | 
 
  | 
2 |  | -find_package(OpenCL)  | 
3 |  | - | 
4 |  | -if (OpenCL_FOUND)  | 
5 |  | -    find_package(Python3 REQUIRED)  | 
6 |  | - | 
7 |  | -    set(TARGET_NAME ggml-opencl)  | 
8 |  | - | 
9 |  | -    ggml_add_backend_library(${TARGET_NAME}  | 
10 |  | -                ggml-opencl.cpp  | 
11 |  | -                ../../include/ggml-opencl.h)  | 
12 |  | -    target_link_libraries(${TARGET_NAME} PRIVATE ggml-base ${OpenCL_LIBRARIES})  | 
13 |  | -    target_include_directories(${TARGET_NAME} PRIVATE . .. ${OpenCL_INCLUDE_DIRS})  | 
14 |  | - | 
15 |  | -    if (GGML_OPENCL_PROFILING)  | 
16 |  | -        message(STATUS "OpenCL profiling enabled (increases CPU overhead)")  | 
17 |  | -        add_compile_definitions(GGML_OPENCL_PROFILING)  | 
18 |  | -    endif ()  | 
19 |  | - | 
20 |  | -    add_compile_definitions(GGML_OPENCL_SOA_Q)  | 
21 |  | - | 
22 |  | -    if (GGML_OPENCL_USE_ADRENO_KERNELS)  | 
23 |  | -        message(STATUS "OpenCL will use matmul kernels optimized for Adreno")  | 
24 |  | -        add_compile_definitions(GGML_OPENCL_USE_ADRENO_KERNELS)  | 
25 |  | -    endif ()  | 
26 |  | - | 
27 |  | -    if (GGML_OPENCL_EMBED_KERNELS)  | 
28 |  | -        add_compile_definitions(GGML_OPENCL_EMBED_KERNELS)  | 
29 |  | - | 
30 |  | -        set(OPENCL_CL_SOURCE_EMBED         "${CMAKE_BINARY_DIR}/autogenerated/ggml-opencl.cl.h")  | 
31 |  | -        set(OPENCL_MM_CL_SOURCE_EMBED      "${CMAKE_BINARY_DIR}/autogenerated/ggml-opencl_mm.cl.h")  | 
32 |  | -        set(OPENCL_CVT_CL_SOURCE_EMBED     "${CMAKE_BINARY_DIR}/autogenerated/ggml-opencl_cvt.cl.h")  | 
33 |  | - | 
34 |  | -        set(OPENCL_GEMV_NOSHUFFLE_SOURCE_EMBED             "${CMAKE_BINARY_DIR}/autogenerated/ggml-opencl_gemv_noshuffle.cl.h")  | 
35 |  | -        set(OPENCL_GEMV_NOSHUFFLE_GENERAL_SOURCE_EMBED     "${CMAKE_BINARY_DIR}/autogenerated/ggml-opencl_gemv_noshuffle_general.cl.h")  | 
36 |  | -        set(OPENCL_MUL_MAT_Ab_Bi_8x4_SOURCE_EMBED          "${CMAKE_BINARY_DIR}/autogenerated/ggml-opencl_mul_mat_Ab_Bi_8x4.cl.h")  | 
37 |  | -        set(OPENCL_TRANSPOSE_16_SOURCE_EMBED               "${CMAKE_BINARY_DIR}/autogenerated/ggml-opencl_transpose_16.cl.h")  | 
38 |  | -        set(OPENCL_TRANSPOSE_32_SOURCE_EMBED               "${CMAKE_BINARY_DIR}/autogenerated/ggml-opencl_transpose_32.cl.h")  | 
39 |  | -        set(OPENCL_TRANSPOSE_32_16_SOURCE_EMBED            "${CMAKE_BINARY_DIR}/autogenerated/ggml-opencl_transpose_32_16.cl.h")  | 
40 |  | - | 
41 |  | -        set(EMBED_KERNEL_SCRIPT             "${CMAKE_CURRENT_SOURCE_DIR}/kernels/embed_kernel.py")  | 
42 |  | -        file(MAKE_DIRECTORY                 "${CMAKE_BINARY_DIR}/autogenerated")  | 
43 |  | - | 
44 |  | -        include_directories("${CMAKE_BINARY_DIR}/autogenerated")  | 
45 |  | - | 
46 |  | -        # Python must be accessible from command line  | 
47 |  | -        add_custom_command(  | 
48 |  | -            OUTPUT ${OPENCL_CL_SOURCE_EMBED}  | 
49 |  | -            COMMAND ${Python3_EXECUTABLE} ${EMBED_KERNEL_SCRIPT}  | 
50 |  | -                ${CMAKE_CURRENT_SOURCE_DIR}/kernels/ggml-opencl.cl  | 
51 |  | -                ${OPENCL_CL_SOURCE_EMBED}  | 
52 |  | -            DEPENDS kernels/ggml-opencl.cl ${EMBED_KERNEL_SCRIPT}  | 
53 |  | -            COMMENT "Generate ggml-opencl2.cl.h"  | 
54 |  | -        )  | 
55 |  | - | 
56 |  | -        add_custom_command(  | 
57 |  | -            OUTPUT ${OPENCL_MM_CL_SOURCE_EMBED}  | 
58 |  | -            COMMAND ${Python3_EXECUTABLE} ${EMBED_KERNEL_SCRIPT}  | 
59 |  | -                ${CMAKE_CURRENT_SOURCE_DIR}/kernels/ggml-opencl_mm.cl  | 
60 |  | -                ${OPENCL_MM_CL_SOURCE_EMBED}  | 
61 |  | -            DEPENDS kernels/ggml-opencl_mm.cl ${EMBED_KERNEL_SCRIPT}  | 
62 |  | -            COMMENT "Generate ggml-opencl_mm.cl.h"  | 
63 |  | -        )  | 
64 |  | - | 
65 |  | -        add_custom_command(  | 
66 |  | -            OUTPUT ${OPENCL_CVT_CL_SOURCE_EMBED}  | 
67 |  | -            COMMAND ${Python3_EXECUTABLE} ${EMBED_KERNEL_SCRIPT}  | 
68 |  | -                ${CMAKE_CURRENT_SOURCE_DIR}/kernels/ggml-opencl_cvt.cl  | 
69 |  | -                ${OPENCL_CVT_CL_SOURCE_EMBED}  | 
70 |  | -            DEPENDS kernels/ggml-opencl_cvt.cl ${EMBED_KERNEL_SCRIPT}  | 
71 |  | -            COMMENT "Generate ggml-opencl_cvt.cl.h"  | 
72 |  | -        )  | 
73 |  | - | 
74 |  | -        add_custom_command(  | 
75 |  | -            OUTPUT ${OPENCL_GEMV_NOSHUFFLE_SOURCE_EMBED}  | 
76 |  | -            COMMAND ${Python3_EXECUTABLE} ${EMBED_KERNEL_SCRIPT}  | 
77 |  | -                ${CMAKE_CURRENT_SOURCE_DIR}/kernels/ggml-opencl_gemv_noshuffle.cl  | 
78 |  | -                ${OPENCL_GEMV_NOSHUFFLE_SOURCE_EMBED}  | 
79 |  | -            DEPENDS kernels/ggml-opencl_gemv_noshuffle.cl ${EMBED_KERNEL_SCRIPT}  | 
80 |  | -            COMMENT "Generate ggml-opencl_gemv_noshuffle.cl.h"  | 
81 |  | -        )  | 
82 |  | - | 
83 |  | -        add_custom_command(  | 
84 |  | -            OUTPUT ${OPENCL_GEMV_NOSHUFFLE_GENERAL_SOURCE_EMBED}  | 
85 |  | -            COMMAND ${Python3_EXECUTABLE} ${EMBED_KERNEL_SCRIPT}  | 
86 |  | -                ${CMAKE_CURRENT_SOURCE_DIR}/kernels/ggml-opencl_gemv_noshuffle_general.cl  | 
87 |  | -                ${OPENCL_GEMV_NOSHUFFLE_GENERAL_SOURCE_EMBED}  | 
88 |  | -            DEPENDS kernels/ggml-opencl_gemv_noshuffle_general.cl ${EMBED_KERNEL_SCRIPT}  | 
89 |  | -            COMMENT "Generate ggml-opencl_gemv_noshuffle_general.cl.h"  | 
90 |  | -        )  | 
91 |  | - | 
92 |  | -        add_custom_command(  | 
93 |  | -            OUTPUT ${OPENCL_MUL_MAT_Ab_Bi_8x4_SOURCE_EMBED}  | 
94 |  | -            COMMAND ${Python3_EXECUTABLE} ${EMBED_KERNEL_SCRIPT}  | 
95 |  | -                ${CMAKE_CURRENT_SOURCE_DIR}/kernels/ggml-opencl_mul_mat_Ab_Bi_8x4.cl  | 
96 |  | -                ${OPENCL_MUL_MAT_Ab_Bi_8x4_SOURCE_EMBED}  | 
97 |  | -            DEPENDS kernels/ggml-opencl_mul_mat_Ab_Bi_8x4.cl ${EMBED_KERNEL_SCRIPT}  | 
98 |  | -            COMMENT "Generate ggml-opencl_mul_mat_Ab_Bi_8x4.cl.cl.h"  | 
99 |  | -        )  | 
100 |  | - | 
101 |  | -        add_custom_command(  | 
102 |  | -            OUTPUT ${OPENCL_TRANSPOSE_16_SOURCE_EMBED}  | 
103 |  | -            COMMAND ${Python3_EXECUTABLE} ${EMBED_KERNEL_SCRIPT}  | 
104 |  | -                ${CMAKE_CURRENT_SOURCE_DIR}/kernels/ggml-opencl_transpose_16.cl  | 
105 |  | -                ${OPENCL_TRANSPOSE_16_SOURCE_EMBED}  | 
106 |  | -            DEPENDS kernels/ggml-opencl_transpose_16.cl ${EMBED_KERNEL_SCRIPT}  | 
107 |  | -            COMMENT "Generate ggml-opencl_transpose_16.cl.h"  | 
108 |  | -        )  | 
109 |  | - | 
110 |  | -        add_custom_command(  | 
111 |  | -            OUTPUT ${OPENCL_TRANSPOSE_32_SOURCE_EMBED}  | 
112 |  | -            COMMAND ${Python3_EXECUTABLE} ${EMBED_KERNEL_SCRIPT}  | 
113 |  | -                ${CMAKE_CURRENT_SOURCE_DIR}/kernels/ggml-opencl_transpose_32.cl  | 
114 |  | -                ${OPENCL_TRANSPOSE_32_SOURCE_EMBED}  | 
115 |  | -            DEPENDS kernels/ggml-opencl_transpose_32.cl ${EMBED_KERNEL_SCRIPT}  | 
116 |  | -            COMMENT "Generate ggml-opencl_transpose_32.cl.h"  | 
117 |  | -        )  | 
118 |  | - | 
119 |  | -        add_custom_command(  | 
120 |  | -            OUTPUT ${OPENCL_TRANSPOSE_32_16_SOURCE_EMBED}  | 
121 |  | -            COMMAND ${Python3_EXECUTABLE} ${EMBED_KERNEL_SCRIPT}  | 
122 |  | -                ${CMAKE_CURRENT_SOURCE_DIR}/kernels/ggml-opencl_transpose_32_16.cl  | 
123 |  | -                ${OPENCL_TRANSPOSE_32_16_SOURCE_EMBED}  | 
124 |  | -            DEPENDS kernels/ggml-opencl_transpose_32_16.cl ${EMBED_KERNEL_SCRIPT}  | 
125 |  | -            COMMENT "Generate ggml-opencl_transpose_32_16.cl.h"  | 
126 |  | -        )  | 
127 |  | - | 
128 |  | -        target_sources(${TARGET_NAME} PRIVATE  | 
129 |  | -                       ${OPENCL_CL_SOURCE_EMBED}  | 
130 |  | -                       ${OPENCL_MM_CL_SOURCE_EMBED}  | 
131 |  | -                       ${OPENCL_CVT_CL_SOURCE_EMBED}  | 
132 |  | -                       ${OPENCL_GEMV_NOSHUFFLE_SOURCE_EMBED}  | 
133 |  | -                       ${OPENCL_GEMV_NOSHUFFLE_GENERAL_SOURCE_EMBED}  | 
134 |  | -                       ${OPENCL_MUL_MAT_Ab_Bi_8x4_SOURCE_EMBED}  | 
135 |  | -                       ${OPENCL_TRANSPOSE_16_SOURCE_EMBED}  | 
136 |  | -                       ${OPENCL_TRANSPOSE_32_SOURCE_EMBED}  | 
137 |  | -                       ${OPENCL_TRANSPOSE_32_16_SOURCE_EMBED})  | 
138 |  | -    else ()  | 
139 |  | -        # copy ggml-opencl.cl to bin directory  | 
140 |  | -        configure_file(kernels/ggml-opencl.cl ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-opencl.cl COPYONLY)  | 
141 |  | -        configure_file(kernels/ggml-opencl_mm.cl ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-opencl_mm.cl COPYONLY)  | 
142 |  | -        configure_file(kernels/ggml-opencl_cvt.cl ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-opencl_cvt.cl COPYONLY)  | 
143 |  | - | 
144 |  | -        configure_file(kernels/ggml-opencl_gemv_noshuffle.cl ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-opencl_gemv_noshuffle.cl COPYONLY)  | 
145 |  | -        configure_file(kernels/ggml-opencl_gemv_noshuffle_general.cl ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-opencl_gemv_noshuffle_general.cl COPYONLY)  | 
146 |  | -        configure_file(kernels/ggml-opencl_mul_mat_Ab_Bi_8x4.cl ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-opencl_mul_mat_Ab_Bi_8x4.cl COPYONLY)  | 
147 |  | -        configure_file(kernels/ggml-opencl_transpose_16.cl ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-opencl_transpose_16.cl COPYONLY)  | 
148 |  | -        configure_file(kernels/ggml-opencl_transpose_32.cl ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-opencl_transpose_32.cl COPYONLY)  | 
149 |  | -        configure_file(kernels/ggml-opencl_transpose_32_16.cl ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-opencl_transpose_32_16.cl COPYONLY)  | 
150 |  | -    endif ()  | 
 | 4 | +set(TARGET_NAME ggml-opencl)  | 
 | 5 | + | 
 | 6 | +ggml_add_backend_library(${TARGET_NAME}  | 
 | 7 | +                         ggml-opencl.cpp  | 
 | 8 | +                         ../../include/ggml-opencl.h)  | 
 | 9 | +target_link_libraries(${TARGET_NAME} PRIVATE ${OpenCL_LIBRARIES})  | 
 | 10 | +target_include_directories(${TARGET_NAME} PRIVATE ${OpenCL_INCLUDE_DIRS})  | 
 | 11 | + | 
 | 12 | +if (GGML_OPENCL_PROFILING)  | 
 | 13 | +    message(STATUS "OpenCL profiling enabled (increases CPU overhead)")  | 
 | 14 | +    add_compile_definitions(GGML_OPENCL_PROFILING)  | 
 | 15 | +endif ()  | 
 | 16 | + | 
 | 17 | +add_compile_definitions(GGML_OPENCL_SOA_Q)  | 
 | 18 | + | 
 | 19 | +if (GGML_OPENCL_USE_ADRENO_KERNELS)  | 
 | 20 | +    message(STATUS "OpenCL will use matmul kernels optimized for Adreno")  | 
 | 21 | +    add_compile_definitions(GGML_OPENCL_USE_ADRENO_KERNELS)  | 
 | 22 | +endif ()  | 
 | 23 | + | 
 | 24 | +if (GGML_OPENCL_EMBED_KERNELS)  | 
 | 25 | +    add_compile_definitions(GGML_OPENCL_EMBED_KERNELS)  | 
 | 26 | + | 
 | 27 | +    set(OPENCL_CL_SOURCE_EMBED         "${CMAKE_BINARY_DIR}/autogenerated/ggml-opencl.cl.h")  | 
 | 28 | +    set(OPENCL_MM_CL_SOURCE_EMBED      "${CMAKE_BINARY_DIR}/autogenerated/ggml-opencl_mm.cl.h")  | 
 | 29 | +    set(OPENCL_CVT_CL_SOURCE_EMBED     "${CMAKE_BINARY_DIR}/autogenerated/ggml-opencl_cvt.cl.h")  | 
 | 30 | + | 
 | 31 | +    set(OPENCL_GEMV_NOSHUFFLE_SOURCE_EMBED             "${CMAKE_BINARY_DIR}/autogenerated/ggml-opencl_gemv_noshuffle.cl.h")  | 
 | 32 | +    set(OPENCL_GEMV_NOSHUFFLE_GENERAL_SOURCE_EMBED     "${CMAKE_BINARY_DIR}/autogenerated/ggml-opencl_gemv_noshuffle_general.cl.h")  | 
 | 33 | +    set(OPENCL_MUL_MAT_Ab_Bi_8x4_SOURCE_EMBED          "${CMAKE_BINARY_DIR}/autogenerated/ggml-opencl_mul_mat_Ab_Bi_8x4.cl.h")  | 
 | 34 | +    set(OPENCL_TRANSPOSE_16_SOURCE_EMBED               "${CMAKE_BINARY_DIR}/autogenerated/ggml-opencl_transpose_16.cl.h")  | 
 | 35 | +    set(OPENCL_TRANSPOSE_32_SOURCE_EMBED               "${CMAKE_BINARY_DIR}/autogenerated/ggml-opencl_transpose_32.cl.h")  | 
 | 36 | +    set(OPENCL_TRANSPOSE_32_16_SOURCE_EMBED            "${CMAKE_BINARY_DIR}/autogenerated/ggml-opencl_transpose_32_16.cl.h")  | 
 | 37 | + | 
 | 38 | +    set(EMBED_KERNEL_SCRIPT             "${CMAKE_CURRENT_SOURCE_DIR}/kernels/embed_kernel.py")  | 
 | 39 | +    file(MAKE_DIRECTORY                 "${CMAKE_BINARY_DIR}/autogenerated")  | 
 | 40 | + | 
 | 41 | +    include_directories("${CMAKE_BINARY_DIR}/autogenerated")  | 
 | 42 | + | 
 | 43 | +    # Python must be accessible from command line  | 
 | 44 | +    add_custom_command(  | 
 | 45 | +        OUTPUT ${OPENCL_CL_SOURCE_EMBED}  | 
 | 46 | +        COMMAND ${Python3_EXECUTABLE} ${EMBED_KERNEL_SCRIPT}  | 
 | 47 | +            ${CMAKE_CURRENT_SOURCE_DIR}/kernels/ggml-opencl.cl  | 
 | 48 | +            ${OPENCL_CL_SOURCE_EMBED}  | 
 | 49 | +        DEPENDS kernels/ggml-opencl.cl ${EMBED_KERNEL_SCRIPT}  | 
 | 50 | +        COMMENT "Generate ggml-opencl.cl.h"  | 
 | 51 | +    )  | 
 | 52 | + | 
 | 53 | +    add_custom_command(  | 
 | 54 | +        OUTPUT ${OPENCL_MM_CL_SOURCE_EMBED}  | 
 | 55 | +        COMMAND ${Python3_EXECUTABLE} ${EMBED_KERNEL_SCRIPT}  | 
 | 56 | +            ${CMAKE_CURRENT_SOURCE_DIR}/kernels/ggml-opencl_mm.cl  | 
 | 57 | +            ${OPENCL_MM_CL_SOURCE_EMBED}  | 
 | 58 | +        DEPENDS kernels/ggml-opencl_mm.cl ${EMBED_KERNEL_SCRIPT}  | 
 | 59 | +        COMMENT "Generate ggml-opencl_mm.cl.h"  | 
 | 60 | +    )  | 
 | 61 | + | 
 | 62 | +    add_custom_command(  | 
 | 63 | +        OUTPUT ${OPENCL_CVT_CL_SOURCE_EMBED}  | 
 | 64 | +        COMMAND ${Python3_EXECUTABLE} ${EMBED_KERNEL_SCRIPT}  | 
 | 65 | +            ${CMAKE_CURRENT_SOURCE_DIR}/kernels/ggml-opencl_cvt.cl  | 
 | 66 | +            ${OPENCL_CVT_CL_SOURCE_EMBED}  | 
 | 67 | +        DEPENDS kernels/ggml-opencl_cvt.cl ${EMBED_KERNEL_SCRIPT}  | 
 | 68 | +        COMMENT "Generate ggml-opencl_cvt.cl.h"  | 
 | 69 | +    )  | 
 | 70 | + | 
 | 71 | +    add_custom_command(  | 
 | 72 | +        OUTPUT ${OPENCL_GEMV_NOSHUFFLE_SOURCE_EMBED}  | 
 | 73 | +        COMMAND ${Python3_EXECUTABLE} ${EMBED_KERNEL_SCRIPT}  | 
 | 74 | +            ${CMAKE_CURRENT_SOURCE_DIR}/kernels/ggml-opencl_gemv_noshuffle.cl  | 
 | 75 | +            ${OPENCL_GEMV_NOSHUFFLE_SOURCE_EMBED}  | 
 | 76 | +        DEPENDS kernels/ggml-opencl_gemv_noshuffle.cl ${EMBED_KERNEL_SCRIPT}  | 
 | 77 | +        COMMENT "Generate ggml-opencl_gemv_noshuffle.cl.h"  | 
 | 78 | +    )  | 
 | 79 | + | 
 | 80 | +    add_custom_command(  | 
 | 81 | +        OUTPUT ${OPENCL_GEMV_NOSHUFFLE_GENERAL_SOURCE_EMBED}  | 
 | 82 | +        COMMAND ${Python3_EXECUTABLE} ${EMBED_KERNEL_SCRIPT}  | 
 | 83 | +            ${CMAKE_CURRENT_SOURCE_DIR}/kernels/ggml-opencl_gemv_noshuffle_general.cl  | 
 | 84 | +            ${OPENCL_GEMV_NOSHUFFLE_GENERAL_SOURCE_EMBED}  | 
 | 85 | +        DEPENDS kernels/ggml-opencl_gemv_noshuffle_general.cl ${EMBED_KERNEL_SCRIPT}  | 
 | 86 | +        COMMENT "Generate ggml-opencl_gemv_noshuffle_general.cl.h"  | 
 | 87 | +    )  | 
 | 88 | + | 
 | 89 | +    add_custom_command(  | 
 | 90 | +        OUTPUT ${OPENCL_MUL_MAT_Ab_Bi_8x4_SOURCE_EMBED}  | 
 | 91 | +        COMMAND ${Python3_EXECUTABLE} ${EMBED_KERNEL_SCRIPT}  | 
 | 92 | +            ${CMAKE_CURRENT_SOURCE_DIR}/kernels/ggml-opencl_mul_mat_Ab_Bi_8x4.cl  | 
 | 93 | +            ${OPENCL_MUL_MAT_Ab_Bi_8x4_SOURCE_EMBED}  | 
 | 94 | +        DEPENDS kernels/ggml-opencl_mul_mat_Ab_Bi_8x4.cl ${EMBED_KERNEL_SCRIPT}  | 
 | 95 | +        COMMENT "Generate ggml-opencl_mul_mat_Ab_Bi_8x4.cl.cl.h"  | 
 | 96 | +    )  | 
 | 97 | + | 
 | 98 | +    add_custom_command(  | 
 | 99 | +        OUTPUT ${OPENCL_TRANSPOSE_16_SOURCE_EMBED}  | 
 | 100 | +        COMMAND ${Python3_EXECUTABLE} ${EMBED_KERNEL_SCRIPT}  | 
 | 101 | +            ${CMAKE_CURRENT_SOURCE_DIR}/kernels/ggml-opencl_transpose_16.cl  | 
 | 102 | +            ${OPENCL_TRANSPOSE_16_SOURCE_EMBED}  | 
 | 103 | +        DEPENDS kernels/ggml-opencl_transpose_16.cl ${EMBED_KERNEL_SCRIPT}  | 
 | 104 | +        COMMENT "Generate ggml-opencl_transpose_16.cl.h"  | 
 | 105 | +    )  | 
 | 106 | + | 
 | 107 | +    add_custom_command(  | 
 | 108 | +        OUTPUT ${OPENCL_TRANSPOSE_32_SOURCE_EMBED}  | 
 | 109 | +        COMMAND ${Python3_EXECUTABLE} ${EMBED_KERNEL_SCRIPT}  | 
 | 110 | +            ${CMAKE_CURRENT_SOURCE_DIR}/kernels/ggml-opencl_transpose_32.cl  | 
 | 111 | +            ${OPENCL_TRANSPOSE_32_SOURCE_EMBED}  | 
 | 112 | +        DEPENDS kernels/ggml-opencl_transpose_32.cl ${EMBED_KERNEL_SCRIPT}  | 
 | 113 | +        COMMENT "Generate ggml-opencl_transpose_32.cl.h"  | 
 | 114 | +    )  | 
 | 115 | + | 
 | 116 | +    add_custom_command(  | 
 | 117 | +        OUTPUT ${OPENCL_TRANSPOSE_32_16_SOURCE_EMBED}  | 
 | 118 | +        COMMAND ${Python3_EXECUTABLE} ${EMBED_KERNEL_SCRIPT}  | 
 | 119 | +            ${CMAKE_CURRENT_SOURCE_DIR}/kernels/ggml-opencl_transpose_32_16.cl  | 
 | 120 | +            ${OPENCL_TRANSPOSE_32_16_SOURCE_EMBED}  | 
 | 121 | +        DEPENDS kernels/ggml-opencl_transpose_32_16.cl ${EMBED_KERNEL_SCRIPT}  | 
 | 122 | +        COMMENT "Generate ggml-opencl_transpose_32_16.cl.h"  | 
 | 123 | +    )  | 
 | 124 | + | 
 | 125 | +    target_sources(${TARGET_NAME} PRIVATE  | 
 | 126 | +                   ${OPENCL_CL_SOURCE_EMBED}  | 
 | 127 | +                   ${OPENCL_MM_CL_SOURCE_EMBED}  | 
 | 128 | +                   ${OPENCL_CVT_CL_SOURCE_EMBED}  | 
 | 129 | +                   ${OPENCL_GEMV_NOSHUFFLE_SOURCE_EMBED}  | 
 | 130 | +                   ${OPENCL_GEMV_NOSHUFFLE_GENERAL_SOURCE_EMBED}  | 
 | 131 | +                   ${OPENCL_MUL_MAT_Ab_Bi_8x4_SOURCE_EMBED}  | 
 | 132 | +                   ${OPENCL_TRANSPOSE_16_SOURCE_EMBED}  | 
 | 133 | +                   ${OPENCL_TRANSPOSE_32_SOURCE_EMBED}  | 
 | 134 | +                   ${OPENCL_TRANSPOSE_32_16_SOURCE_EMBED})  | 
151 | 135 | else ()  | 
152 |  | -    message(WARNING "OpenCL not found")  | 
 | 136 | +    # copy ggml-opencl.cl to bin directory  | 
 | 137 | +    configure_file(kernels/ggml-opencl.cl ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-opencl.cl COPYONLY)  | 
 | 138 | +    configure_file(kernels/ggml-opencl_mm.cl ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-opencl_mm.cl COPYONLY)  | 
 | 139 | +    configure_file(kernels/ggml-opencl_cvt.cl ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-opencl_cvt.cl COPYONLY)  | 
 | 140 | + | 
 | 141 | +    configure_file(kernels/ggml-opencl_gemv_noshuffle.cl ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-opencl_gemv_noshuffle.cl COPYONLY)  | 
 | 142 | +    configure_file(kernels/ggml-opencl_gemv_noshuffle_general.cl ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-opencl_gemv_noshuffle_general.cl COPYONLY)  | 
 | 143 | +    configure_file(kernels/ggml-opencl_mul_mat_Ab_Bi_8x4.cl ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-opencl_mul_mat_Ab_Bi_8x4.cl COPYONLY)  | 
 | 144 | +    configure_file(kernels/ggml-opencl_transpose_16.cl ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-opencl_transpose_16.cl COPYONLY)  | 
 | 145 | +    configure_file(kernels/ggml-opencl_transpose_32.cl ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-opencl_transpose_32.cl COPYONLY)  | 
 | 146 | +    configure_file(kernels/ggml-opencl_transpose_32_16.cl ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-opencl_transpose_32_16.cl COPYONLY)  | 
153 | 147 | endif ()  | 
0 commit comments