关于 block 间的同步,刚学cuda,各位请帮忙啊

各位,我刚开始学cuda,问的问题可能比较白痴,但还是请求各位给回复啊!

想要实现的目标:

比如现在有5个 block,分别叫1 2 3 4 5 吧;
global memory里有一个矩阵;
现在我要找出这个矩阵的第一列中最大的数所在的行,然后将这一行的数据与第一行交换;
数据交换完成之后,就要对这个数组进行其他操作了;
熟悉 LU分解的同志们应该知道,这是列选主元。

我想做的是:用block 1 去做寻找最大数和交换行的事情;然后用block 2 3 4 5对这个数组进行其他操作,2 3 4 5 都要读取矩阵的第一行;

现在的问题是:有可能 block 1 还没有完成行交换的事情,其他block就已经要读取第一行的数据了,这样就实现不了我的目标了!
有没有一种方法能先让block 1完成行交换的事情,再让其他 block 去操作这个数组啊?

或者是哪位知道其他更好的方法,能让我完成目标啊?

求各位大侠们帮帮忙啦,老师的任务比较紧迫:'(

分成两个kernel函数

嗯嗯,对的,我师兄也是叫我这么弄的,后来就可以了~