国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

pytorch版本不匹配導(dǎo)致的THC.h: No such file or directory 、THCCudaMalloc not defined等問(wèn)題解決方案

這篇具有很好參考價(jià)值的文章主要介紹了pytorch版本不匹配導(dǎo)致的THC.h: No such file or directory 、THCCudaMalloc not defined等問(wèn)題解決方案。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

在論文復(fù)現(xiàn)安裝maskrcnn-benchmark依賴(lài)項(xiàng)的過(guò)程中,遇見(jiàn)了pytorch版本不匹配導(dǎo)致的無(wú)法安裝的問(wèn)題,現(xiàn)存的大多數(shù)內(nèi)容都建議安裝低版本的pytorch以解決問(wèn)題,但也不能總是這么干,不然自己這兼容性也太差了,順便也吐槽一下pytorch的兼容性問(wèn)題。在此總結(jié)一下,方便遇到相似問(wèn)題進(jìn)行參考。

主要遇到的問(wèn)題在于與THC相關(guān)的包很多都在pytorch更新的過(guò)程中被拋棄了,導(dǎo)致很多.cu文件在安裝依賴(lài)項(xiàng)時(shí)出現(xiàn)了不匹配的問(wèn)題。

本文中使用ubuntu-16.04.1操作系統(tǒng),pytorch版本為1.13.1,cuda版本為11.6,如pytorch更新后有更多的修改,請(qǐng)參閱其他文章。(以下問(wèn)題基本是由于pytorch由10.x更新為11.x后產(chǎn)生的不兼容問(wèn)題。)

Q1 fatal error: THC/THC.h: No such file or directory

開(kāi)始時(shí)首先遇到了頭文件無(wú)法引用的問(wèn)題,這個(gè)問(wèn)題參考了博客(138條消息) fatal error: THC/THC.h: No such file or directory_thc/thc.h: 沒(méi)有那個(gè)文件或目錄_o0stinger0o的博客-CSDN博客的內(nèi)容,時(shí)間在22年3月-4月之間,以及博客中提到的github代碼中更新的內(nèi)容。

可以看到,在/maskrcnn_benchmark/csrc/cuda文件夾中的所有以.cu結(jié)尾的代碼文件中刪除了下述頭文件:

#include <THC/THC.h>

并且把所有的

THCudaCheck(cudaGetLastError());

替換成了

AT_CUDA_CHECK(cudaGetLastError());

Q2 "THCCeilDiv" is undefined

之后又找到出現(xiàn)了這個(gè)問(wèn)題,再調(diào)查一番,發(fā)現(xiàn)pytorch后來(lái)沒(méi)有對(duì)這個(gè)函數(shù)的定義了,因此需要進(jìn)行更換。

基于這樣的想法,查閱資料找到Faster RCNN pytorch 1.0版調(diào)試(踩坑)過(guò)程記錄 | 碼農(nóng)家園 (codenong.com)中這樣的一段代碼:


//dim3 grid(std::min(THCCeilDiv(**, 512L), 4096L));
dim3 grid(std::min(((int)** + 512 -1) / 512, 4096));

可以用這樣的方式進(jìn)行替換:即對(duì)每個(gè).cu文件中調(diào)用THCCeilDiv(x,y)的地方,都把這個(gè)函數(shù)換成 (x+y-1)/y的形式,即可完成變換。

--2023.10.5--

在翻看的過(guò)程中找到了官方對(duì)此函數(shù)不再支持使用的文檔。

Migrate remainder of THCDeviceUtils.cuh to ATen by peterbell10 · Pull Request #65472 · pytorch/pytorch · GitHub

在所有使用此函數(shù)的文件中加入頭文件:

#include<ATen/ceil_div.h>

隨后進(jìn)行代碼替換:


//dim3 grid(std::min(THCCeilDiv(**, 512L), 4096L));
dim3 grid(std::min(at::ceil_div(**, 512), 4096));

即可實(shí)現(xiàn)與上面方法相同的修改。

--2023.10.5--

Q3 THCudaMalloc、THCudaFree THCState undefined

