Redian新闻
>
OSCCF感谢信及机构改名的决定 (转载)
avatar
OSCCF感谢信及机构改名的决定 (转载)# PennySaver - 省钱一族
w*x
1
问一下并行解数独的算法应该怎么设计??
avatar
o*g
2
【 以下文字转载自 Donation 讨论区 】
发信人: osccf (OSCCF), 信区: Donation
标 题: OSCCF感谢信及机构改名的决定
发信站: BBS 未名空间站 (Sat Jan 23 00:18:22 2010, 美东)
海外中国儿童援助基金会(Overseas Save Chinese Children Foundation) 自2008年正
式注册以来, 得到了各界朋友的很多的支持和帮助。特别是自去年10月以来,在大家的
热情关注和鼎力支持下,OSCCF作为一个几乎不为人知的小机构,在 America's Giving
Challenge 的比赛中勇夺第三, 为我们救助的孩子们赢得了14万美元的善款; 继而又
在Chase Community Giving第一轮比赛中,在千军万马中挺进前100名, 为我们的孩子
们又争取到了2.5万奖金。
OSCCF 知道,过去的一个星期中,Chase Community Giving的第二轮比赛凝聚了众多朋
友们更多的心血和付出。面对诸多有着几万、几十万个Facebook注册支持者的参赛对手
,你们的支持给了OSC
avatar
w*x
3
自己顶啊
avatar
g*n
4
我觉得名字里不要写china,这样以后再有这类活动时更容易拉赞助,显得是世界性的
,呵呵
免得好多老美觉得:中国人不是很富有么。。不需要我们支持。。。
avatar
p*2
5
multi thread还是distributed?
avatar
o*g
6
agree. Think a good one and submit it to
http://osccf.org/survey

【在 g**n 的大作中提到】
: 我觉得名字里不要写china,这样以后再有这类活动时更容易拉赞助,显得是世界性的
: ,呵呵
: 免得好多老美觉得:中国人不是很富有么。。不需要我们支持。。。

avatar
w*x
7

多线程就可以了

【在 p*****2 的大作中提到】
: multi thread还是distributed?
avatar
l*a
8
真的有人被问到吗?
还是careercup上灌水的

【在 w****x 的大作中提到】
:
: 多线程就可以了

avatar
w*x
9

glassdoor上T家的一个面试题

【在 l*****a 的大作中提到】
: 真的有人被问到吗?
: 还是careercup上灌水的

avatar
l*a
10
9条线程。
第一轮每个处理一行
第二轮每个处理一列
第三轮每个处理一个3*3
有一个不是直接通知大家集体退出

【在 w****x 的大作中提到】
: 问一下并行解数独的算法应该怎么设计??
avatar
w*x
11

啥意思,能具体点吗

【在 l*****a 的大作中提到】
: 9条线程。
: 第一轮每个处理一行
: 第二轮每个处理一列
: 第三轮每个处理一个3*3
: 有一个不是直接通知大家集体退出

avatar
l*a
12
单线程的你怎么做?

【在 w****x 的大作中提到】
:
: 啥意思,能具体点吗

avatar
w*x
13

单线程的递归穷举啊, 有更好的解法?

【在 l*****a 的大作中提到】
: 单线程的你怎么做?
avatar
l*a
14
不好意思,看错题目了。
不是verification..
是solve...

【在 w****x 的大作中提到】
:
: 单线程的递归穷举啊, 有更好的解法?

