scidb CONFIG_MEM_ARRAY_THRESHOLD

本文详细介绍了SciDB数据库系统的配置文件内容,包括服务器设置、插件目录、日志配置等关键参数,并深入解析了并发查询、内存分配等性能相关配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/home/scidb/data/scidbtrunk/stage/install/etc/config.ini


/opt/scidb/15.7/etc/config.ini


/home/scidb/data/scidbtrunk/install/installer/common/config.ini:


[single_server]

server-0=localhost,3
install_root=/opt/scidb/VERSION
pluginsdir=/opt/scidb/VERSION/lib/scidb/plugins
logconf=/opt/scidb/VERSION/share/scidb/log4cxx.properties
db_user=scidb_pg_user
db_passwd=scidb_pg_user_pasw
base-port=1239
base-path=/home/scidb/scidb_data
redundancy=0


### Threading: max_concurrent_queries=2, threads_per_query=1
# max_concurrent_queries + 2:
execution-threads=4
# max_concurrent_queries * threads_per_query:
result-prefetch-threads=2
# threads_per_query:
result-prefetch-queue-size=1
operator-threads=1


### Memory: 1000MB per instance, 750MB reserved
# network: 300MB per instance assuming 5MB average chunks
# in units of chunks per query:
sg-send-queue-size=15
sg-receive-queue-size=15
# caches: 300MB per instance
smgr-cache-size=150
mem-array-threshold=150

