小编Ami*_*mir的帖子

将OpenMP与llvm-clang一起使用

所以我尝试将OpenMP与最新版本的clang一起使用clang version 3.4.2 (tags/RELEASE_34/dot2-final).按照程序编译并添加PATH omp.h,然后使用以下命令编译我的hello.c:

clang -fopenmp hello.c
Run Code Online (Sandbox Code Playgroud)

然后运行它,仍然不能使用超过1个线程:

Bash-4.1$ ./a.out 
Hello from thread 0, nthreads 1
Run Code Online (Sandbox Code Playgroud)

PS:我试图手动导出,export OMP_NUM_THREADS=8但也没有解决任何问题.有任何想法吗?

更新:这是hello.c:

#include <omp.h>
#include <stdio.h>
int main() {
#pragma omp parallel
printf("Hello from thread %d, nthreads %d\n", omp_get_thread_num(), omp_get_num_threads());}
Run Code Online (Sandbox Code Playgroud)

c openmp llvm-clang

8
推荐指数
1
解决办法
2279
查看次数

使用LLVM为整个源代码生成CFG

有没有来自LLVM社区的人知道是否有办法为整个输入源代码生成CFG使用opt -dot-cfg foo.ll(.bc)?因为这个每个功能产生CFG,因此功能之间的连接将被忽略.

旧的分析工具似乎已经贬值了.

llvm llvm-ir control-flow-graph

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

使用python itertools生成自定义迭代

我知道通过使用itertools,我们可以生成products,permutationscombinations.但是,考虑如下情况:

max_allowed_len(sequence)= 3 
iterable= ABC
repeat= 3 (or just `range(len('ABC')`)
Run Code Online (Sandbox Code Playgroud)

我有兴趣len(sequence)=0 len(sequence)=1 OR len(sequence)=2 and len(sequence)=3通过重复r 来生成所有不同的可迭代ABC集.它有点奇怪的排列,重复允许不同的序列.所以我的空间是: 3^0 + 3^1 + 3^2 + 3^3= 1 + 3 + 9+ 27= 40 任何人都可以建议我如何在python甚至c/c ++中实现它?

例如:预期产量:

''0'(没有(序列长度为0))

序列长度= 1

'A'
'B'
'C'
Run Code Online (Sandbox Code Playgroud)

序列长度= 2

'AA'
'BB'
'CC'
'AB'
'AC',...
Run Code Online (Sandbox Code Playgroud)

序列长度= 3