avatar
t*a
15
这是很有趣的问题: 如何编写并行的recusion?
我在i5 macbook pro上做了个小试验: 并行的recusion based fib函数,用FP语言(
clojure)来实现:
单thread版本:
(defn fib [n]
(if (< n 2)
n
(apply + (map fib [(dec n) (- n 2)]))))
(time (fib 32)); "Elapsed time: 1851.765 msecs"
并行版本:
(defn pfib [n m]
(if (< n 2)
n
(if (> (- m n) 4)
(apply + (map fib [(dec n) (- n 2)]))
(apply + (pmap #(pfib % m) [(dec n) (- n 2)]))
)))
(time (pfib 32 32)); "Elapsed time: 1170.566 msecs"
用clojure写并行很容易,将map改为pmap就可以了。从速度上看,提高了接近1倍,刚
查了一下系统的i5是双核的,1倍左右的速度比较理想了。
avatar
p*2
16

看来LZ不能死抱一门语言了

【在 t****a 的大作中提到】
: 这是很有趣的问题: 如何编写并行的recusion?
: 我在i5 macbook pro上做了个小试验: 并行的recusion based fib函数,用FP语言(
: clojure)来实现:
: 单thread版本:
: (defn fib [n]
: (if (< n 2)
: n
: (apply + (map fib [(dec n) (- n 2)]))))
: (time (fib 32)); "Elapsed time: 1851.765 msecs"
: 并行版本:

avatar
w*x
17

麻烦大牛能不能解释一下,看不懂啊

【在 t****a 的大作中提到】
: 这是很有趣的问题: 如何编写并行的recusion?
: 我在i5 macbook pro上做了个小试验: 并行的recusion based fib函数,用FP语言(
: clojure)来实现:
: 单thread版本:
: (defn fib [n]
: (if (< n 2)
: n
: (apply + (map fib [(dec n) (- n 2)]))))
: (time (fib 32)); "Elapsed time: 1851.765 msecs"
: 并行版本:

avatar
t*a
18
sudoku solver如果用recusion的话,会在函数中多次call自己对吧?因为某个格子有
多种可能取值,那就要call多次, 也就是
solver(X) = solver(X1) or solver(X2) or ... or solver(Xn) 这里用X表示sudoku
的状况,solver函数返回T or F。
简单起见我就写了个fib,也是一样,fib(n) = fib(n-1) + fib(n-2),可以把这种计
算用map函数来实现,再将map换成pmap就并行啦。程序里有个if来控制生成的thread个
数,生成太多就糟了,刚才试过,不加控制生成太多thread会直接挂掉。
其实map-reduce的map灵感也就来自lisp的map。
回到sudoku,这个并行要难一些,因为它是个有回溯的过程,map出的有些子函数很早
结束有些晚结束,所以用相同的逻辑并行效率不好。如果用个全局变量来估算当前的
thread个数并据此判断用map还是pmap会好一些。
不得不说这样的实现实在很丑陋... 如果有人能把lazy evaluation的思路加进去,把
recusion的过程变成lazy sequence再用pmap那就漂亮多了。

【在 w****x 的大作中提到】
:
: 麻烦大牛能不能解释一下,看不懂啊

avatar
w*x
19

sudoku
I see, 这种recursion的parallel算法的确不一样,学习了!

【在 t****a 的大作中提到】
: sudoku solver如果用recusion的话,会在函数中多次call自己对吧?因为某个格子有
: 多种可能取值,那就要call多次, 也就是
: solver(X) = solver(X1) or solver(X2) or ... or solver(Xn) 这里用X表示sudoku
: 的状况,solver函数返回T or F。
: 简单起见我就写了个fib,也是一样,fib(n) = fib(n-1) + fib(n-2),可以把这种计
: 算用map函数来实现,再将map换成pmap就并行啦。程序里有个if来控制生成的thread个
: 数,生成太多就糟了,刚才试过,不加控制生成太多thread会直接挂掉。
: 其实map-reduce的map灵感也就来自lisp的map。
: 回到sudoku,这个并行要难一些,因为它是个有回溯的过程,map出的有些子函数很早
: 结束有些晚结束,所以用相同的逻辑并行效率不好。如果用个全局变量来估算当前的

avatar
g*e
20
这是facebook的面试题?
印象中fb喜欢电面问类似的
avatar
w*x
21

glassdoor 上 Twitter的

【在 g*********e 的大作中提到】
: 这是facebook的面试题?
: 印象中fb喜欢电面问类似的

avatar
t*a
22
顺便测试了一下python做fib的性能(single thread)
def fib(n):
if n < 2:
return(n)
else:
return(fib(n-1)+fib(n-2))
import timeit
print timeit.timeit("fib(36)", number=1, setup="from __main__ import fib")
速度大约是clojure single thread的10%

【在 t****a 的大作中提到】
: 这是很有趣的问题: 如何编写并行的recusion?
: 我在i5 macbook pro上做了个小试验: 并行的recusion based fib函数,用FP语言(
: clojure)来实现:
: 单thread版本:
: (defn fib [n]
: (if (< n 2)
: n
: (apply + (map fib [(dec n) (- n 2)]))))
: (time (fib 32)); "Elapsed time: 1851.765 msecs"
: 并行版本:

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。