# sort: 150MB per instance (specified per thread)
merge-sort-buffer=75
// Copyright (c) 2024锛孌-Robotics. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include "include/centernet_3d_detection_node.h" #include <unistd.h> #include <fstream> #include <memory> #include <string> #include <vector> #include <sys/stat.h> #ifdef CV_BRIDGE_PKG_ENABLED #include <cv_bridge/cv_bridge.h> #endif #include "rclcpp/rclcpp.hpp" #include "dnn_node/dnn_node.h" #include "dnn_node/util/image_proc.h" #include "opencv2/imgproc/types_c.h" CenterNet3DDetectionNode::CenterNet3DDetectionNode(const std::string &node_name, const NodeOptions &options) : DnnNode(node_name, options), output_frameCount_(0) { this->declare_parameter<std::string>("config_file_path", config_file_path_); this->declare_parameter<int>("shared_mem", shared_mem_); this->declare_parameter<std::string>("ai_msg_pub_topic_name", msg_pub_topic_name_); this->declare_parameter<std::string>("image_sub_topic_name", ros_img_topic_name_); this->declare_parameter<std::string>("feed_image", feed_image_); this->declare_parameter<int>("dump_render_img", dump_render_img_); this->get_parameter<std::string>("config_file_path", config_file_path_); this->get_parameter<int>("shared_mem", shared_mem_); this->get_parameter<std::string>("ai_msg_pub_topic_name", msg_pub_topic_name_); this->get_parameter<std::string>("image_sub_topic_name"
03-13
请解释这段代码 static kal_bool mipc_apn_set_ia_cnf(ilm_struct *ilm_ptr, struct _l5io_track_struct *track_ptr) { l5updn_set_ia_cnf_struct *l5updn_set_ia_cnf = (l5updn_set_ia_cnf_struct *)ilm_ptr->local_para_ptr; mipc_msg_t *msg_ptr; msg_ptr = track_ptr->e.mipc.msg_ptr; MD_TRC_FUNC_L5IO_MIPC_APN_SET_IA_CNF(); l5_ts_del_item(MSG_ID_L5UPDN_SET_IA_REQ, track_ptr->l5seq_id); if (l5updn_set_ia_cnf->ia_apn_count > 0 && l5updn_set_ia_cnf->ia_apn_count <= L5UPDN_MAX_IA_APN_COUNT )/* LCOV_EXCL_BR_LINE, for ut */ { l5updn_mipc_ia_apn_struct *ia_all_in = (l5updn_mipc_ia_apn_struct *)get_ctrl_buffer( l5updn_set_ia_cnf->ia_apn_count*sizeof(l5updn_mipc_ia_apn_struct)); mipc_msg_tlv_array_t *array_tlv_ptr = mipc_msg_add_tlv_array(msg_ptr, MIPC_APN_SET_IA_CNF_T_IA_TLV_ARRAY, l5updn_set_ia_cnf->ia_apn_count); for (kal_uint8 i = 0; i<l5updn_set_ia_cnf->ia_apn_count; i++) { kal_mem_cpy((void*)((void*)ia_all_in + i*sizeof(l5updn_mipc_ia_apn_struct)),(void*)&l5updn_set_ia_cnf->ia_apn[i],sizeof(l5updn_mipc_ia_apn_struct)); mipc_msg_add_idx(msg_ptr, array_tlv_ptr, i, sizeof(l5updn_mipc_ia_apn_struct), (void*)&l5updn_set_ia_cnf->ia_apn[i]); } mipc_msg_add_tlv(msg_ptr, MIPC_APN_SET_IA_CNF_T_IA_LIST , (l5updn_set_ia_cnf->ia_apn_count)*sizeof(l5updn_mipc_ia_apn_struct),(void*)ia_all_in); mipc_msg_add_tlv_uint8(msg_ptr,MIPC_APN_SET_IA_CNF_T_IA_COUNT,l5updn_set_ia_cnf->ia_apn_count); mipc_msg_add_tlv_uint32(msg_ptr, MIPC_T_RESULT, 0x00000000); l5mipc_msg_send_cnf(track_ptr->track_id, msg_ptr); mipc_msg_deinit(msg_ptr); free_ctrl_buffer(ia_all_in); } else /* LCOV_EXCL_BR_LINE, for ut */ { mipc_msg_add_tlv_uint32(msg_ptr, MIPC_T_RESULT, 0x00000002); l5mipc_msg_send_cnf(track_ptr->track_id, msg_ptr); mipc_msg_deinit(msg_ptr); } return KAL_TRUE; }
最新发布
08-08
from libs.PipeLine import PipeLine, ScopedTiming from libs.AIBase import AIBase from libs.AI2D import Ai2d import os import ujson from media.media import * from time import * import nncase_runtime as nn import ulab.numpy as np import time import image import aidemo import random import gc import sys # 自定义人脸检测任务类 class FaceDetApp(AIBase): def __init__(self,kmodel_path,model_input_size,anchors,confidence_threshold=0.25,nms_threshold=0.3,rgb888p_size=[1280,720],display_size=[1920,1080],debug_mode=0): super().__init__(kmodel_path,model_input_size,rgb888p_size,debug_mode) # kmodel路径 self.kmodel_path=kmodel_path # 检测模型输入分辨率 self.model_input_size=model_input_size # 置信度阈值 self.confidence_threshold=confidence_threshold # nms阈值 self.nms_threshold=nms_threshold self.anchors=anchors # sensor给到AI的图像分辨率,宽16字节对齐 self.rgb888p_size=[ALIGN_UP(rgb888p_size[0],16),rgb888p_size[1]] # 视频输出VO分辨率,宽16字节对齐 self.display_size=[ALIGN_UP(display_size[0],16),display_size[1]] # debug模式 self.debug_mode=debug_mode # 实例化Ai2d,用于实现模型预处理 self.ai2d=Ai2d(debug_mode) # 设置Ai2d的输入输出格式和类型 self.ai2d.set_ai2d_dtype(nn.ai2d_format.NCHW_FMT,nn.ai2d_format.NCHW_FMT,np.uint8, np.uint8) # 配置预处理操作,这里使用了pad和resize,Ai2d支持crop/shift/pad/resize/affine,具体代码请打开/sdcard/app/libs/AI2D.py查看 def config_preprocess(self,input_image_size=None): with ScopedTiming("set preprocess config",self.debug_mode > 0): # 初始化ai2d预处理配置,默认为sensor给到AI的尺寸,可以通过设置input_image_size自行修改输入尺寸 ai2d_input_size=input_image_size if input_image_size else self.rgb888p_size # 计算padding参数,并设置padding预处理 self.ai2d.pad(self.get_pad_param(), 0, [104,117,123]) # 设置resize预处理 self.ai2d.resize(nn.interp_method.tf_bilinear, nn.interp_mode.half_pixel) # 构建预处理流程,参数为预处理输入tensor的shape和预处理输出的tensor的shape self.ai2d.build([1,3,ai2d_input_size[1],ai2d_input_size[0]],[1,3,self.model_input_size[1],self.model_input_size[0]]) # 自定义后处理,results是模型输出的array列表,这里调用了aidemo库的face_det_post_process接口 def postprocess(self,results): with ScopedTiming("postprocess",self.debug_mode > 0): res = aidemo.face_det_post_process(self.confidence_threshold,self.nms_threshold,self.model_input_size[0],self.anchors,self.rgb888p_size,results) if len(res)==0: return res else: return res[0] # 计算padding参数 def get_pad_param(self): dst_w = self.model_input_size[0] dst_h = self.model_input_size[1] # 计算最小的缩放比例,等比例缩放 ratio_w = dst_w / self.rgb888p_size[0] ratio_h = dst_h / self.rgb888p_size[1] if ratio_w < ratio_h: ratio = ratio_w else: ratio = ratio_h new_w = (int)(ratio * self.rgb888p_size[0]) new_h = (int)(ratio * self.rgb888p_size[1]) dw = (dst_w - new_w) / 2 dh = (dst_h - new_h) / 2 top = (int)(round(0)) bottom = (int)(round(dh * 2 + 0.1)) left = (int)(round(0)) right = (int)(round(dw * 2 - 0.1)) return [0,0,0,0,top, bottom, left, right] # 自定义人脸解析任务类 class FaceParseApp(AIBase): def __init__(self,kmodel_path,model_input_size,rgb888p_size=[1920,1080],display_size=[1920,1080],debug_mode=0): super().__init__(kmodel_path,model_input_size,rgb888p_size,debug_mode) # kmodel路径 self.kmodel_path=kmodel_path # 检测模型输入分辨率 self.model_input_size=model_input_size # sensor给到AI的图像分辨率,宽16字节对齐 self.rgb888p_size=[ALIGN_UP(rgb888p_size[0],16),rgb888p_size[1]] # 视频输出VO分辨率,宽16字节对齐 self.display_size=[ALIGN_UP(display_size[0],16),display_size[1]] # debug模式 self.debug_mode=debug_mode # 实例化Ai2d,用于实现模型预处理 self.ai2d=Ai2d(debug_mode) # 设置Ai2d的输入输出格式和类型 self.ai2d.set_ai2d_dtype(nn.ai2d_format.NCHW_FMT,nn.ai2d_format.NCHW_FMT,np.uint8, np.uint8) # 配置预处理操作,这里使用了affine,Ai2d支持crop/shift/pad/resize/affine,具体代码请打开/sdcard/app/libs/AI2D.py查看 def config_preprocess(self,det,input_image_size=None): with ScopedTiming("set preprocess config",self.debug_mode > 0): # 初始化ai2d预处理配置,默认为sensor给到AI的尺寸,可以通过设置input_image_size自行修改输入尺寸 ai2d_input_size=input_image_size if input_image_size else self.rgb888p_size # 计算仿射变换矩阵并设置affine预处理 matrix_dst = self.get_affine_matrix(det) self.ai2d.affine(nn.interp_method.cv2_bilinear,0, 0, 127, 1,matrix_dst) # 构建预处理流程,参数为预处理输入tensor的shape和预处理输出的tensor的shape self.ai2d.build([1,3,ai2d_input_size[1],ai2d_input_size[0]],[1,3,self.model_input_size[1],self.model_input_size[0]]) # 自定义后处理,results是模型输出的array列表,这里将第一个输出返回 def postprocess(self,results): with ScopedTiming("postprocess",self.debug_mode > 0): return results[0] def get_affine_matrix(self,bbox): # 获取仿射矩阵,用于将边界框映射到模型输入空间 with ScopedTiming("get_affine_matrix", self.debug_mode > 1): # 设置缩放因子 factor = 2.7 # 从边界框提取坐标和尺寸 x1, y1, w, h = map(lambda x: int(round(x, 0)), bbox[:4]) # 模型输入大小 edge_size = self.model_input_size[1] # 平移距离,使得模型输入空间的中心对准原点 trans_distance = edge_size / 2.0 # 计算边界框中心点的坐标 center_x = x1 + w / 2.0 center_y = y1 + h / 2.0 # 计算最大边长 maximum_edge = factor * (h if h > w else w) # 计算缩放比例 scale = edge_size * 2.0 / maximum_edge # 计算平移参数 cx = trans_distance - scale * center_x cy = trans_distance - scale * center_y # 创建仿射矩阵 affine_matrix = [scale, 0, cx, 0, scale, cy] return affine_matrix # 人脸解析任务 class FaceParse: def __init__(self,face_det_kmodel,face_parse_kmodel,det_input_size,parse_input_size,anchors,confidence_threshold=0.25,nms_threshold=0.3,rgb888p_size=[1920,1080],display_size=[1920,1080],debug_mode=0): # 人脸检测模型路径 self.face_det_kmodel=face_det_kmodel # 人脸解析模型路径 self.face_pose_kmodel=face_parse_kmodel # 人脸检测模型输入分辨率 self.det_input_size=det_input_size # 人脸解析模型输入分辨率 self.parse_input_size=parse_input_size # anchors self.anchors=anchors # 置信度阈值 self.confidence_threshold=confidence_threshold # nms阈值 self.nms_threshold=nms_threshold # sensor给到AI的图像分辨率,宽16字节对齐 self.rgb888p_size=[ALIGN_UP(rgb888p_size[0],16),rgb888p_size[1]] # 视频输出VO分辨率,宽16字节对齐 self.display_size=[ALIGN_UP(display_size[0],16),display_size[1]] # debug_mode模式 self.debug_mode=debug_mode # 人脸检测任务类实例 self.face_det=FaceDetApp(self.face_det_kmodel,model_input_size=self.det_input_size,anchors=self.anchors,confidence_threshold=self.confidence_threshold,nms_threshold=self.nms_threshold,rgb888p_size=self.rgb888p_size,display_size=self.display_size,debug_mode=0) # 人脸解析实例 self.face_parse=FaceParseApp(self.face_pose_kmodel,model_input_size=self.parse_input_size,rgb888p_size=self.rgb888p_size,display_size=self.display_size) # 人脸检测预处理配置 self.face_det.config_preprocess() # run函数 def run(self,input_np): # 执行人脸检测 det_boxes=self.face_det.run(input_np) parse_res=[] for det_box in det_boxes: # 对检测到每一个人脸进行人脸解析 self.face_parse.config_preprocess(det_box) res=self.face_parse.run(input_np) parse_res.append(res) return det_boxes,parse_res # 绘制人脸解析效果 def draw_result(self,pl,dets,parse_res): pl.osd_img.clear() if dets: draw_img_np = np.zeros((self.display_size[1],self.display_size[0],4),dtype=np.uint8) draw_img=image.Image(self.display_size[0], self.display_size[1], image.ARGB8888,alloc=image.ALLOC_REF,data=draw_img_np) for i,det in enumerate(dets): # (1)将人脸检测框画到draw_img x, y, w, h = map(lambda x: int(round(x, 0)), det[:4]) x = x * self.display_size[0] // self.rgb888p_size[0] y = y * self.display_size[1] // self.rgb888p_size[1] w = w * self.display_size[0] // self.rgb888p_size[0] h = h * self.display_size[1] // self.rgb888p_size[1] aidemo.face_parse_post_process(draw_img_np,self.rgb888p_size,self.display_size,self.parse_input_size[0],det.tolist(),parse_res[i]) pl.osd_img.copy_from(draw_img) if __name__=="__main__": # 显示模式,默认"hdmi",可以选择"hdmi"和"lcd",k230d受限于内存不支持 display_mode="hdmi" if display_mode=="hdmi": display_size=[1920,1080] else: display_size=[800,480] # 人脸检测模型路径 face_det_kmodel_path="/sdcard/examples/kmodel/face_detection_320.kmodel" # 人脸解析模型路径 face_parse_kmodel_path="/sdcard/examples/kmodel/face_parse.kmodel" # 其他参数 anchors_path="/sdcard/examples/utils/prior_data_320.bin" rgb888p_size=[1920,1080] face_det_input_size=[320,320] face_parse_input_size=[320,320] confidence_threshold=0.5 nms_threshold=0.2 anchor_len=4200 det_dim=4 anchors = np.fromfile(anchors_path, dtype=np.float) anchors = anchors.reshape((anchor_len,det_dim)) # 初始化PipeLine,只关注传给AI的图像分辨率,显示的分辨率 pl=PipeLine(rgb888p_size=rgb888p_size,display_size=display_size,display_mode=display_mode) pl.create() fp=FaceParse(face_det_kmodel_path,face_parse_kmodel_path,det_input_size=face_det_input_size,parse_input_size=face_parse_input_size,anchors=anchors,confidence_threshold=confidence_threshold,nms_threshold=nms_threshold,rgb888p_size=rgb888p_size,display_size=display_size) try: while True: os.exitpoint() with ScopedTiming("total",1): img=pl.get_frame() # 获取当前帧 det_boxes,parse_res=fp.run(img) # 推理当前帧 fp.draw_result(pl,det_boxes,parse_res) # 绘制当前帧推理结果 pl.show_image() # 展示推理效果 gc.collect() except Exception as e: sys.print_exception(e) finally: fp.face_det.deinit() fp.face_parse.deinit() pl.destroy() 以上是全部代码,请帮我解决问题 Traceback (most recent call last): File "<stdin>", line 156, in <module> Exception: IDE interrupt MPY: soft reboot CanMV v1.2.2(based on Micropython e00a144) on 2025-06-16; k230_canmv_lckfb with K230
07-14
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值