MCPcopy Create free account
hub / github.com/microsoft/BitNet / gen_transform_code

Function gen_transform_code

utils/codegen_tl1.py:321–368  ·  view source on GitHub ↗
(kernel_shape)

Source from the content-addressed store, hash-verified

319 return kernel_code
320
321def gen_transform_code(kernel_shape):
322 kernel_code = "\n\
323void ggml_bitnet_transform_tensor(struct ggml_tensor * tensor) {\n\
324 if (!(is_type_supported(tensor->type) && tensor->backend == GGML_BACKEND_TYPE_CPU && tensor->extra == nullptr)) {\n\
325 return;\n\
326 }\n\
327\n\
328 int k = tensor->ne[0];\n\
329 int m = tensor->ne[1];\n\
330 const int lut_scales_size = 1;\n\
331 const int scales_size = 1;\n\
332 int bk = 0;\n\
333 int bm = 0;\n"
334
335 kernel_code = "".join([kernel_code, "\n\
336 if (m == {0} && k == {1}) {{\n\
337 bm = BM{0}_{1};\n\
338 bk = BBK{0}_{1};\n\
339 }}\n".format(kernel_shapes[0][0], kernel_shapes[0][1])])
340
341 for i in range(1, len(kernel_shapes)):
342 kernel_code = "".join([kernel_code, "else if (m == {0} && k == {1}) {{\n\
343 bm = BM{0}_{1};\n\
344 bk = BBK{0}_{1};\n\
345 }}\n".format(kernel_shapes[i][0], kernel_shapes[i][1])])
346
347 kernel_code = "".join([kernel_code, "\n\
348 const int n_tile_num = m / bm;\n\
349 const int BK = bk;\n\
350 uint8_t * qweights;\n\
351 bitnet_float_type * scales;\n\
352\n\
353 scales = (bitnet_float_type *) aligned_malloc(sizeof(bitnet_float_type));\n\
354 qweights = (uint8_t *) tensor->data;\n\
355 float * i2_scales = (float * )(qweights + k * m / 4);\n\
356 scales[0] = (bitnet_float_type) i2_scales[0];\n\
357\n\
358 tensor->extra = bitnet_tensor_extras + bitnet_tensor_extras_index;\n\
359 bitnet_tensor_extras[bitnet_tensor_extras_index++] = {\n\
360 /* .lut_scales_size = */ lut_scales_size,\n\
361 /* .BK = */ BK,\n\
362 /* .n_tile_num = */ n_tile_num,\n\
363 /* .qweights = */ qweights,\n\
364 /* .scales = */ scales\n\
365 };\n\
366}\n"])
367
368 return kernel_code
369
370if __name__ == "__main__":
371 ModelShapeDict = {

Callers 1

codegen_tl1.pyFile · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected