登临科技AI加速卡Hamming V2驱动与SDK安装后的模块测试(python)

介绍

登临科技是国内领先的通用AI计算平台公司,其自主研发的Goldwasser系列AI加速卡基于创新的GPU +架构,兼具通用性与高效能,已在多个行业实现规模化商业落地。以下从技术特点、产品矩阵、应用场景及生态合作等方面展开介绍:

一、核心技术与架构优势

1.GPU +片内异构架构

登临科技首创的软件定义片内异构架构(GPU+)融合了 GPGPU 的可编程性与 ASIC 的高效性,通过集成Tensor引擎和GPGPU引擎,实现计算资源的动态调度。这一设计解决了传统GPU能效比低的问题,实测显示,在40W TDP下可提供128TOPS算力,能效比优于国际主流推理卡3倍以上。此外,架构通过片上高速数据交换网络和内存管理技术,显著降低对外存带宽的依赖,减少数据搬运开销。

2.全面兼容主流生态

硬件兼容:支持CUDA/OpenCL编程模型,可无缝接入现有软件生态,降低客户迁移成本。

框架支持:原生适配PyTorch、TensorFlow、飞桨等主流深度学习框架,并通过统一工具链(如Hamming)实现跨平台代码移植。

软件栈统一:云端与边缘侧采用同一套SDK,打破场景开发壁垒,支持快速部署。

3.自主可控与安全认证

核心技术完全自主研发,已获得“可配置的异构人工智能处理器”专利(2025年授权),提升任务灵活性和能效。产品通过严格的环境可靠性测试、EMC 认证及安规测试,满足工业级稳定性要求。

二、应用场景与客户案例

1.行业落地成果

智慧城市:与四维向量合作打造“端边云场”全场景方案,在智慧社区、城管等场景中实现视频分析与实时预警。

工业与能源:为国家电网、中国电信提供边缘计算解决方案,支持电力巡检、安全生产监测。

金融与应急:联合范特科技推出AR实景指挥调度平台,应用于应急响应、金融风控等领域,提升决策效率。

大模型适配:完成DeepSeek等大模型适配,与联想开天合作推出国产信创PC行业首款AI+PC硬件。

2.能效与成本优势

在同样工艺下,Goldwasser以更小芯片面积实现更高算力密度,例如40W TDP下的128TOPS算力对比国际主流产品,功耗降低50%以上,同时减少30%的芯片面积。这一特性帮助客户降低数据中心总拥有成本(TCO),尤其适合对能效敏感的边缘和云端场景。

三、生态合作与行业认可

1.战略合作与生态共建

飞桨生态:加入飞桨硬件生态共创计划,完成II级产品适配,共同推出软硬一体方案。

登临瀚海计划:联合数十家合作伙伴(包括服务器厂商、算法公司)构建开放生态,推动国产化AI解决方案落地。

产业链协同:与华为、长城等企业合作,适配国产CPU(如飞腾)和操作系统,满足信创需求。

2.行业荣誉与市场地位

2023年,Goldwasser系列荣获“中国芯”优秀技术创新产品奖,被行业视为国产GPU技术突破的标杆。

截至2025年,登临科技已实现数万片加速卡量产交付,客户覆盖互联网、金融、能源等领域头部企业。

四、未来布局与技术迭代

大模型与生成式AI

新一代Goldwasser II系列支持多种数据精度(FP32/FP16/INT8),内存容量最高达128GB,专为大模型训推场景优化。2025年获得的“可配置异构处理器”专利进一步提升了架构灵活性,可动态适配不同神经网络需求。

端边云一体化战略

登临科技正推动边缘加速卡(如Goldwasser UL MXM)与云端产品的协同,结合飞桨等框架的端到端部署能力,为智能制造、自动驾驶等场景提供全链路解决方案。

总结

登临科技的Goldwasser系列AI加速卡以高效能、低功耗、强兼容为核心竞争力,通过技术创新和生态整合,已成为国产替代的重要力量。其产品不仅在性能上对标国际主流产品,更通过软件定义架构和开放合作模式,为行业提供了灵活、可靠的AI算力支持。随着大模型和边缘计算需求的爆发,登临科技有望在国产AI芯片领域持续领跑。

测试(python)

以上为相关介绍,以下为相关模块测试,测试为python模块。

1.驱动验证安装

dlsmi

显示如下

进行实时观测,运行以下代码

watch -n 1 dlsmi

将这个显示分屏出去以便观测

2.启动sdk,python环境,python环境

根据自己的安装启动,不同安装启动方式略有所异

#启动sdk环境
sudo /usr/local/denglin/sdk/env.sh
source /usr/local/denglin/sdk/env.sh

#启动python3.9(torch_dl_py39)环境
source torch_dl_py39/bin/activate

模块测试需要的环境启动后进入测试模块所在位置,根据你的解压进入

cd denglinkeji/DlDeepToolkit-master-v2_202403141628/python/dl_infer_demo/
ls

这个windows下显示的文件,文件名大致一样即可,除了这张图片外别的都是在xshell和xftp中截取,想知道更详细运行信息可以运行

cat README.md

3.进行这个demo的测试

python infer_pipeline.py

这个显示的图片为最后一部分,运行时注意观察分屏出去的dlsmi,驱动和sdk安装没问题,在测试最后会有一个进程在里面运行,但是时间会很短,注意观察。

运行完成后,界面会多出cpu_output_yolov5s.jpg和gpu_output_yolov5s.jpg这两张图片

拓展

这是自带的demo测试,下面为我们更改的代码下的测试,测试GPU1秒能处理多少张图片

1.将测试的图片传输至这里

最终测试的脚本为test3.py如下,进行对比看dlsmi有什么不同

2.编写test3.py

test3.py文件内容如下

# 导入必要的库
import logging  # 日志处理库
import os  # 操作系统功能库
import glob  # 文件路径匹配库
import time  # 时间处理模块,用于计时
from utils import nne_util, gpu_infer  # 导入自定义工具模块,包含神经网络引擎和GPU推理功能
from utils import config_util  # 配置文件处理工具
from utils import logging_util  # 日志初始化工具
from utils import case_util  # 测试用例处理工具
from utils import quantize_util  # 模型量化工具
from utils.constants import *  # 导入所有常量定义
from postprocess import postprocess_yolov3  # YOLOv3后处理模块
from postprocess import postprocess_yolov5s  # YOLOv5s后处理模块
import numpy as np  # 数值计算库

