小编Rah*_*ahn的帖子

如何将生成的llvm :: Module的LLVM-IR代码存储到字符串中?

FibonacciLLVM 的示例使用打印出LLVM IR errs() << *theModule.

是否有任何函数能够将生成的LLVM IR存储到(矢量)字符串或任何其他变量而不是仅将其打印出来?(例如std::string llvm_IR = theModule->getIR())

我一直在搜索llvm :: Module Class Reference并且没有得到任何帮助.

部分Fibonacci.cpp:

// CreateFibFunction之前定义为生成fibonacci函数.

LLVMContext Context;

// Create some module to put our function into it.
std::unique_ptr<Module> Owner(new Module("test", Context));
Module *theModule = Owner.get();

// We are about to create the "fib" function:
Function *FibF = CreateFibFunction(M, Context);
errs() << "OK\n";
errs() << "We just constructed this LLVM module:\n\n---------\n";
errs() << *theModule;
errs() << …
Run Code Online (Sandbox Code Playgroud)

llvm

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

如何安装启用 Jupyter 加载的软件包?

我已经imageio安装了:

$ pip install imageio
Requirement already satisfied: imageio in /Library/Python/2.7/site-packages
Requirement already satisfied: numpy in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from imageio)
Requirement already satisfied: pillow in /Library/Python/2.7/site-packages (from imageio)
Run Code Online (Sandbox Code Playgroud)

现在我.ipynb用 Jupyter加载一个文件:

$ jupyter notebook 1_notmnist.ipynb
Run Code Online (Sandbox Code Playgroud)

得到错误:

ImportError: No module named imageio
Run Code Online (Sandbox Code Playgroud)

我认为这与无法从 site-packages 目录加载通过 pip 安装的 Python 模块有关,并完全按照答案建议重新安装imageio

$ python -m pip install imageio

仍然没有帮助。

如何安装imageio启用 Jupyter 加载它?

更新:

终端: $ which python

/usr/bin/python

朱庇特:

$ import sys
print sys.executable
Run Code Online (Sandbox Code Playgroud)

/usr/local/opt/python/bin/python2.7

python jupyter-notebook

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

是否可以访问当前文件名?

是否可以通过以下方式访问 Rust 中的当前文件名

// main.rs
fn main() {
    println!("filename: {}", FILE_NAME);
}
Run Code Online (Sandbox Code Playgroud)

