0xd34df00d 03.09.2012 16:31 Azoth_primary

Собрал программу с -fopenmp -D_GLIBCXX_PARALLEL в надежде, что оно мне всякие std::sort и std::lower_bound распараллелит. А хуй там был, время выполнения сурового числодробительного кода выросла в 30-50 раз.

Recommended by:

@pooq: моча съела говно

@cirno: ГАГАГА

and @magog, @DZhon
1. violetta 03.09.2012 16:38 Time machine

Мудак чтоли совсем?

2. 0xd34df00dvioletta /1 03.09.2012 16:38 Azoth_primary

Обоснуйте.

3. violetta0xd34df00d /2 03.09.2012 16:38 Time machine

Они и не будут параллелиться, потому что одних -fopenmp и -D_GLIBCXX_PARALLEL мало.

4. 0xd34df00dvioletta /3 03.09.2012 16:39 Azoth_primary

Тогда почему выросло время выполнения рабочего кода?
И да, что еще нужно, кроме этого?

5. cirnovioletta /3 03.09.2012 16:39 Lambdadelta

Увеличить количество тиков процессора в 50 раз, чтобы потом разложить на 4 ядра. Awesome.

7. 4da 03.09.2012 16:40 BitlBee

а хули ты хотел, запусти gprof и охуей сколько времени тратится на чеках границ и прочей хуйте.

8. 0xd34df00dvioletta /6 03.09.2012 16:41 Azoth_primary

Хм, ценно́.

9. 0xd34df00d4da /7 03.09.2012 16:41 Azoth_primary

Я хотел твою одежду и мотоцикл^WWWW производительность поднять. Находить N ближайших точек к данной из десятка миллионов за миллисекунду — перебор, можно быстрее, ИМХО.

10. violetta0xd34df00d /8 03.09.2012 16:43 Time machine

Кстати, можешь поиграть с omp_set_num_threads(), твой i7 с гипертредингом соснет.

11. 4da0xd34df00d /9 03.09.2012 16:44 BitlBee

N ближайших точек? отсортируй их по координате X и поимей NlogN

12. 0xd34df00dvioletta /10 03.09.2012 16:44 Azoth_primary

Почему соснет? 4 треда и нормик, шедулер все нормально раскидает.

13. 0xd34df00d4da /11 03.09.2012 16:44 Azoth_primary

Я уже так и делаю. Олсо, в 2D. Пока k-d trees юзать неохота.

14. violetta0xd34df00d /12 03.09.2012 16:45 Time machine

Но по-дефолту-то будет 8.

15. 4da0xd34df00d /13 03.09.2012 16:45 BitlBee

KD для малых размерностей — оверкилл имхо.

16. 0xd34df00dvioletta /14 03.09.2012 16:45 Azoth_primary

Это да.

17. 4da0xd34df00d /13 03.09.2012 16:46 BitlBee

а чо велосипедшь вообще, в CGAL разве нету функции нахождения N nearest points?

18. 0xd34df00dvioletta /14 03.09.2012 16:46 Azoth_primary

ИМХО тоже. Поэтому я сначала сортирую по иксам, нахожу в полоске, а потом уже в полоске хуячу либо брутфорсом, либо опять же сортирую по игрику и там уже выделяю.

19. 0xd34df00d4da /17 03.09.2012 16:46 Azoth_primary

Щто. Чо за CGAL?

20. 4da0xd34df00d /19 03.09.2012 16:48 BitlBee

http://www.cgal.org/

21. 0xd34df00d4da /20 03.09.2012 16:50 Azoth_primary

Оу. Похоже, лицензия не катит.

22. 4da0xd34df00d /21 03.09.2012 16:51 BitlBee

LGPL не катит?

23. 4da4da /22 03.09.2012 16:53 BitlBee

в-общем тебе вот это нужно. Только дерево поиска придется построить. http://www.cgal.org/Manual/latest/doc_ht... у тебя евклидова метрика?

24. 0xd34df00d4da /22 03.09.2012 16:58 Azoth_primary

Не уверен.

25. 0xd34df00d4da /23 03.09.2012 16:59 Azoth_primary

Пока евклидова. Потом. может, будем обмазываться всякой ебической хуйней.

По ссылке ничо не понял, пойду велосипедить свое дерево.

26. 4da0xd34df00d /25 03.09.2012 17:00 BitlBee

ну иди, лол. ждем охутельных историй и алгоритмов с O(1)

27. ulidtko 03.09.2012 17:46

пиздец, дедфуд до сих пор верит в магическую кнопку "сделай мне параллельно".

28. 0xd34df00dulidtko /27 03.09.2012 17:47 Azoth_primary

Кстати, в итоге заработало и стало быстрее в полтора раза на 8 тредах. И 8 тредов быстрее 4, даже с учетом HT.

29. violetta0xd34df00d /28 03.09.2012 17:49 Time machine

Размерность маленькая, наверное. Если бы программа месила пару минут, было бы наоборот.

30. 0xd34df00dvioletta /29 03.09.2012 17:50 Azoth_primary

Почему это? И там метров 100 данных.

Do you really want to delete ?