# 主程序入口
if __name__ == '__main__':
    # 加载配置文件
    config = config_util.load_config()

    # 初始化日志系统
    logging_util.init_logging(config[LOGGING])
    # 获取日志记录器实例
    logger = logging.getLogger(LOGGING_NAMESPACE)

    # 解析配置文件中的参数
    # 获取测试用例名称(如果配置中存在)
    case_name = config[CASE_NAME] if CASE_NAME in config and config[CASE_NAME] else None
    # 获取模型路径
    model_path = config[MODEL_PATH]
    # 获取比较模板配置
    compares = config[COMPARE_TEMPLATES]
    # 获取输出名称(如果配置中存在)
    outputs_name = config[OUTPUTS_NAME] if OUTPUTS_NAME in config else None

    # 打印模型路径
    print("model path:", model_path)

    # 准备输入数据
    inputs_datas = nne_util.generate_input(config)
    # 获取批处理大小
    batch_size = len(inputs_datas)

    # 设置图片文件夹路径和输出文件夹路径
    images_folder = 'data/images/testimg/'  # 测试图片所在文件夹
    output_folder = 'outputs/'  # 处理结果输出文件夹

    # 创建输出文件夹(如果不存在)
    os.makedirs(output_folder, exist_ok=True)

    # 获取文件夹中所有图片的路径(支持多种常见图片格式)
    image_extensions = ['*.jpg', '*.jpeg', '*.png', '*.bmp', '*.gif']
    image_paths = []
    for ext in image_extensions:
        # 查找匹配的文件并添加到列表
        image_paths.extend(glob.glob(os.path.join(images_folder, ext)))

    # 对图片路径进行排序,确保处理顺序一致
    image_paths.sort()

    # 记录图片总数并打印
    total_images = len(image_paths)
    print(f"发现 {total_images} 张图片,将进行批量处理")

    # 遍历所有需要比较的配置
    for do_compare in config[DO_COMPARES]:
        # 如果有测试用例名称,打印测试用例运行信息
        if case_name:
            case_util.print_case_run(config, do_compare, batch_size)

        # 从模型路径中提取网络类型(文件名去掉扩展名)
        network_type = os.path.splitext(os.path.basename(model_path))[0]

        # 获取输入形状配置(如果存在)
        input_shape = config['input_shape'] if "input_shape" in config else None
        print('input_shape:', input_shape)

        # 如果有输入形状配置,则构建转换命令并执行
        if input_shape:
            input_shape_command = ""
            # 构建输入形状命令字符串
            for input_node_name in input_shape:
                node_shape = input_shape[input_node_name]
                input_shape_command += (input_node_name + ":[" + node_shape + "]")
            # 构建模型转换命令
            convert_cmd = "python3 -m dl convert " + model_path + " --input-shapes " + input_shape_command
            print("convert cmd:", convert_cmd)
            # 执行转换命令
            os.system(convert_cmd)

            # 生成转换后的模型路径
            rly_model_path = os.path.splitext(os.path.basename(model_path))[0] + ".rlym"

        # 获取当前比较配置
        compare_config = compares[do_compare]

        # 确定GPU模型路径
        if MODEL_PATH in compare_config and compare_config[MODEL_PATH]:
            # 如果比较配置中指定了模型路径,则使用该路径
            gpu_model_path = compare_config[MODEL_PATH]
        else:
            # 否则根据是否需要量化来处理
            if QUANTIZE in compare_config and compare_config[QUANTIZE]:
                # 量化模型
                gpu_model_path = quantize_util.quantize_model(rly_model_path, inputs_datas, compare_config[QUANTIZE])
            else:
                # 使用转换后的模型
                gpu_model_path = rly_model_path
            print("gpu model path:", gpu_model_path)

        # 记录GPU推理开始日志
        logger.info("start gpu infer: {}, {}".format(do_compare, gpu_model_path))
        # 执行GPU推理
        pred_gpu = gpu_infer.infer(gpu_model_path, inputs_datas, compare_config)

        # 记录开始处理图片的时间(用于计算处理速度)
        start_time = time.time()

        # 批量处理文件夹中的所有图片
        for img_path in image_paths:
            # 获取图片文件名(不含路径)
            img_filename = os.path.basename(img_path)
            # 生成输出文件路径
            output_filename = f"gpu_output_{network_type}_{img_filename}"
            output_path = os.path.join(output_folder, output_filename)

            print(f"处理图片: {img_path} -> 输出到: {output_path}")

            # 根据网络类型选择对应的后处理函数
            if network_type == 'yolov5s':
                postprocess_yolov5s.postprocess(pred_gpu, img_path, output_path)
            elif network_type == 'yolov3':
                postprocess_yolov3.postprocess(pred_gpu, img_path, output_path)

        # 计算处理所有图片的总耗时(秒)
        total_time = time.time() - start_time

        # 计算并输出每秒处理的图片数量
        if total_time > 0:
            images_per_second = total_images / total_time
            print(f"\nGPU处理速度: {images_per_second:.2f} 张/秒")
            print(f"处理 {total_images} 张图片总耗时: {total_time:.2f} 秒")
        else:
            print("\n处理时间过短,无法准确计算速度")

    # 清理生成的模型文件
    os.system('rm ./*.rlym')
    # 打印测试用例通过信息
    case_util.print_case_pass(config, do_compare, batch_size)

 3.运行

python test3.py

最后的输出图片显示在这里

以上就是本文的全部内容,多谢各位的捧场,有不足之处尽请谅解。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