From 7b50b9f0f3a6b0ba80d52bf335a1fb6521f249fb Mon Sep 17 00:00:00 2001 From: w-okada <you@example.com> Date: Thu, 29 Jun 2023 03:50:38 +0900 Subject: [PATCH] dml gpu switch --- client/demo/dist/index.js | 2 +- .../demo/components2/102-2_ConvertArea.tsx | 173 +++++++++++------- 2 files changed, 105 insertions(+), 70 deletions(-) diff --git a/client/demo/dist/index.js b/client/demo/dist/index.js index f4631f72..850c5ed0 100644 --- a/client/demo/dist/index.js +++ b/client/demo/dist/index.js @@ -400,7 +400,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ConvertArea: () => (/* binding */ ConvertArea)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _001_provider_001_AppStateProvider__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../001_provider/001_AppStateProvider */ \"./src/001_provider/001_AppStateProvider.tsx\");\n/* harmony import */ var _001_provider_001_AppRootProvider__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../001_provider/001_AppRootProvider */ \"./src/001_provider/001_AppRootProvider.tsx\");\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\nvar ConvertArea = function ConvertArea(props) {\n var _useAppState = (0,_001_provider_001_AppStateProvider__WEBPACK_IMPORTED_MODULE_5__.useAppState)(),\n setting = _useAppState.setting,\n serverSetting = _useAppState.serverSetting,\n setWorkletNodeSetting = _useAppState.setWorkletNodeSetting,\n trancateBuffer = _useAppState.trancateBuffer;\n var _useAppRoot = (0,_001_provider_001_AppRootProvider__WEBPACK_IMPORTED_MODULE_6__.useAppRoot)(),\n appGuiSettingState = _useAppRoot.appGuiSettingState;\n var edition = appGuiSettingState.edition;\n var convertArea = (0,react__WEBPACK_IMPORTED_MODULE_4__.useMemo)(function () {\n var nums;\n if (!props.inputChunkNums) {\n nums = [8, 16, 24, 32, 40, 48, 64, 80, 96, 112, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1024, 2048];\n } else {\n nums = props.inputChunkNums;\n }\n var gpusEntry = (0,_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(serverSetting.serverSetting.gpus);\n gpusEntry.push({\n id: -1,\n name: \"cpu\",\n memory: 0\n });\n var gpuSelect = edition.indexOf(\"onnxdirectML-cuda\") >= 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control-title\"\n }, \"GPU(dml):\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control-field\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-buttons left-padding-1\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n onClick: /*#__PURE__*/(0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[\"default\"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, serverSetting.serverSetting), {}, {\n gpu: serverSetting.serverSetting.gpu == 0 ? -1 : 0\n }));\n case 2:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n })),\n className: \"config-sub-area-button \"\n }, serverSetting.serverSetting.gpu == 0 ? \"on\" : \"off\")))) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control-title\"\n }, \"GPU:\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control-field\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"select\", {\n className: \"body-select\",\n value: serverSetting.serverSetting.gpu,\n onChange: function onChange(e) {\n serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, serverSetting.serverSetting), {}, {\n gpu: Number(e.target.value)\n }));\n }\n }, gpusEntry.map(function (x) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"option\", {\n key: x.id,\n value: x.id\n }, x.name, x.name == \"cpu\" ? \"\" : \"(\".concat((x.memory / 1024 / 1024 / 1024).toFixed(0), \"GB)\"), \" \");\n }))));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control-title\"\n }, \"CHUNK:\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control-field\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"select\", {\n className: \"body-select\",\n value: setting.workletNodeSetting.inputChunkNum,\n onChange: function onChange(e) {\n setWorkletNodeSetting(_objectSpread(_objectSpread({}, setting.workletNodeSetting), {}, {\n inputChunkNum: Number(e.target.value)\n }));\n trancateBuffer();\n serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, serverSetting.serverSetting), {}, {\n serverReadChunkSize: Number(e.target.value)\n }));\n }\n }, nums.map(function (x) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"option\", {\n key: x,\n value: x\n }, x, \" (\", (x * 128 * 1000 / 48000).toFixed(1), \" ms, \", x * 128, \")\");\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control-title\"\n }, \"EXTRA:\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control-field\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"select\", {\n className: \"body-select\",\n value: serverSetting.serverSetting.extraConvertSize,\n onChange: function onChange(e) {\n serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, serverSetting.serverSetting), {}, {\n extraConvertSize: Number(e.target.value)\n }));\n trancateBuffer();\n }\n }, [1024 * 4, 1024 * 8, 1024 * 16, 1024 * 32, 1024 * 64, 1024 * 128].map(function (x) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"option\", {\n key: x,\n value: x\n }, x);\n })))), gpuSelect);\n }, [serverSetting.serverSetting, setting, serverSetting.updateServerSettings, setWorkletNodeSetting, edition]);\n return convertArea;\n};\n\n//# sourceURL=webpack://demo/./src/components/demo/components2/102-2_ConvertArea.tsx?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ConvertArea: () => (/* binding */ ConvertArea)\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \"./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ \"./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _001_provider_001_AppStateProvider__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../001_provider/001_AppStateProvider */ \"./src/001_provider/001_AppStateProvider.tsx\");\n/* harmony import */ var _001_provider_001_AppRootProvider__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../001_provider/001_AppRootProvider */ \"./src/001_provider/001_AppRootProvider.tsx\");\n\n\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n\n\nvar ConvertArea = function ConvertArea(props) {\n var _useAppState = (0,_001_provider_001_AppStateProvider__WEBPACK_IMPORTED_MODULE_5__.useAppState)(),\n setting = _useAppState.setting,\n serverSetting = _useAppState.serverSetting,\n setWorkletNodeSetting = _useAppState.setWorkletNodeSetting,\n trancateBuffer = _useAppState.trancateBuffer;\n var _useAppRoot = (0,_001_provider_001_AppRootProvider__WEBPACK_IMPORTED_MODULE_6__.useAppRoot)(),\n appGuiSettingState = _useAppRoot.appGuiSettingState;\n var edition = appGuiSettingState.edition;\n var convertArea = (0,react__WEBPACK_IMPORTED_MODULE_4__.useMemo)(function () {\n var nums;\n if (!props.inputChunkNums) {\n nums = [8, 16, 24, 32, 40, 48, 64, 80, 96, 112, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1024, 2048];\n } else {\n nums = props.inputChunkNums;\n }\n var gpusEntry = (0,_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(serverSetting.serverSetting.gpus);\n gpusEntry.push({\n id: -1,\n name: \"cpu\",\n memory: 0\n });\n var onClassName = serverSetting.serverSetting.gpu == 0 ? \"config-sub-area-button-active\" : \"config-sub-area-button\";\n var offClassName = serverSetting.serverSetting.gpu == 0 ? \"config-sub-area-button\" : \"config-sub-area-button-active\";\n var gpuSelect = edition.indexOf(\"onnxdirectML-cuda\") >= 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control-title\"\n }, \"GPU(dml):\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control-field\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-buttons\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n onClick: /*#__PURE__*/(0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[\"default\"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, serverSetting.serverSetting), {}, {\n gpu: 0\n }));\n case 2:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n })),\n className: onClassName\n }, \"on\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n onClick: /*#__PURE__*/(0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[\"default\"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, serverSetting.serverSetting), {}, {\n gpu: -1\n }));\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n })),\n className: offClassName\n }, \"off\")))) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control-title\"\n }, \"GPU:\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control-field\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"select\", {\n className: \"body-select\",\n value: serverSetting.serverSetting.gpu,\n onChange: function onChange(e) {\n serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, serverSetting.serverSetting), {}, {\n gpu: Number(e.target.value)\n }));\n }\n }, gpusEntry.map(function (x) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"option\", {\n key: x.id,\n value: x.id\n }, x.name, x.name == \"cpu\" ? \"\" : \"(\".concat((x.memory / 1024 / 1024 / 1024).toFixed(0), \"GB)\"), \" \");\n }))));\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control-title\"\n }, \"CHUNK:\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control-field\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"select\", {\n className: \"body-select\",\n value: setting.workletNodeSetting.inputChunkNum,\n onChange: function onChange(e) {\n setWorkletNodeSetting(_objectSpread(_objectSpread({}, setting.workletNodeSetting), {}, {\n inputChunkNum: Number(e.target.value)\n }));\n trancateBuffer();\n serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, serverSetting.serverSetting), {}, {\n serverReadChunkSize: Number(e.target.value)\n }));\n }\n }, nums.map(function (x) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"option\", {\n key: x,\n value: x\n }, x, \" (\", (x * 128 * 1000 / 48000).toFixed(1), \" ms, \", x * 128, \")\");\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control-title\"\n }, \"EXTRA:\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"div\", {\n className: \"config-sub-area-control-field\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"select\", {\n className: \"body-select\",\n value: serverSetting.serverSetting.extraConvertSize,\n onChange: function onChange(e) {\n serverSetting.updateServerSettings(_objectSpread(_objectSpread({}, serverSetting.serverSetting), {}, {\n extraConvertSize: Number(e.target.value)\n }));\n trancateBuffer();\n }\n }, [1024 * 4, 1024 * 8, 1024 * 16, 1024 * 32, 1024 * 64, 1024 * 128].map(function (x) {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4___default().createElement(\"option\", {\n key: x,\n value: x\n }, x);\n })))), gpuSelect);\n }, [serverSetting.serverSetting, setting, serverSetting.updateServerSettings, setWorkletNodeSetting, edition]);\n return convertArea;\n};\n\n//# sourceURL=webpack://demo/./src/components/demo/components2/102-2_ConvertArea.tsx?"); /***/ }), diff --git a/client/demo/src/components/demo/components2/102-2_ConvertArea.tsx b/client/demo/src/components/demo/components2/102-2_ConvertArea.tsx index a9d69fc5..78a05dd8 100644 --- a/client/demo/src/components/demo/components2/102-2_ConvertArea.tsx +++ b/client/demo/src/components/demo/components2/102-2_ConvertArea.tsx @@ -1,101 +1,136 @@ -import React, { useMemo } from "react" -import { useAppState } from "../../../001_provider/001_AppStateProvider" -import { useAppRoot } from "../../../001_provider/001_AppRootProvider" +import React, { useMemo } from "react"; +import { useAppState } from "../../../001_provider/001_AppStateProvider"; +import { useAppRoot } from "../../../001_provider/001_AppRootProvider"; export type ConvertProps = { - inputChunkNums: number[] -} - + inputChunkNums: number[]; +}; export const ConvertArea = (props: ConvertProps) => { - const { setting, serverSetting, setWorkletNodeSetting, trancateBuffer } = useAppState() - const { appGuiSettingState } = useAppRoot() - const edition = appGuiSettingState.edition + const { setting, serverSetting, setWorkletNodeSetting, trancateBuffer } = useAppState(); + const { appGuiSettingState } = useAppRoot(); + const edition = appGuiSettingState.edition; const convertArea = useMemo(() => { - let nums: number[] + let nums: number[]; if (!props.inputChunkNums) { - nums = [8, 16, 24, 32, 40, 48, 64, 80, 96, 112, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1024, 2048] + nums = [8, 16, 24, 32, 40, 48, 64, 80, 96, 112, 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1024, 2048]; } else { - nums = props.inputChunkNums + nums = props.inputChunkNums; } - const gpusEntry = [...serverSetting.serverSetting.gpus] + const gpusEntry = [...serverSetting.serverSetting.gpus]; gpusEntry.push({ id: -1, name: "cpu", - memory: 0 - }) - const gpuSelect = edition.indexOf("onnxdirectML-cuda") >= 0 ? ( - <div className="config-sub-area-control"> - <div className="config-sub-area-control-title">GPU(dml):</div> - <div className="config-sub-area-control-field"> - <div className="config-sub-area-buttons left-padding-1"> - <div onClick={ - async () => { - await serverSetting.updateServerSettings({ - ...serverSetting.serverSetting, gpu: serverSetting.serverSetting.gpu == 0 ? -1 : 0 - }) - }} className="config-sub-area-button ">{serverSetting.serverSetting.gpu == 0 ? "on" : "off"}</div> + memory: 0, + }); + + const onClassName = serverSetting.serverSetting.gpu == 0 ? "config-sub-area-button-active" : "config-sub-area-button"; + const offClassName = serverSetting.serverSetting.gpu == 0 ? "config-sub-area-button" : "config-sub-area-button-active"; + + const gpuSelect = + edition.indexOf("onnxdirectML-cuda") >= 0 ? ( + <div className="config-sub-area-control"> + <div className="config-sub-area-control-title">GPU(dml):</div> + <div className="config-sub-area-control-field"> + <div className="config-sub-area-buttons"> + <div + onClick={async () => { + await serverSetting.updateServerSettings({ + ...serverSetting.serverSetting, + gpu: 0, + }); + }} + className={onClassName} + > + on + </div> + <div + onClick={async () => { + await serverSetting.updateServerSettings({ + ...serverSetting.serverSetting, + gpu: -1, + }); + }} + className={offClassName} + > + off + </div> + </div> </div> </div> - </div > - - ) : ( - <div className="config-sub-area-control"> - <div className="config-sub-area-control-title">GPU:</div> - <div className="config-sub-area-control-field"> - <select className="body-select" value={serverSetting.serverSetting.gpu} onChange={(e) => { - serverSetting.updateServerSettings({ ...serverSetting.serverSetting, gpu: Number(e.target.value) }) - }}> - { - gpusEntry.map(x => { - return <option key={x.id} value={x.id}>{x.name}{x.name == "cpu" ? "" : `(${(x.memory / 1024 / 1024 / 1024).toFixed(0)}GB)`} </option> - }) - } - </select> + ) : ( + <div className="config-sub-area-control"> + <div className="config-sub-area-control-title">GPU:</div> + <div className="config-sub-area-control-field"> + <select + className="body-select" + value={serverSetting.serverSetting.gpu} + onChange={(e) => { + serverSetting.updateServerSettings({ ...serverSetting.serverSetting, gpu: Number(e.target.value) }); + }} + > + {gpusEntry.map((x) => { + return ( + <option key={x.id} value={x.id}> + {x.name} + {x.name == "cpu" ? "" : `(${(x.memory / 1024 / 1024 / 1024).toFixed(0)}GB)`}{" "} + </option> + ); + })} + </select> + </div> </div> - </div> - - ) + ); return ( <div className="config-sub-area"> <div className="config-sub-area-control"> <div className="config-sub-area-control-title">CHUNK:</div> <div className="config-sub-area-control-field"> - <select className="body-select" value={setting.workletNodeSetting.inputChunkNum} onChange={(e) => { - setWorkletNodeSetting({ ...setting.workletNodeSetting, inputChunkNum: Number(e.target.value) }) - trancateBuffer() - serverSetting.updateServerSettings({ ...serverSetting.serverSetting, serverReadChunkSize: Number(e.target.value) }) - }}> - { - nums.map(x => { - return <option key={x} value={x}>{x} ({(x * 128 * 1000 / 48000).toFixed(1)} ms, {x * 128})</option> - }) - } + <select + className="body-select" + value={setting.workletNodeSetting.inputChunkNum} + onChange={(e) => { + setWorkletNodeSetting({ ...setting.workletNodeSetting, inputChunkNum: Number(e.target.value) }); + trancateBuffer(); + serverSetting.updateServerSettings({ ...serverSetting.serverSetting, serverReadChunkSize: Number(e.target.value) }); + }} + > + {nums.map((x) => { + return ( + <option key={x} value={x}> + {x} ({((x * 128 * 1000) / 48000).toFixed(1)} ms, {x * 128}) + </option> + ); + })} </select> - </div> </div> <div className="config-sub-area-control"> <div className="config-sub-area-control-title">EXTRA:</div> <div className="config-sub-area-control-field"> - <select className="body-select" value={serverSetting.serverSetting.extraConvertSize} onChange={(e) => { - serverSetting.updateServerSettings({ ...serverSetting.serverSetting, extraConvertSize: Number(e.target.value) }) - trancateBuffer() - }}> - { - [1024 * 4, 1024 * 8, 1024 * 16, 1024 * 32, 1024 * 64, 1024 * 128].map(x => { - return <option key={x} value={x}>{x}</option> - }) - } + <select + className="body-select" + value={serverSetting.serverSetting.extraConvertSize} + onChange={(e) => { + serverSetting.updateServerSettings({ ...serverSetting.serverSetting, extraConvertSize: Number(e.target.value) }); + trancateBuffer(); + }} + > + {[1024 * 4, 1024 * 8, 1024 * 16, 1024 * 32, 1024 * 64, 1024 * 128].map((x) => { + return ( + <option key={x} value={x}> + {x} + </option> + ); + })} </select> </div> </div> {gpuSelect} </div> - ) - }, [serverSetting.serverSetting, setting, serverSetting.updateServerSettings, setWorkletNodeSetting, edition]) + ); + }, [serverSetting.serverSetting, setting, serverSetting.updateServerSettings, setWorkletNodeSetting, edition]); - - return convertArea -} \ No newline at end of file + return convertArea; +};