小编Mat*_*hew的帖子

如何编译CUDA代码然后将其链接到C++项目?

我正在寻找帮助开始涉及CUDA的项目.我的目标是有一个项目,我可以在本机g ++编译器中编译,但使用CUDA代码.我知道我必须在nvcc编译器中编译我的CUDA代码,但根据我的理解,我可以以某种方式将CUDA代码编译成cubin文件或ptx文件.

这是我的问题:

  1. 如何使用nvcc编译成cubin文件或ptx文件?我不需要-c或其他东西吗?
  2. 我想使用哪种文件类型?
  3. 有哪些g ++命令可以正确地编译和链接项目?

假设如下:

  1. 我有一个名为"main.cpp"的文件,其中包含一个main函数,包含cuda.h.
  2. 我有另一个名为"cudaFunc.cu"的文件,里面有CUDA代码.比方说,我想添加两个存在于main.cpp中的整数数组.

cuda g++ nvcc

47
推荐指数
3
解决办法
6万
查看次数

g ++为什么你不必链接iostream二进制文件,但对于pthread你呢?

如果你有一个只使用'cout'对象的非常基本的C++程序,你可以在源文件中包含iostream,然后在编译它时你不必链接任何外部库.换句话说,你可以简单地运行

g++ main.cpp -c

g++ main.o -o program

./program

当您想要使用更复杂的对象(如线程)时,不仅包含pthread,而且在链接程序时必须链接到库.

g++ main.cpp -c

g++ main.o -lpthread -o program

./program

所以我的问题是,为什么我不必链接任何库来使用所有的iostream对象?

c++ multithreading dynamic-linking

12
推荐指数
2
解决办法
1729
查看次数

将一个循环分成两个循环的性能

美好的一天,

假设您有一个简单的for循环,如下所示......

for(int i=0;i<10;i++)
{
    //statement 1
    //statement 2
}
Run Code Online (Sandbox Code Playgroud)

假设语句1和语句2是O(1).除了"开始"另一个循环的小开销之外,将for循环分解成两个(不是嵌套的,但顺序的)循环同样快吗?例如...

for(int i=0;i<10;i++)
{
    //statement 1
}
for(int i=0;i<10;i++)
{
    //statement 2
}
Run Code Online (Sandbox Code Playgroud)

为什么我问这样一个愚蠢的问题是我有一个碰撞检测系统(CDS)必须遍历所有对象.我想"划分"我的CDS系统的功能,所以我可以简单地打电话

cds.update(objectlist);
Run Code Online (Sandbox Code Playgroud)

