首页 > 其他分享 >解决 ChatGLM.CPP+clBlast 编译错误(也适用于SD.CPP)

解决 ChatGLM.CPP+clBlast 编译错误(也适用于SD.CPP)

时间:2023-09-18 15:22:05浏览次数:50  
标签:LIB EXTRA clBlast CLBLAST find ChatGLM CPP GGML clblast

首先安装 OpenCL 和 clblast:

vcpkg install opencl clblast

下载GitHub 上的源码:

git clone --recurse-submodules https://github.com/li-plus/chatglm.cpp
cd chatglm.cpp

这个项目 GGML 子仓库中, third_party/ggml/src/CMakeList.txt 有个错误。打开并找到 178-183 行:

	find_path(CLBLAST_INC NAMES cblast.h PATHS ${CLBLAST_INCLUDE_SEARCH_PATHS})
	find_library(CLBLAST_LIB NAMES clblast)
	if (CLBLAST_LIB)
		message(STATUS "clBLAST found")

		set(GGML_EXTRA_LIBS  ${GGML_EXTRA_LIBS}  ${CLBLAST_LIB})

可以看到头文件名称写错(应该是clblast.h)。然后没有添加CLBLAST_INC到总的包含路径里面。并且 clBlast 一来 OpenCL,也没有添加 OpenCL 的静态库,会导致找不到各种clxxxx函数。

改成:

    find_path(CLBLAST_INC NAMES clblast.h PATHS ${CLBLAST_INCLUDE_SEARCH_PATHS})
	find_library(CLBLAST_LIB NAMES clblast)
	find_library(OPENCL_LIB NAMES OpenCL)
	if (CLBLAST_LIB AND OPENCL_LIB AND CLBLAST_INC)
		message(STATUS "clBLAST found")

		set(GGML_EXTRA_INCS  ${GGML_EXTRA_INCS}  ${CLBLAST_INC})
		set(GGML_EXTRA_LIBS  ${GGML_EXTRA_LIBS}  ${CLBLAST_LIB}  ${OPENCL_LIB})

然后执行 CMake 命令:

cmake -B build -DGGML_CLBLAST=ON
cmake --build build -j --config Release

如果还是出现【clblast not found】,说明 CMake 并没有找到 VCPKG 安装的库文件。需要手动指定:

cmake -B build -DGGML_CLBLAST=ON -DCMAKE_PREFIX_PATH="<cmake_lib_path>;<cmake_inc_path>"

<cmake_lib_path><cmake_inc_path>换成 VCPKG 的存储路径,我的开发环境中大概是c:/vcpkg/installed/x64-windows/libc:/vcpkg/installed/x64-windows/include

标签:LIB,EXTRA,clBlast,CLBLAST,find,ChatGLM,CPP,GGML,clblast
From: https://www.cnblogs.com/apachecn/p/17711925.html

相关文章

  • c/cpp: main() - envp
    c/cpp: main()-envp    1. main(intargc, char*argv[], char*envp[]) -envp1[wit@fedoranull]$catenvp_main.c2#include<stdio.h>3#include<stdlib.h>456intmain(intargc,char*argv[],char*envp[])7{8int......
  • C与CPP常见编译工具链与构建系统简介
    笔者最近在研究CEF的CMake工程,心血来潮想要对各种编译工具链以及构建系统做一个简单的总结,于是就有了本文。本文不会讲解任何关于C/C++语言方面的内容,主要C/C++的编译出发,介绍各种编译工具链与构建系统的关系。此外,由于笔者水平有限,无法从非常专业的角度剖析C/C++的语言特性与编译......
  • cpp: vscode 配置C,C++
    下载编译器MinGW并解压官网页面:https://www.mingw-w64.org/下载页面:https://sourceforge.net/projects/mingw-w64/files/https://cmake.org/download/需要环境变量进行设置task.json:{"tasks":[{"type":"cppbuild",&quo......
  • LLamaSharp - .NET Binding for llama.cpp
    https://github.com/SciSharp/LLamaSharp TheC#/.NETbindingof llama.cpp.ItprovidesAPIstoinferencetheLLaMaModelsanddeployitonlocalenvironment.ItworksonbothWindows,LinuxandMACwithoutrequirmentforcompilingllama.cppyourself.Its......
  • 【3rd Party】Cpp 中使用 Protobuf
    前置条件:【Protoc】VS2019(VS平台)使用CMake编译安装、使用Protobuf库【ToolChains】CLion(VS2019)+CMake+Vcpkg的使用ProtoBuf的定义和描述ProtocolBuffers是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。Pro......
  • windows vs使用grpc-cpp的坑
    1.通过vcpkg安装protoc和grpc-cpp2.生成proto协议代码:protoc-I..-I.--cpp_out=. test.proto3.生成grpc服务代码:protoc-I..-I.--grpc_out=.--plugin=protoc-gen-grpc=`full_path\grpc_cpp_plugin.exe` test.proto4.创建vs工程,引用生成的代码,引用vcpkg安装的pro......
  • 使用Nodejs的addon导入cpp生成的dll时出现的问题记录
    在使用Nodejs的addon导入自己编写的cpp的dll时出现的一系列问题记录标签:__declspec、Napi、LoadLibraryA、GetLastError、dumpbin/exports。正常创建一个使用Napi的nodejsaddon项目(网上都有,在这里不赘述),主要代码如下:#include<napi.h>#include<iostream>#include<atlst......
  • ChatGLM2 源码解析:`ChatGLMModel`
    #完整的GLM模型,包括嵌入层、编码器、输出层classChatGLMModel(ChatGLMPreTrainedModel):def__init__(self,config:ChatGLMConfig,device=None,empty_init=True):super().__init__(config)#如果设置了`empty_init`,创建任何PyTorch模块时,不初......
  • ChatGLM2 源码解析:`ChatGLMForConditionalGeneration.forward`
    classChatGLMForConditionalGeneration(ChatGLMPreTrainedModel):def__init__(self,config:ChatGLMConfig,empty_init=True,device=None):super().__init__(config)self.max_sequence_length=config.max_lengthself.transformer=C......
  • ChatGLM2 源码解析:`GLMTransformer`
    #编码器模块,包含所有GLM块classGLMTransformer(torch.nn.Module):"""Transformerclass."""def__init__(self,config:ChatGLMConfig,device=None):super(GLMTransformer,self).__init__()self.fp32_residual_co......