标签: libgomp

Xgboost 在尝试导入时抛出错误

我有一个使用 xgboost 的项目。我们现在将项目转移到容器。但是使用pip安装后,它抛出以下错误:

Traceback (most recent call last):
  File "restart_db.py", line 5, in <module>
    from autoai.core.providers import GlobalEnrichmentProvider
  File "/volumes/code/autoai/core/providers/__init__.py", line 1, in <module>
    from .files_providers import CsvProvider, TsvProvider, ExcelProvider, FileProvider
  File "/volumes/code/autoai/core/providers/files_providers.py", line 10, in <module>
    from .base import BaseProvider, BaseInMemoryProvider
  File "/volumes/code/autoai/core/providers/base.py", line 1, in <module>
    from autoai.models.dataset_connection import JoinTypes
  File "/volumes/code/autoai/models/__init__.py", line 5, in <module>
    from .classifier import Classifier
  File "/volumes/code/autoai/models/classifier.py", line 8, in <module>
    from eli5 import explain_prediction
  File "/volumes/dependencies/lib/python3.6/site-packages/eli5/__init__.py", line 53, in <module>
    from .xgboost …
Run Code Online (Sandbox Code Playgroud)

python openmp libgomp xgboost

13
推荐指数
1
解决办法
6792
查看次数

告诉GCC*不*链接libgomp所以它链接libiomp5而不是

我需要弄清楚我可以提供给gcc的编译器/链接器指令,以便在指定-fopenmp时它不会自动链接libgomp.

原因是我正试图建立英特尔的MKL BLAS.MKL需要添加单独的英特尔库来处理多线程(例如,libmkl_intel_thread或libmkl_gnu_thread).但是,用于链接MKL和libgomp的库并不适用于包括我在内的每个操作系统.这迫使我链接libmkl_intel_thread,而libmkl_intel_thread又必须链接libiomp5.

虽然我能够构建我的包,但是一些二进制文件链接到libgomp和libiomp5.我不积极,这是造成问题,但也出现了一些事故,联动组合是可疑的,即使它不会导致崩溃的肯定是一个可怕的低效率.

我正在尝试使用gcc 4.9.1.

不幸的是,避免-fopenmp不是一种选择.原因是这是用于编译由几个子包组成的相当大的包,其Makefile不是最好的形状,并且可以在以后编译来自其他源(插件)的其他包.强制通用编译器/链接器指令并不困难.但是,启用--enable-openmp会激活-fopenmp和定义用于触发与多线程相关的代码的定义.试图将三者(--enable-openmp,-fopenmp和链接到--enable-openmp的代码)分开是不可行的.

我查看了手册页,我没有看到任何允许选择openmp库的gcc指令.英特尔的论坛有一个非常古老的讨论,他们建议在-fopenmp之后立即指定一个静态库,然后是--as-needed.这似乎非常摇摇晃晃,并且还有很多潜在的干扰插件包.llvm-openmp似乎在某一点上考虑了-fopenmp = libiomp5指令,但它似乎已经在3.5版本中被删除了,我试图使用gcc.

谢谢.

gcc openmp intel-mkl libgomp

7
推荐指数
2
解决办法
5332
查看次数

使用 omp Parallel for 时出现分段错误,但不按顺序使用

我在使用 #pragma omp parallel 时遇到问题

基本上我有数百个 DNA 序列,我想用一种称为 NNLS 的算法来运行它们。

我认为并行执行会给我带来相当好的速度,因此我应用了 #pragma 运算符。

当我顺序运行它时,没有问题,结果很好,但是当我使用 #pragma omp parallel 运行它时,我在算法中遇到了段错误(有时在不同的点)。

#pragma omp parallel for
for(int i = 0; i < dir_count; i++ ) {

  int z = 0;
  int w = 0;
  struct dirent *directory_entry;
  char filename[256];

  directory_entry = readdir(input_directory_dh);

  if(strcmp(directory_entry->d_name, "..") == 0 || strcmp(directory_entry->d_name, ".") == 0) {
    continue;
  }

  sprintf(filename, "%s/%s", input_fasta_directory, directory_entry->d_name);

  double *count_matrix = load_count_matrix(filename, width, kmer);

  //normalize_matrix(count_matrix, 1, width)
  for(z = 0; z < width; z++) …
Run Code Online (Sandbox Code Playgroud)

c parallel-processing openmp libgomp

5
推荐指数
1
解决办法
9274
查看次数

主流编译器支持 OMPT 吗?

OpenMP 规范从 5.0 版开始定义了OMPT接口,以允许外部工具查询 openmp 运行时。

我想尝试一下,但我真的很困惑主流编译器实际上如何支持这一点。

  • GCC-11 声称扩展了对 openmp 5.0 的支持,但关于 OMPT,我找不到相应的ompt.h头文件(在我的例子中,Ubuntu 包libgcc-11-dev提供了omp.h)。

  • clang-12 确实提供了ompt.h(package ),但是示例程序libomp-12-dev的编译失败,第一个错误是,并且实际上在.unknown type name 'ompt_invoker_t'ompt.h

我不清楚目前的支持状况。我找不到 GCC 的准确状态,而 clang 提供了此信息https://clang.llvm.org/docs/OpenMPSupport.html,从中我无法弄清楚大部分完成的背后是什么。

谁能帮我找到最新信息或任何有关此的提示?

openmp clang libgomp gcc11

5
推荐指数
1
解决办法
480
查看次数

OpenMP + linux - 找不到GOMP_4.0

我一直在尝试使用gcc --version 4.9.4编译一个使用OpenMP的程序

> g++ -std=c++11 -o a.exe -fopenmp ./file.cpp
> ./a.exe
Run Code Online (Sandbox Code Playgroud)

./a.exe:/usr/lib64/libgomp.so.1:找不到版本"GOMP_4.0"(./a.exe要求)

我有一个名为"/usr/lib64/libgomp.so.1"的文件,我该如何解决?

linux multithreading openmp opensuse libgomp

4
推荐指数
1
解决办法
8567
查看次数

OpenMP:当代码以普通用户身份运行时,“libgomp:线程创建失败:资源暂时不可用”

当我运行以下示例代码时:

#include "stdio.h"
#include <omp.h>

int main(int argc, char *argv[])
{
  #pragma omp parallel
  {
   int NCPU,tid,NPR,NTHR;
    /* get the total number of CPUs/cores available for OpenMP */
   NCPU = omp_get_num_procs();
   /* get the current thread ID in the parallel region */
   tid = omp_get_thread_num();
   /* get the total number of threads available in this parallel region */
   NPR = omp_get_num_threads();
   /* get the total number of threads requested */
   NTHR = omp_get_max_threads();
   /* only execute this on the master …
Run Code Online (Sandbox Code Playgroud)

c linux gcc openmp libgomp

2
推荐指数
1
解决办法
2万
查看次数