這三個(gè)問(wèn)題本質(zhì)是一個(gè)問(wèn)題,就是在更新過(guò)程中pytorch不再需要malloc和free,也自然不需要state用于幫助申請(qǐng)空間。這里參考了PyTorch 1.11 發(fā)布,帶來(lái) TorchData 和 functorch 兩個(gè)新庫(kù)_支持_linalg_Tensor (sohu.com)和(138條消息) 項(xiàng)目環(huán)境由pytorch1.10升級(jí)1.11中間要改的東西_pytorch1.11和1.10_小隨風(fēng)_hi的博客-CSDN博客兩個(gè)文檔,其中后一個(gè)文檔的2成功幫助我解決了Q3這個(gè)問(wèn)題。其實(shí)就是庫(kù)廢掉了,需要換一下使用的函數(shù)。

首先在用到Malloc和Free函數(shù)的文件中加入頭文件

(有可能需要將THCThrustAllocator.cuh替換為該文件或直接include)


#include <ATen/cuda/ThrustAllocator.h>

與之相關(guān)的共有三個(gè)語(yǔ)句,分別為用THCState構(gòu)建一個(gè)state,再將state輸入Malloc函數(shù)生成空間,隨后通過(guò)free釋放掉上述空間。

此處我們注釋掉THCState這句話(huà),因?yàn)樵谛碌膒ytorch中不需要使用該數(shù)據(jù)類(lèi)型來(lái)生成Malloc所需空間。


THCState *state = at::globalContext().lazyInitCUDA(); // TODO replace with getTHCState

之后我們將THCudaMalloc按照下文的形式修改(舊函數(shù)第二個(gè)參數(shù)作為新函數(shù)的唯一參數(shù))


//mask_dev = (unsigned long long*) THCudaMalloc(state, boxes_num * col_blocks * sizeof(unsigned long long));
mask_dev = (unsigned long long*) c10::cuda::CUDACachingAllocator::raw_alloc(boxes_num * col_blocks * sizeof(unsigned long long));

THCudaFree的替換方式如下:


// THCudaFree(state, mask_dev);
c10::cuda::CUDACachingAllocator::raw_delete(mask_dev);

注意一定要在最前面include一下ThrustAllocator.h頭文件,否則會(huì)報(bào)錯(cuò)!

至此,上述問(wèn)題全部解決,沒(méi)有降低pytorch版本即可解決問(wèn)題。我需要的內(nèi)容也成功編譯。

對(duì)于THC本身,在這個(gè)過(guò)程中我也了解了一下,可移步參考(138條消息) PyTorch源碼淺析(2):THC_邵政道的博客-CSDN博客_thcstate。不過(guò)這個(gè)也是過(guò)去式了,了解下就好了。還是要向前看的。

若后續(xù)還有什么新的相關(guān)內(nèi)容再更新一下子吧。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-417395.html