'AAB'
'ABA'
'AAC'
'ACA'` 
Run Code Online (Sandbox Code Playgroud)

这继续下去.所以这里的长度为0,1,2和3(最大值).

c++ python product permutation python-itertools

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

通用OpenCL模板内核和主机

我是OpenCL的新手.

我想编写一个通用内核,以后我可以将其用途扩展到其他内存非合并模式,并将其与Rectangular stencil pattern简单配对(也避免了越界访问).

该内核控制本地内存(__local float ?lmem)的使用.

截至目前,我的.cl文件结构如下:

__kernel void kmain (
    __global float ?in ,
    __global float ?out ,
    __global float ?in2 ,
    __local float ?lmem)
{
    int wg_x = get group id(0);
    int wg_y = get group id(1);
    int wi_x = get local id(0);
    int wi_y = get local id(1);     

    // number of work units each work-item processes
    for (int iter_x = 0; iter_x< NUM_WUS_X-1, iter_x++ ) {
        for (int iter_y = …
Run Code Online (Sandbox Code Playgroud)

kernel generic-programming memory-access opencl stencils

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

使用指令内在函数在 Hexagon DSP 中启用 HVX SIMD

我使用 Hexagon-SDK 3.0 编译 HVX DSP 架构的示例应用程序。有许多与 Hexagon-LLVM 相关的工具可供使用,位于以下文件夹:

~/Qualcomm/HEXAGON_Tools/7.2.12/Tools/bin
Run Code Online (Sandbox Code Playgroud)

我编写了一个小示例来计算两个数组的乘积,以确保我可以利用 HVX 硬件加速。但是,当我生成程序集时,无论是使用-S,还是使用,-S -emit-llvm我都找不到 HVX 指令的任何定义,例如vmemvX等。我的 C 应用程序现在正在执行hexagon-sim,直到我设法找到一种在董事会也是如此。

据我了解,我需要在 C Intrinsics 中定义代码的 HVX 部分,但无法调整现有示例来满足我自己的需求。如果有人能够演示如何完成此过程,那就太好了。此外,在Hexagon V62 程序员参考手册中,许多内在指令都没有定义。

这是我用纯 C 编写的小应用程序:

~/Qualcomm/HEXAGON_Tools/7.2.12/Tools/bin
Run Code Online (Sandbox Code Playgroud)

我使用以下方法编译它hexagon-clang

hexagon-clang -v  -O2 -mv60 -mhvx-double -DLOG2VLEN=7 -I../../common/include -I../include -DQDSP6SS_PUB_BASE=0xFE200000 -o arrayProd.o  -c  arrayProd.c
Run Code Online (Sandbox Code Playgroud)

然后将其链接到subsys.o(在 DSK 中找到并已编译)并-lhexagon生成我的可执行文件:

hexagon-clang -O2 -mv60 -o arrayProd.exe  arrayProd.o subsys.o -lhexagon
Run Code Online (Sandbox Code Playgroud)

最后,使用 sim 运行它:

hexagon-sim -mv60 arrayProd.exe
Run Code Online (Sandbox Code Playgroud)

c assembly simd intrinsics hexagon-dsp

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

在 linux 屏幕中保留我的 env

我有serveral的定制环境变量和函数在我的〜/ .bash_profile中,我想,当我开始我的屏幕会被自动调用screen -D -R,但显然将source ~/.bash_profile~/.screenrc没有解决我的问题。

在每个新屏幕上,我都必须手动获取 bash_profile。

我注意到在创建新屏幕时找不到这个文件(当你创建新屏幕时,底部的一行显示正在执行的命令,它返回找不到文件。)

linux screenrc .bash-profile

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

哪个pip与哪个python?

这真让我抓狂。我试图删除安装mac os x el capitan并重新安装的所有 python 包brew install pythonpip. 我有:

which pip
/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/bin/pip
Run Code Online (Sandbox Code Playgroud)

which python
/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/bin/python
Run Code Online (Sandbox Code Playgroud)

所以使用 pip list

pip list
cycler (0.10.0)
matplotlib (1.5.1)
numpy (1.11.0)
pip (8.1.2)
python-dateutil (2.5.3)
pytz (2016.4)
setuptools (19.4)
six (1.10.0)
wheel (0.26.0)
Run Code Online (Sandbox Code Playgroud)

但是,当我运行 python 时,没有名为 numpy 和 matplotlib 的模块:

python
Python 2.7.11 (default, Jan 22 2016, 08:29:18) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> …
Run Code Online (Sandbox Code Playgroud)

python homebrew numpy matplotlib

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

使用 clang 与 gcc 编译嵌套函数

GCC我有一个 ac 文件,我可以使用如下命令毫无问题地进行编译:

gcc foo.c

但是使用相同的文件我收到在 main 中定义函数的错误clang

clang foo.c

foo:230:1: error: function definition is not allowed here
{
^
foo.c:241:1: error: function definition is not allowed here
{
^
foo.c:253:1: error: function definition is not allowed here
Run Code Online (Sandbox Code Playgroud)

这些错误实例是代码主要部分中新函数的定义。我想知道为什么 GCC 不关心这个问题,而 clang 却关心这个?

gcc llvm clang

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

使用 protoc 读取 Google Protocol buffer .pb 文件

我已经从源代码编译了 Google Protobuf 并生成了protoc二进制文件。现在,给定一个.pb文件,即,tensorflow_inception_v3_stripped_optimized_quantized.pb我如何在使用Tensorflow库的情况下读取其内容?

目前,我可以编写一个示例阅读器来转储我的.pb文件事件,然后tensorboard按如下方式读取:

import tensorflow as tf
from tensorflow.python.platform import gfile

INCEPTION_LOG_DIR = '/tmp/inception_v3_log'

if not os.path.exists(INCEPTION_LOG_DIR):
    os.makedirs(INCEPTION_LOG_DIR)
with tf.Session() as sess:
    model_filename = './model/tensorflow_inception_v3_stripped_optimized_quantized.pb'
    with gfile.FastGFile(model_filename, 'rb') as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())
        _ = tf.import_graph_def(graph_def, name='')
    #writer = tf.train.SummaryWriter(INCEPTION_LOG_DIR, graph_def)
    writer=tf.summary.FileWriter(INCEPTION_LOG_DIR, graph_def)                                                
    writer.close()
Run Code Online (Sandbox Code Playgroud)

但是,我不太明白我编译的原因protoc?它不能用作独立阅读器吗?或者,上面提到的 inception.pb 文件已经在 Tensorflow 的后端使用了 Protocol buffer 而不需要使用protoc?

像这样的命令确实会产生错误:

protoc --python_out=. tensorflow_inception_v3_stripped_optimized_quantized.pb
protoc …
Run Code Online (Sandbox Code Playgroud)

protocol-buffers tensorflow

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

使用 LLVM 进行数据和循环依赖性分析

有谁知道如何使用 LLVM 和 clang 进行数据依赖性/循环依赖性分析?

查看 pass 网页-da,显然已经提到该 pass 正在完成这项工作,但使用该 pass 不会改变输出中的任何内容,无论是大小./a.out还是.llIR 代码。

我想知道我们是否可以使用 LLVM 平台理解 WAR、RAW 等以及其他依赖项。

dependencies static-analysis llvm llvm-clang llvm-ir

3
推荐指数
1
解决办法
1887
查看次数

在 vim 中以列模式搜索并替换 csv

我无法为我的具体问题找到任何合理的答案;我知道如何处理 vim/sed 的替换搜索,但是我们如何处理 vim 中关于列模式搜索和替换的 csv。即我们的 csv 数据块如下:

automotive_bitcount,1,1,0,1,0,0,0,0,1,0,0,1,1,0,1,0,1,1,1,1,0,0,1,0,0
automotive_bitcount,1,0,0,1,0,1,0,1,1,1,0,0,0,0,1,1,1,0,1,0,1,0,0,1,0
automotive_bitcount,2,1,0,0,0,0,1,0,1,0,1,1,0,0,0,0,0,0,1,1,1,1,0,1,0
automotive_bitcount,2,0,0,0,1,1,0,0,1,0,0,0,1,1,1,0,0,0,0,1,1,1,1,0,0
automotive_bitcount,2,1,0,0,0,1,1,0,1,0,1,1,0,0,1,1,1,0,1,1,1,0,1,1,1
Run Code Online (Sandbox Code Playgroud)

它代表标题:

APP_NAME, DATASET, COMPILER FLAGS#1,...,COMPILER FLAG#24
Run Code Online (Sandbox Code Playgroud)

这是搜索和替换的语句;我想用相应的“编译器标志选项”(我把它放在这里)替换列中的那些“1”,所以最后我可以有类似这样的结构,以便将它们传递给编译器:

automotive_bitcount dataset1  -fno-guess-branch-probability -fno-ivopts -fno-tree-loop-optimize -fno-inline-functions  -fno-omit-frame-pointer -falign-jumps -fselective-scheduling  -fno-tree-pre  -fno-move-loop-invariants
Run Code Online (Sandbox Code Playgroud)

仅供记录,24 个编译器标志如下(按顺序排列):

compilerOptionList= "-funsafe-math-optimizations -fno-guess-branch-probability -fno-ivopts -fno-tree-loop-optimize -fno-inline-functions -funroll-all-loops -fno-omit-frame-pointer -falign-jumps -fselective-scheduling -fno-inline-small-functions -fno-tree-pre ftracer -fno-move-loop-invariants -O2 -fno-tree-ter -fprefethch-loop-arrays -max-unrolled-insns -fno-inline-functions-called-once -fno-cprop-registers -finline-functions -fno-schedule -fno-align-functions -fno-tree-dce -fno-merge-constants"
Run Code Online (Sandbox Code Playgroud)

csv vim awk replace multiple-columns

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