Initial commit
Co-authored-by: Zhuohan Li <zhuohan@openai.com> Co-authored-by: Maratyszcza <marat@openai.com> Co-authored-by: Volodymyr Kyrylov <vol@wilab.org.ua>
This commit is contained in:
67
gpt_oss/metal/python/module.c
Normal file
67
gpt_oss/metal/python/module.c
Normal file
@@ -0,0 +1,67 @@
|
||||
#include <Python.h>
|
||||
|
||||
#include "module.h"
|
||||
|
||||
|
||||
static PyMethodDef module_methods[] = {
|
||||
{NULL, NULL, 0, NULL}
|
||||
};
|
||||
|
||||
static PyModuleDef metal_module = {
|
||||
PyModuleDef_HEAD_INIT,
|
||||
"_metal",
|
||||
"Local GPT-OSS inference",
|
||||
-1,
|
||||
module_methods
|
||||
};
|
||||
|
||||
PyMODINIT_FUNC PyInit__metal(void) {
|
||||
PyObject* module = NULL;
|
||||
PyObject* model_type = NULL;
|
||||
PyObject* tokenizer_type = NULL;
|
||||
PyObject* context_type = NULL;
|
||||
|
||||
if (PyType_Ready(&PyGPTOSSModel_Type) < 0) {
|
||||
goto error;
|
||||
}
|
||||
model_type = (PyObject*) &PyGPTOSSModel_Type;
|
||||
Py_INCREF(model_type);
|
||||
|
||||
if (PyType_Ready(&PyGPTOSSTokenizer_Type) < 0) {
|
||||
goto error;
|
||||
}
|
||||
tokenizer_type = (PyObject*) &PyGPTOSSTokenizer_Type;
|
||||
Py_INCREF(tokenizer_type);
|
||||
|
||||
if (PyType_Ready(&PyGPTOSSContext_Type) < 0) {
|
||||
goto error;
|
||||
}
|
||||
context_type = (PyObject*) &PyGPTOSSContext_Type;
|
||||
Py_INCREF(context_type);
|
||||
|
||||
module = PyModule_Create(&metal_module);
|
||||
if (module == NULL) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (PyModule_AddObject(module, "Model", model_type) < 0) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (PyModule_AddObject(module, "Tokenizer", tokenizer_type) < 0) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (PyModule_AddObject(module, "Context", context_type) < 0) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
return module;
|
||||
|
||||
error:
|
||||
Py_XDECREF(context_type);
|
||||
Py_XDECREF(tokenizer_type);
|
||||
Py_XDECREF(model_type);
|
||||
Py_XDECREF(module);
|
||||
return NULL;
|
||||
}
|
||||
Reference in New Issue
Block a user