小编Lio*_*ior的帖子

Apache Spark:并行化和广播之间的区别

在Spark(python)中:

如果sc是Spark上下文(pyspark.SparkContext),有什么区别:

r = sc.parallelize([1,2,3,4,5])

r = sc.broadcast([1,2,3,4,5])

apache-spark pyspark

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

在线程中执行malloc

我在c中编写了一个使用POSIX pthreads的应用程序.在每个线程中都有一个功能malloc.所以我的问题是:

1)我保证每个线程分配一个不同的,非重叠的内存块吗?

2)是否可以从主线程(创建分配内存的其他线程)访问分配的内存?

我在Windows上使用gcc编译器,但我想知道Windows和Linux的答案.

谢谢

c multithreading posix pthreads

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

PyTorch:使用向后()时,如何仅保留图形的一部分?

我有一个 PyTorch 计算图,它由一个执行一些计算的子图组成,然后这个计算的结果(我们称之为x)被分支到另外两个子图。这两个子图中的每一个都会产生一些标量结果(让我们称它们为y1y2)。我想对这两个结果中的每一个都做一个反向传递(即我想累加两个子图的梯度。我不想执行实际的优化步骤)。

现在,由于内存是这里的一个问题,我想按以下顺序执行操作:首先,计算x。然后,计算y1,并执行y1.backward()while(这是关键点)保留通向 的图x,但将图从 释放xy1。然后,计算y2,并执行y2.backward()

换句话说,为了在不牺牲太多速度的情况下节省内存,我想保留x而不需要重新计算它,但是我想在我不再需要它们之后删除所有从x到 的计算y1

问题是retain_graph函数的参数backward()将保留通向 的整个图y1,而我只需要保留通向 的图的一部分x

这是我理想中想要的示例:

import torch

w = torch.tensor(1.0)
w.requires_grad_(True)

# sub-graph for calculating `x`
x = w+10

# sub-graph for calculating `y1`
x1 = x*x
y1 = x1*x1
y1.backward(retain_graph=x) # this would not work, …
Run Code Online (Sandbox Code Playgroud)

pytorch

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

标签 统计

apache-spark ×1

c ×1

multithreading ×1

posix ×1

pthreads ×1

pyspark ×1

pytorch ×1