所以我尝试将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) 有没有来自LLVM社区的人知道是否有办法为整个输入源代码生成CFG使用opt -dot-cfg foo.ll(.bc)
?因为这个每个功能产生CFG,因此功能之间的连接将被忽略.
旧的分析工具似乎已经贬值了.
我知道通过使用itertools
,我们可以生成products
,permutations
和combinations
.但是,考虑如下情况:
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(最大值).
我是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) 我使用 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 指令的任何定义,例如vmem
,vX
等。我的 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) 我有serveral的定制环境变量和函数在我的〜/ .bash_profile中,我想,当我开始我的屏幕会被自动调用screen -D -R
,但显然将source ~/.bash_profile
在~/.screenrc
没有解决我的问题。
在每个新屏幕上,我都必须手动获取 bash_profile。
我注意到在创建新屏幕时找不到这个文件(当你创建新屏幕时,底部的一行显示正在执行的命令,它返回找不到文件。)
这真让我抓狂。我试图删除安装mac os x
el capitan
并重新安装的所有 python 包brew install python
和pip
. 我有:
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) 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 却关心这个?
我已经从源代码编译了 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) 有谁知道如何使用 LLVM 和 clang 进行数据依赖性/循环依赖性分析?
查看 pass 网页-da,显然已经提到该 pass 正在完成这项工作,但使用该 pass 不会改变输出中的任何内容,无论是大小./a.out
还是.ll
IR 代码。
我想知道我们是否可以使用 LLVM 平台理解 WAR、RAW 等以及其他依赖项。
我无法为我的具体问题找到任何合理的答案;我知道如何处理 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) llvm ×3
c ×2
llvm-clang ×2
llvm-ir ×2
python ×2
assembly ×1
awk ×1
c++ ×1
clang ×1
csv ×1
dependencies ×1
gcc ×1
hexagon-dsp ×1
homebrew ×1
intrinsics ×1
kernel ×1
linux ×1
matplotlib ×1
numpy ×1
opencl ×1
openmp ×1
permutation ×1
product ×1
replace ×1
screenrc ×1
simd ×1
stencils ×1
tensorflow ×1
vim ×1