到了這里,關(guān)于pytorch版本不匹配導(dǎo)致的THC.h: No such file or directory 、THCCudaMalloc not defined等問(wèn)題解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 解決“VS 報(bào)No such file or directory“問(wèn)題

    解決“VS 報(bào)No such file or directory“問(wèn)題

    ? ? 今天在使用VS2015的calcOne工程,將工程由Debug版本改為Release版本,編譯時(shí)彈出\\\"無(wú)法打開(kāi)包括文件: “addFunc.h”: No such file or directory\\\"錯(cuò)誤,如圖(1)所示: 圖(1) Release版本報(bào)\\\"No such file or directory\\\"錯(cuò)誤 ? ? 但是,將工程由Release版本改回到Debug版本,卻編譯成功。從而判斷是

    2023年04月11日
    瀏覽(29)
  • Linux中提示No such file or directory解決方法

    Linux中提示No such file or directory解決方法

    說(shuō)明: 在linux下,./xxx.sh執(zhí)行shell腳本時(shí)會(huì)提示No such file or directory。但shell明明存在,為什么就是會(huì)提示這個(gè)呢? 這種其實(shí)是因?yàn)榫幋a方式不對(duì),如你在win下編輯sh,然后直接復(fù)制到linux下面 實(shí)現(xiàn): 有2種方法可以解決這個(gè)。 1)在Windows下轉(zhuǎn)換: 利用一些編輯器如UltraEdit或Edit

    2024年02月14日
    瀏覽(28)
  • Gitee Clone:No such file or directory問(wèn)題解決

    Gitee Clone:No such file or directory問(wèn)題解決

    使用TortoiseGit ssh克隆gitee倉(cāng)庫(kù)報(bào)以下錯(cuò): 第一步,檢查SSH公鑰是否配置成功,配置方法參考官方SSH 公鑰設(shè)置教程 第二步,使用Git Bash(使用Windows PowerShell或者CMD會(huì)出現(xiàn)亂碼)測(cè)試SSH配置成功 成功會(huì)有以下提示: 第三步,更換SSH Client 使用TortoiseGit克隆時(shí),如果到這一步還克隆失

    2024年02月03日
    瀏覽(23)
  • NXP MCUXPresso - .h: No such file or directory

    NXP MCUXPresso - .h: No such file or directory

    在嘗試遷移 openpnp - Smoothieware project 從gcc命令行 + MRI調(diào)試方式 到NXP MCUXpresso工程. 快摸進(jìn)門(mén)了. 按照C++工程編譯的. 頭文件路徑都加好了, 都是用的工作區(qū)的相對(duì)路徑. 文件也都在指定的位置. 但是編譯時(shí), 找不到頭文件, 報(bào)錯(cuò)如下: 這種報(bào)錯(cuò)分2種情況: 文件在不在? 告訴編譯器頭文

    2024年02月05日
    瀏覽(19)
  • openssl/bn.h: No such file or directory

    openssl/bn.h: No such file or directory

    ubuntu centos

    2024年02月14日
    瀏覽(22)
  • cat 查看文件時(shí)報(bào)錯(cuò)No such file or directory

    cat 查看文件時(shí)報(bào)錯(cuò)No such file or directory

    在平臺(tái)上生成一個(gè)文件,用ls 查看發(fā)現(xiàn)文件已經(jīng)存在了,并且是可執(zhí)行文件;為什么還是打不開(kāi)呢? --------- 后面發(fā)現(xiàn)是使用的集群不一樣,在大集群可以做上述的查看操作,但實(shí)際存儲(chǔ)文件的是小集群,大集群可能是沒(méi)有執(zhí)行小集群文件的相關(guān)權(quán)限,這時(shí)候需要查看文件內(nèi)

    2024年02月12日
    瀏覽(24)
  • docker執(zhí)行報(bào)錯(cuò):no such file or directory: unknown

    在linux下編譯的golang程序放到docker的busybox鏡像里無(wú)法執(zhí)行,顯示報(bào)錯(cuò)信息: exec: No such file or directory 在Docker化的今天, 我們經(jīng)常需要靜態(tài)編譯一個(gè)Go程序,以便方便放在Docker容器中。 即使你沒(méi)有引用其它的第三方包,只是在程序中使用了標(biāo)準(zhǔn)庫(kù) net ,你也會(huì)發(fā)現(xiàn)你編譯后的程

    2024年02月07日
    瀏覽(34)
  • 【docker】docker啟動(dòng)報(bào)錯(cuò)no such file or directory

    根據(jù)自己構(gòu)建的鏡像啟動(dòng)docker容器日志打印出現(xiàn),如下: 修改厚再次構(gòu)建鏡像即可

    2024年02月06日
    瀏覽(27)
  • FileNotFoundError: [Errno 2] No such file or directory:XXXX

    FileNotFoundError: [Errno 2] No such file or directory:XXXX

    今天在運(yùn)行readme的時(shí)候出現(xiàn)了一個(gè)錯(cuò)誤“”: ?File \\\"/mnt/d/Pycharm_workspace/pretrain/SMILES-BERT/fairseq/data/indexed_dataset.py\\\", line 64, in read_index ? ? with open(index_file_path(path), \\\'rb\\\') as f: FileNotFoundError: [Errno 2] No such file or directory: \\\'/datasets/outputs/train.idx\\\' 然后我去看文件是否存在,是存在的,這

    2024年02月01日
    瀏覽(20)
  • 已解決Python “No such file or directory“問(wèn)題報(bào)錯(cuò)

    已解決Python “No such file or directory“問(wèn)題報(bào)錯(cuò)

    本文摘要:本文已解決Python “No such file or directory“ 的相關(guān)報(bào)錯(cuò)問(wèn)題,并總結(jié)提出了幾種可用解決方案。同時(shí)結(jié)合人工智能GPT排除可能得隱患及錯(cuò)誤。 ?? 作者介紹:我是程序員洲洲,一個(gè)熱愛(ài)寫(xiě)作的非著名程序員。CSDN全棧優(yōu)質(zhì)領(lǐng)域創(chuàng)作者、華為云博客社區(qū)云享專(zhuān)家、阿里云

    2024年02月03日
    瀏覽(36)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包