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
发信人: 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
w*x
3 楼
自己顶啊
g*n
4 楼
我觉得名字里不要写china,这样以后再有这类活动时更容易拉赞助,显得是世界性的
,呵呵
免得好多老美觉得:中国人不是很富有么。。不需要我们支持。。。
,呵呵
免得好多老美觉得:中国人不是很富有么。。不需要我们支持。。。
p*2
5 楼
multi thread还是distributed?
o*g
6 楼
agree. Think a good one and submit it to
http://osccf.org/survey
【在 g**n 的大作中提到】
: 我觉得名字里不要写china,这样以后再有这类活动时更容易拉赞助,显得是世界性的
: ,呵呵
: 免得好多老美觉得:中国人不是很富有么。。不需要我们支持。。。
http://osccf.org/survey
【在 g**n 的大作中提到】
: 我觉得名字里不要写china,这样以后再有这类活动时更容易拉赞助,显得是世界性的
: ,呵呵
: 免得好多老美觉得:中国人不是很富有么。。不需要我们支持。。。
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倍左右的速度比较理想了。
我在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倍左右的速度比较理想了。
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 的大作中提到】
:
: 麻烦大牛能不能解释一下,看不懂啊
多种可能取值,那就要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 的大作中提到】
:
: 麻烦大牛能不能解释一下,看不懂啊
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出的有些子函数很早
: 结束有些晚结束,所以用相同的逻辑并行效率不好。如果用个全局变量来估算当前的
g*e
20 楼
这是facebook的面试题?
印象中fb喜欢电面问类似的
印象中fb喜欢电面问类似的
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"
: 并行版本:
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"
: 并行版本:
相关阅读
deal bestbuy LG Risio + $25 BestBuy GC + $25 Refill Card $45急求coppertone 防晒霜的deal?CVS 和RA几个deals (5/29周)Kroger便宜橄榄油BP 油卡 有防盗功能馋粽子了OMEGA 手表 94% OFF 靠谱吗新移民老人申请信用卡freedompop的手机plan去年黑五买的MotoE突然不能识别Sim卡, wifi自动关了也不能用, 有人知道是什么问题?iphone解锁?officedepot bonus reward 100% back on (in)place binders要从varizon转到project fi吗?USPS寄出的包裹在一个地方停了好几天了,是丢了吗?以前买的还没用过的mcafee还能用吗最近有pampers尿布deal吗LA long beach Hyatt Regency 酒店一晚voucher请问下家里备用手机的电话卡买哪种便宜,还有就是一定要解锁的手机才能用吗?leapfrog的点读笔tru 16.79 sr fsipad mini 4 for $240