而不是必须破坏我的CD系统.(不要过分担心我的CDS实现......我想我知道我在做什么,我只是不知道如何解释它,我真正需要知道的是我是否因为循环而受到巨大的性能影响再次通过我的所有对象.

c++ big-o loops

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

Linux for C++中的低级磁盘操作

Linux中用于C++中的低级磁盘操作有哪些方法?我试图在磁盘上编写自己的数据管理器.例如,我想在Linux环境中创建一个C++程序,在磁盘上分配一定量(连续),然后自由地允许我读/写该数据块.我不认为我想使用该标准,fstream::open因为该文件由操作系统管理,我可能无法在磁盘上获得连续的部分.

谢谢.

c++ fstream input hard-drive output

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

自动 cout 冲洗

再会,

我编写了一个 Java 程序,它使用 Process 对象和 Runtime.exec() 函数调用启动多个 C++ 编写的程序。C++ 程序使用 cout 和 cin 作为它们的输入和输出。Java 程序从 C++ 程序的输入流和输出流中发送信息和读取信息。

然后我有一个字符串缓冲区,它通过将 C++ 程序的输入和输出附加到字符串缓冲区来构建程序的典型交互。问题是所有输入调用都被追加,然后所有输出调用都被发布。例如,StringBuffer 的实例可能是这样的......

2
3
Please enter two numbers to add. Your result is 5
Run Code Online (Sandbox Code Playgroud)

当程序在标准控制台上看起来像这样

Please enter two numbers to add. 2
3
Your result is 5
Run Code Online (Sandbox Code Playgroud)

问题是我得到了输入和输出的顺序,因为除非 C++ 程序调用 cout.flush() 函数,否则在给出输入之前不会写入输出。

有没有办法自动刷新缓冲区,这样 C++ 程序就不必担心调用 cout.flush()?类似于 C++ 程序是一个与命令控制台交互的独立程序,程序员并不总是需要 cout.flush(),命令控制台仍然在输入之前输出数据。

谢谢,

c++ cout process flush

6
推荐指数
2
解决办法
4102
查看次数

确认Java LinkedList"foreach"循环

美好的一天,

有人可以确认在这篇文章的底部说了什么java - 迭代一个链表 该帖子提到你可以使用for(char c:linkedlistofchars)语法,它仍然是O(n).我想要访问一个看起来像这样的列表......

a b c d e f
Run Code Online (Sandbox Code Playgroud)

实际上在for循环的每次迭代期间都会在链表的开始处运行,就像这样......

a ab abc abcde abcdef 
Run Code Online (Sandbox Code Playgroud)

导致访问时间不是O(n).

这究竟是如何工作的?它对数组和数组运算符有意义,但java语法如何知道如何使用java中的foreach循环遍历链表?

我认为LinkedList数据结构只是一个额外的库,而不是核心语言语法的一部分.(我确实知道LinkedList类在java中是标准的)

我希望我能够清楚地解释我的担忧....谢谢

java foreach containers for-loop

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

从函数readdir释放(删除)已分配的内存

我在Linux环境中使用C编程语言来读取目录中的文件.我已经包含#include<dirent.h>在我的代码中并使用了该函数readdir().

根据Linux在线页面,它说不会调用free()结果指针到dirent结构,因为它可能被分配在堆栈上.

你能帮我理解它是如何工作的吗?我不明白为什么我们不必删除struct dirent.什么时候删除谁删除它?

以下是我所说的摘录:

成功时,readdir()返回指向dirent结构的指针.(此结构可以静态分配;不要尝试free(3)它.)如果到达目录流的末尾,NULL则返回并且errno不会更改.如果发生错误,NULL则返回并errno适当设置.

c linux malloc free stack

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

Android 自定义视图大小

我试图在 android 中创建我自己的视图,它只是一个椭圆形,将根据典型的android:layout_widthandroid:layout_height参数正确绘制。

例如,如果在我的 XML 布局文件中,我有一个 LinearLayout,它是最高级别的视图容器,那么我希望能够添加多个我自己的椭圆形视图。(我称之为“PieFiller”)

我知道我很接近,但出于某种原因,我不知道如何确定 XML 文件中的用户是说“fill_parent”还是“wrap_content”,我不知道我是否应该询问该信息。让我们假设 wrap_content 将简单地绘制一个 40x40 像素的圆圈。但是,如果 XML 布局文件指定宽度应为“fill_parent”,高度应为“wrap_content”,我想要一个长 40 像素高的水平椭圆形和屏幕的像素数。

下面是我的布局 xml 文件和我的自定义视图中的代码:

布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:custom="http://schemas.android.com/apk/res/com.example.relativelayoutexample"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <com.example.relativelayoutexample.PieFiller
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        custom:labelPosition="left"
        custom:showText="true" />

    <com.example.relativelayoutexample.PieFiller
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        custom:labelPosition="left"
        custom:showText="true" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

名为“PieFiller”的自定义视图类

package com.example.relativelayoutexample;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;

public class PieFiller extends View
{
    private boolean mShowText;
    private int mTextPos;

    private Paint …
Run Code Online (Sandbox Code Playgroud)

xml layout android android-layout

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

如何从页眉和/或页脚确定PE可执行文件的大小

假设您想要刻录数据流或字节块,那么如何确定可执行文件的大小?

PE可执行格式中有许多标题,但我使用哪些标题部分来确定(如果可能)可执行文件的总长度?

这是文件格式的图片.

PE文件格式

windows portable-executable

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

SSLServerSocket 和证书设置

我使用ServerSocketSocket对象编写了一个客户端/服务器 Java 程序。然后我修改了要使用的代码SSLServerSocket和“SSLSocket”,但是我抛出了不同的异常,包括:

javax.net.ssl.SSLHandshakeException: no cipher suites in common

我希望尽可能多地以编程方式做。我也可以使用自签名证书。

我遵循的一个教程建议使用keytooljava 应用程序创建一个证书,然后将该文件移动到您的 java 项目中。我已经用终端命令做到了keytool -genkey -alias zastore -keyalg RSA -keystore za.store。我指定的密码是password.

然后我调用该函数System.setProperty希望 SSLSockets 工作,但它仍然没有。

这是我的服务器代码

public class Server implements Runnable
{
    private SSLServerSocket serverSocket;
    private int portNumber;
    private Thread acceptThread;

    private LinkedList<Connection> connections;

    private ConnectionListener connectionListener;

    public Server(int port, ConnectionListener connectionListener)
    {
        this.connectionListener = connectionListener;
        portNumber = port;
        connections = new LinkedList<Connection>();
        try 
        {
            System.setProperty("javax.net.ssl.trustStore", "za.store"); …
Run Code Online (Sandbox Code Playgroud)

java ssl serversocket

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