(这个程序应该打印filename: main.rs

rust

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

是否可以更改DrRacket/Scheme搜索/引用库的顺序?

我按照SICP 3.3.3的说明创建一个表.

这是code_0.scm:

;code_0.scm
#lang scheme
(require rnrs/base-6)
(require rnrs/mutable-pairs-6)

(define nil '())

(define (make-table)
  (list '*table*))

(define (assoc key records)
  (cond ((null? records)
         false)
        ((equal? key (caar records))
         (car records))
        (else
         (assoc key (cdr records)))))

(define (insert! key value table)
  (let ((record (assoc key (cdr table))))
    (if record
        (set-cdr! record value)
        (set-cdr! table
                  (cons (cons key value)
                        (cdr table)))))
  'OK)

(define (lookup key table)
  (let ((record (assoc key (cdr table))))
    (if record
        (cdr record)
        false)))


(define table …
Run Code Online (Sandbox Code Playgroud)

scheme sicp racket

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

为什么在函数定义中合法进行自我调用但对于值是非法的?

计算机程序的结构和解释(SICP)3.5.2引入了无限流:

(define ones
  (cons-stream 1 ones))
Run Code Online (Sandbox Code Playgroud)

此代码在DrRacket中不起作用,错误如下:

一个:未定义; 在定义之前不能引用标识符

其他代码如下:

(define (integers-starting-from n)
  (cons-stream n
               (integers-starting-from (+ n 1))))

(define integers (integers-starting-from 1))
Run Code Online (Sandbox Code Playgroud)

产生错误:

交互禁用

(陷入无限循环?)

据我所知(SICP),实现无限流的关键是延迟评估:

(define (delay exp)
  (lambda () exp))

(define (cons-stream a b)
  (cons a
        (delay b)))
Run Code Online (Sandbox Code Playgroud)

有了这个cons-stream,无限流仍然是非法的.

这样的数据结构让我想起了递归函数,在其定义中,自调用是合法的(在编译中)是否在实际退出之内.

为什么值引用自身是非法的?连参考都被推迟了?

其他编程语言可以支持无限流吗?

如果没有,它是关于处理器处理汇编语言的方式吗?数据堆栈的东西?

scheme functional-programming sicp racket

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

无法定义无限流

我正在研究UPENN Haskell Homework 6练习5,试图定义一个ruler function

0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,...

其中流中的第n个元素(假设第一个元素对应于n= 1)是power of 2均匀分割的最大元素n.

我想出了一个没有任何可分性测试的构建它的想法:

data Stream x = Cons x (Stream x) deriving (Eq)

streamRepeat x = Cons x (streamRepeat x)

interleaveStreams (Cons x xs) (Cons y ys) =
    Cons x (Cons y (interleaveStreams xs ys))

ruler =
    interleaveStreams (streamRepeat 0)
        (interleaveStreams (streamRepeat 1)
            (interleaveStreams (streamRepeat 2)
                (interleaveStreams (streamRepeat 3) (...))
Run Code Online (Sandbox Code Playgroud)

其中前20个元素

ruler =
    interleaveStreams (streamRepeat 0)
        (interleaveStreams (streamRepeat 1)
            (interleaveStreams (streamRepeat 2)
                (interleaveStreams …
Run Code Online (Sandbox Code Playgroud)

haskell stream lazy-evaluation

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

OS X:已安装 gcc 链接到 clang

我已经拥有gccg++安装:

$ which gcc
/usr/bin/gcc

$ which g++
/usr/bin/g++

$ brew install gcc
Warning: gcc-6.2.0 already installed
Run Code Online (Sandbox Code Playgroud)

我按照在 OS X Yosemite 上使用 gcc 编译器编译 OpenMP 程序gcc通过 HomeBrew 重新安装:

$ brew reinstall gcc --without-multilib
Run Code Online (Sandbox Code Playgroud)

然后

$ /usr/bin/g++ openmp.cpp
openmp.cpp:12:10: fatal error: 'omp.h' file not found
#include <omp.h>
         ^
1 error generated.
Run Code Online (Sandbox Code Playgroud)

-fopenmp

$ /usr/bin/g++ openmp.cpp -fopenmp
clang: error: unsupported option '-fopenmp'
clang: error: unsupported option '-fopenmp'
Run Code Online (Sandbox Code Playgroud)

这个重定向发生了什么?我该如何使用gcc/ g++


虽然涉及,但并不是关于 …

macos homebrew gcc g++

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

如何将 Phaser.Game 移动到浏览器的中心?

在此输入图像描述

我是 JS/phaser 的新手,只需创建一个Phaser.Gamewith

var game = new Phaser.Game(600, 490);
Run Code Online (Sandbox Code Playgroud)

游戏是在左上角创建的,但我想将其放置在浏览器的中央。

我检查了API,没有发现任何相关内容:

new Game(width, height, renderer, parent, state, transparent, antialias, physicsConfig)
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我该怎么做吗?

javascript phaser-framework

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

cuda-memcheck 在哪里?

我通过官方方式在 Debian 11 上安装了 CUDA :

$ wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda-repo-debian11-12-1-local_12.1.0-530.30.02-1_amd64.deb
$ sudo dpkg -i cuda-repo-debian11-12-1-local_12.1.0-530.30.02-1_amd64.deb
$ sudo cp /var/cuda-repo-debian11-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
$ sudo add-apt-repository contrib
$ sudo apt-get update
$ sudo apt-get -y install cuda
Run Code Online (Sandbox Code Playgroud)
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Feb__7_19:32:13_PST_2023
Cuda compilation tools, release 12.1, V12.1.66
Build cuda_12.1.r12.1/compiler.32415258_0

$ which nvcc
/usr/local/cuda/bin/nvcc
Run Code Online (Sandbox Code Playgroud)

现在我找不到了cuda-memcheck,不幸的是CUDA-MEMCHECK 用户手册丢失了:

$ cd /usr/local/cuda
$ find . -name cuda-memcheck
# found nothing …
Run Code Online (Sandbox Code Playgroud)

cuda nvcc

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

比较2圆弧指针

在 C++ 中,您可以比较 2 个指针,因为比较指针相当于比较 2 个地址:

#include <iostream>

using namespace std;

struct Dummy {};

int main() {
    auto a = Dummy{};
    auto b = Dummy{};
    const Dummy* ptr_a = &a;
    const Dummy* ptr_b = &b;

    if (ptr_a > ptr_b) {
        cout<<"ptr_a > ptr_b\n";
    } else {
        cout<<"ptr_a <= ptr_b\n";
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

同样,我想比较ArcRust 中的 2 个指针:

use std::sync::Arc;

struct Dummy {}

fn main() {
    let ptr_a = Arc::new(Dummy {});
    let ptr_b = Arc::new(Dummy {});
    
    if ptr_a …
Run Code Online (Sandbox Code Playgroud)

c++ rust

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